
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 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;
	
	countryText = "";

	currForm = fieldObject.form;
	countryObj = currForm.country;
	if (countryObj) {
		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 isZipOnly(fieldObject) {

	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 (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;
	
	countryText = "";

	currForm = fieldObject.form;
	countryObj = currForm.country;
	if (countryObj) {
		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;
	//var countryText;

	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 isNumericBool(fieldObject) {
	var retValue = false;
	var fldValue;

	fldValue = fieldObject.value.replace(/ /g, "");
	fldValue = fldValue.replace(/\$/g, "");
	fldValue = fldValue.replace(/,/g, "");

	if (fldValue != "" && isNaN(parseFloat(fldValue))) {
		// do noththing
			
	} else if (fldValue != "") {
		fieldObject.value = Math.round(fldValue * 100) / 100;
		retValue = true;
	}
	
	return retValue;
	
}

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 isMMYYNumber(fieldObject) {
	var strlen;
	var fldTest;

	retValue = true;

	fldValue = fieldObject.value.replace(/ /g, "");
	fldTest = isNaN(fldValue);
	
	if (fldValue != "" && fldTest == true) {
		retValue = false;
	}

	return retValue;

}

function walkObject(obj, objName) {
	for (var i in obj) {
		//alert(objName + "." + i + " = [" + obj[i] + "]");
	}
}

function getDocObject(objName) {
	var currObj;
	
	if (document.getElementById) {
		eval("currObj = document.getElementById('" + objName + "')");
	
	} else if (!currObj && document.all) {
		eval("currObj = document.all." + objName);

	} else {
		eval("currObj = document.layers." + objName);
	
	}

	return currObj;
}

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);

	//  https://
	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;

}

function isCCNumberTemporary(cardNumField, cardTypeField) {
	var strlen;
	var ccNumValue;
	var ccTypeValue;

	retValue = true;

	ccTypeValue = cardTypeField.value.replace(/ /g, "");
	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);

	//  https://
	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;

}

function checkCCNumber(fieldObject) {
	var strlen;
	var ccNumValue;
	var ccTypeObj;
	var ccTypeValue;

	retValue = true;
	ccTypeObj = getDocObject("cardtype");
	ccNumValue = fieldObject.value.replace(/ /g, "");
	
	if (ccNumValue != "" && ccTypeObj) {
		ccTypeValue = ccTypeObj.options[ccTypeObj.selectedIndex].text;
		ccNumValue = fieldObject.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;
		}
	} else {
		retValue = false;
	}

	if (!retValue) {
		alert("Please enter a valid card number.");
		fieldObject.value = "";
		fieldObject.select();
		fieldObject.focus();
	}
	
	
}

function isDate(fieldObject) {
	var fldValue;

	fldValue = fieldObject.value.replace(/ /g, "");
	fldValue = fldValue.replace(/\//g, "");
	fldValue = fldValue.replace(/\-/g, "");
	nl = fldValue.length;

	fldTest = isNaN(fldValue);
	if (fldValue == "") {
		fieldObject.value = "";

	} else if (fldValue != "" && (nl != 8 || fldTest == true)) {
		alert("Please enter in mm/dd/yyyy format.");
		fieldObject.value = "";
		fieldObject.select();
		fieldObject.focus();

	} else if (fldValue != "") {
		fieldObject.value = fldValue.substring(0,2) + "/" + fldValue.substring(2,4) + "/" + fldValue.substring(4);

	}

}

function isDateBool(fieldObject) {
	var retValue = false;
	var fldValue;

	fldValue = fieldObject.value.replace(/ /g, "");
	fldValue = fldValue.replace(/\//g, "");
	fldValue = fldValue.replace(/\-/g, "");
	nl = fldValue.length;

	fldTest = isNaN(fldValue);
	if (fldValue == "") {
		// do nothing
	} else if (fldValue != "" && (nl != 8 || fldTest == true)) {
		// do nothing
	} else if (fldValue != "") {
		retValue = true;
		fieldObject.value = fldValue.substring(0,2) + "/" + fldValue.substring(2,4) + "/" + fldValue.substring(4);
	}
	
	return retValue;
}
