var ccErrorNo=0;var ccErrors=new Array();ccErrors[0]="Unknown card type.";ccErrors[1]="Please enter a valid credit card number.";ccErrors[2]="Credit card number is in invalid format.";ccErrors[3]="Credit card number or type is invalid.";ccErrors[4]="Credit card number has wrong number of digits.";ccErrors[5]="Credit card number has expired.";ccErrors[6]="Please enter a CVV number.";ccErrors[7]="Please enter valid CVV number.";ccErrors[8]="The CVV number for your Credit Card type needs to be 3 digits.";ccErrors[9]="The CVV number for your Credit Card type needs to be 4 digits.";var cards=new Array();cards[0]={name:"Visa",length:"13,16",prefixes:"4",checkdigit:true};cards[1]={name:"MasterCard",length:"16",prefixes:"51,52,53,54,55",checkdigit:true};cards[2]={name:"American Express",length:"15",prefixes:"34,37",checkdigit:true};cards[3]={name:"Discover",length:"16",prefixes:"6011",checkdigit:true};function testCreditCard(e,d,c,a,b){if(!checkCreditCard(e,d,c,a,b)){return ccErrors[ccErrorNo]+"\n"}else{return""}}function checkCreditCard(e,b,f,c,d){var a=getCardType(b);if(a==-1){ccErrorNo=0;return false}if(!validateCardNumber(e,a)){return false}if(!isExpiryDate(c,f)){ccErrorNo=5;return false}if(!validateCVV(d,a)){return false}return true}function getCardType(b){var a=-1;for(var c=0;c<cards.length;c++){if(b.toLowerCase()==cards[c].name.toLowerCase()){a=c;break}}return a}function validateCardNumber(l,a){if(!isNum(a)){a=getCardType(a)}if(l.length==0){ccErrorNo=1;return false}var o=l;var m=/^([0-9]{4})\s?([0-9]{4})\s?([0-9]{4})\s?([0-9]{1,4})$/;if(!m.exec(o)){ccErrorNo=2;return false}m.exec(o);o=RegExp.$1+RegExp.$2+RegExp.$3+RegExp.$4;if(cards[a].checkdigit){var k=0;var p="";var f=1;var g;for(i=o.length-1;i>=0;i--){g=Number(o.charAt(i))*f;if(g>9){k=k+1;g=g-10}k=k+g;if(f==1){f=2}else{f=1}}if(k%10!=0){ccErrorNo=3;return false}}var e=false;var n=false;var b;var h=new Array();var c=new Array();h=cards[a].prefixes.split(",");for(i=0;i<h.length;i++){var d=new RegExp("^"+h[i]);if(d.test(o)){n=true}}if(!n){ccErrorNo=3;return false}c=cards[a].length.split(",");for(f=0;f<c.length;f++){if(o.length==c[f]){e=true}}if(!e){ccErrorNo=4;return false}return true}function validateCVV(b,a){if(!isNum(a)){a=getCardType(a)}if(b.length==0){ccErrorNo=6;return false}else{if(!isNum(b+"")){ccErrorNo=7;return false}if(cards[a].name=="American Express"&&b.length!=4){ccErrorNo=9;return false}else{if(cards[a].name!="American Express"&&b.length!=3){ccErrorNo=8;return false}}}return true}function isExpiryDate(a,b){if(!isNum(a+"")){return false}if(!isNum(b+"")){return false}today=new Date();expiry=new Date("20"+a,b);if(today.getTime()>expiry.getTime()){return false}else{return true}}function isNum(a){a=a.toString();if(a.length==0){return false}for(var b=0;b<a.length;b++){if(a.substring(b,b+1)<"0"||a.substring(b,b+1)>"9"){return false}}return true};
