	function checkCC()
	{
		if(document.frmOrder.paymenttype.checked==false)
		{
			alert("Please choose a payment method above.");
			return false;
		}
		else if(document.frmOrder.paymenttype.checked)
		{
			var ctrl = document.frmOrder.ccnum;
			var str = ctrl.value.substring(0,1);
			var time = new Date();
			var mn = time.getMonth()+1;
			var yr = time.getFullYear();
			if(str=="3" || str=="6")
			{
				alert("Unfortunately, we do not accept American Express or Discover at this time.  Please use a Visa or Mastercard.");
				ctrl.value="";
				ctrl.focus();
				return false;
			}
			else if(document.frmOrder.ccname.value=="")
			{
				alert("Please enter the name that appears on this credit card or check.");
				document.frmOrder.ccname.focus();
				return false;
			}
			else if(ctrl.value=="")
			{
				alert("You must enter a valid Credit Card Number.");
				ctrl.focus();
				return false;
			}		
			else if(document.frmOrder.exmonth.value=="" || (document.frmOrder.exmonth.value<1 || document.frmOrder.exmonth.value>12))
			{
				alert("Please enter a valid Expiration Month on this credit card.");
				document.frmOrder.exmonth.focus();
				return false;
			}
			else if(document.frmOrder.exmonth.value < mn && document.frmOrder.exyear[document.frmOrder.exyear.selectedIndex].value==yr)
			{
				alert("Please enter a valid Expiration Month and/or Year on this credit card.");
				document.frmOrder.exmonth.focus();
				return false;
			}
			else if(document.frmOrder.exyear.selectedIndex==0)
			{
				alert("Please enter a valid Expiration Year on this credit card.");
				document.frmOrder.exyear.focus();
				return false;
			}
			else if(!isValidCreditCard(ctrl.value))
			{
				alert("The credit card number you entered is invalid for Visa or MC, please verify this number.");
				ctrl.focus();
				return false;
			}
		}
		return true;
	}
			
	function isValidCreditCard(ccnum) 
	{
		var str = ccnum.substring(0,1);
		var re="";
		if(str=="4")// Visa: length 16, prefix 4, dashes optional.
		{
			re = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/;
		}
		else if(str=="5")// Mastercard: length 16, prefix 51-55, dashes optional.
		{
			re = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/;
		}
		else
		{
			return false;
		}
		if (!re.test(ccnum)) 
		{
		 return false;
		}
		
		// Checksum ("Mod 10")
		// Add even digits in even length strings or odd digits in odd length strings.
		var checksum = 0;
		for (var i=(2-(ccnum.length % 2)); i<=ccnum.length; i+=2) 
		{
			checksum += parseInt(ccnum.charAt(i-1));
		}
		// Analyze odd digits in even length strings or even digits in odd length strings.
		for (var i=(ccnum.length % 2) + 1; i<ccnum.length; i+=2) 
		{
			var digit = parseInt(ccnum.charAt(i-1)) * 2;
			if (digit < 10) 
			{ 
				checksum += digit; 
			} 
			else 
			{ 
				checksum += (digit-9); 
			}
		}
		if ((checksum % 10) == 0) 
		{
			return true; 
		}
		else 
		{
			return false;
		}
	}
