function isValidCreditCard(type, ccnum) {
   if (type.length != 0 && ccnum.length != 0) {		  
	   if (type == "VISA") {
	      // Visa: length 16, prefix 4, dashes optional.
	      var re = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/;
	   } else if (type == "MASTER") {
	      // Mastercard: length 16, prefix 51-55, dashes optional.
	      var re = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/;
	   } else if (type == "DISCOVER") {
	      // Discover: length 16, prefix 6011, dashes optional.
	      var re = /^6011-?\d{4}-?\d{4}-?\d{4}$/;
	   } else if (type == "AMEX") {
	      // American Express: length 15, prefix 34 or 37.
	      var re = /^3[4,7]\d{13}$/;
	   }
	   if (!re.test(ccnum)) { 
	   	 alert ('Invalid Credit Card Number.\nPlease check the Payment Method and the Credit Card Number.');
		 return false;
		}
	   // Remove all dashes for the checksum checks to eliminate negative numbers
	   ccnum = ccnum.split("-").join("");
	   // 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 { 
		    alert ('Invalid Credit Card Number.\nPlease check the Payment Method and the Credit Card Number.');
			return false;
		}
    }
}		
