function ValidateCC(form, SecCodeRequired) {
	if (!ValidateSelect(form.trx_CCTypeID, 'Please select a Credit Card Type.','Y')) { return false; }
	if (!ValidateCCNum(form.trx_CCNum, form.trx_CCTypeID)) {return false; }
	if (!ValidateText(form.trx_NameOnPayment, 'Please enter the Name as it appears on the Credit Card.','Y')) { return false; }
	if (!ValidateSelect(form.trx_CCExpMonth, 'Please enter a valid Credit Card ExpMonth for this Order.','Y')) { return false; }
	if (!ValidateSelect(form.trx_CCExpYear, 'Please enter a valid Credit Card ExpYear for this Order.','Y')) { return false; }
	if (!ValidateCCExpDate(form.trx_CCExpMonth, form.trx_CCExpYear)) { return false; } 
	if (SecCodeRequired == "Y" || SecCodeRequired == '' || SecCodeRequired == null) {
		if (!ValidateText(form.trx_CCSecurityCode, 'Please enter the security code as it appears on the Credit Card.','Y')) { return false; }
	}
	return true;
}

var OnceDone = false;
function ValidateCCNum(CCNum,CCTypeField) {
	if (OnceDone == true) { OnceDone = false; return true; }
	if (!CCTypeField) { return true; }
 	if (CCTypeField.type == 'hidden') {return true;}
	if (!CCNum) { return true; }
	var CCType = CCTypeField.options[CCTypeField.selectedIndex].text ;
	var CCNumStr = CCNum.value;
	var CCNumber = ''
	for (i=0; i<CCNumStr.length; i++) {
		if (CCNumStr.charAt(i) != '-' && CCNumStr.charAt(i) != ' ') { 
			CCNumber = CCNumber + CCNumStr.charAt(i);
		}
	} 
	if (CCType.toUpperCase() == 'VISA') { 
		if (CCNumber.length != 16) {
			alert('Please make sure your Visa card number is 16 digits');
			CCTypeField.focus();
			return false;
		} else {
			if (!CheckCCNum(CCNum, CCNumber.substring(0,4), 'Please verify that Visa information was entered correctly.', 'Y', 4000, 4999)) { OnceDone = true; return false; }
		} 
	}
	if (CCType.toUpperCase() == 'MASTER CARD') { 
		if (CCNumber.length != 16) {
			alert('Please make sure your Master card number is 16 digits');
			CCTypeField.focus();
			return false;
		} else {
			if (!CheckCCNum(CCNum, CCNumber.substring(0,4), 'Please verify that your Master Card information was entered correctly.', 'Y', 5100, 5599)) { OnceDone = true; return false; }
		} 
	}
		
	if (CCType.toUpperCase() == 'DISCOVER') { 
		if (CCNumber.length != 16) {
			alert('Please make sure your Discover card number is 16 digits');
			CCTypeField.focus();
			return false;
		} else {
			if (!CheckCCNum(CCNum, CCNumber.substring(0,4),'Please verify that your Discover card information was entered correctly.', 'Y', 6011, 6011)) { OnceDone = true; return false; }
		} 
	}

	if (CCType.toUpperCase() == 'AMEX') { 
		if (CCNumber.length != 15) { 
			alert('Please make sure your American Express card number is 15 digits');
			CCTypeField.focus();
			return false;
		} else {
			if (!CheckCCNum(CCNum, CCNumber.substring(0,4), 'Please verify that your American Express information was entered correctly.', 'Y', 3700, 3799)) { OnceDone = true; return false; }		
		} 
	}

	if (CCType.toUpperCase() == 'DINERS CLUB') { 
		if (CCNumber.length != 14) {
			alert('Please make sure your Diners Club card number is 14 digits');
			CCTypeField.focus();
			return false;
		} else {
			//if (!CheckCCNum(CCNum, CCNumber.substring(0,4), "Please verify that your Diners Club card information was entered correctly.\nERROR...", 'Y', 5100, 5599)) { return false }
		} 
	}

	CCNum.value = CCNumber;
	return true;
}


function CheckCCNum(formfield,Num, msg, required, MinValue, MaxValue) {
	if (isNaN(Num)) {
		msg = msg + "\n\n(This must be a valid number.)"
		alert(msg);
		formfield.focus();
		return false;
	}
	if (MinValue != MaxValue) {
		if ((MinValue) && (Num < MinValue)) {
			msg = msg + "\n\nThe first four digits must be greater than " + MinValue + "."
			alert(msg);
			formfield.focus();
			return false;
		}

		if ((MaxValue) && (Num > MaxValue)) {
			msg = msg + "\n\nThis first four digits must be less than " + MaxValue + "."
			alert(msg);
			formfield.focus();
			return false;
		}
	} else {
		if (Num != MinValue) {
			msg = "\nPlease enter a valid Discover Card number."
			alert(msg);
			formfield.focus();
			return false;
		}
	}
	return true;
}

function ValidateCCExpDate(CCMonth,CCYear) {
	if (!CCMonth) { return true ; }
	if (!CCYear) { return true ; }
	dtCCExpires = new Date(CCYear.value, CCMonth.value, '1');
	dtToday = new Date();
	dtFirstofMonth = new Date(dtToday.getYear(), dtToday.getMonth() + 1, '1');
	if (dtFirstofMonth > dtCCExpires) {
		alert('This credit card has expired. Please check that you entered this information correctly and try again.');
		CCMonth.focus();
		return false;
	}
	return true;
}


function FormatCCNum(FormField,CCTypeField) {
	if (!FormField) { return true; }
	if (!CCTypeField) { return true; }
	var CCType = CCTypeField.options[CCTypeField.selectedIndex].text ;
	if (CCType.toUpperCase() != 'AMEX') { 
		var x = FormField.value;
		if (FormField.value.length == 4) {
			FormField.value = x + '-';
			return true;
		}
		if (FormField.value.length == 9) {
			FormField.value =  FormField.value + '-';
			return true;
		}
		if (FormField.value.length == 14) {
			FormField.value =  FormField.value + '-';
			return true;
		}
	} else { 
		var x = FormField.value;
		if (FormField.value.length == 4) {
			FormField.value = x + '-';
			return true;
		}
		if (FormField.value.length == 11) {
			FormField.value =  FormField.value + '-';
			return true;
		}
	} 
	return true;	
} 


// prevents a form from being submitted more than once.
// (Requires existence of a CCSubmitted hidden field.)
function ChkCCSubmitted(form) {
	if (form.CCSubmitted && form.CCSubmitted.value == 'false') {
		// if payment is not by Credit Card, no confirmation needed.
		if (form.trx_PaymentMethodID && form.trx_PaymentMethodID.value != '3') { 
			form.CCSubmitted.value = 'true';
			return true; 
		}
		if (form.trx_Amount && form.trx_Amount.value == 0) {
			if (confirm('This will process this transaction.')) {
				form.CCSubmitted.value = 'true';
				return true;
			} else {
				return false;
			}
		} else {
			if (confirm('This will charge your credit card and process this transaction.')) {
				form.CCSubmitted.value = 'true';
				return true;
			} else {
				return false;
			}
		}
	} else {
		alert('You may not submit this form again.\n\nPlease allow the processing to complete.');
		return false;
	}
	return true;
}

