If you felt like buying a subscription that would of course be nice.
Hm. Well, I tried.
function validatePaymentForm() { // quickie references to my fields var CCCardholder = document.getElementById('CCCardholder'); var CCNo = document.getElementById('CCNo'); var CCType = document.getElementById('CCType'); var CCExpDateMth = document.getElementById('CCExpDateMth'); var CCExpDateYr = document.getElementById('CCExpDateYr'); var CCV = document.getElementById('CCV'); var process = document.getElementById('process'); var backbutton = document.getElementById('backbutton'); // check the inputs (main function nav) if (selectField(CCType, "mand", "Please enter your card type.")) { if (alphaField(CCCardholder, "mand", "card holder name.")) { if (CCField(CCNo, "mand", CCType)) { if (selectField(CCExpDateMth, "mand", "Please enter your credit card expiry month.")) { if(selectField(CCExpDateYr, "mand", "Please enter your credit card expiry year.")) { backbutton.src = "../gfx/buttons/process_a.gif"; process.src = "../gfx/buttons/process_b.gif"; return true; } } } } } return false; } // function for checking alpha-only text fields function alphaField(element, which, fieldDesc) { var alphaExp = /^[-a-zA-Z '.",]+$/; if ((which == 'mand') && (element.value.length < 2)) { var shortStub = 'Please enter your '; alert(shortStub + fieldDesc); element.focus(); // set the focus to this input return false; } else if ((element.value.length > 1) && (!element.value.match(alphaExp))) { var wrongStub = 'Please enter only letters or appropriate punctuation for your '; alert(wrongStub + fieldDesc); element.focus(); return false; }else { return true; } } // function for checking numeric text fields function NumField(element, which, fieldDesc) { var NumExp = /^[0-9]+$/; if ((which == 'mand') && (element.value.length < 3)) { var shortStub = 'Please enter your '; alert(shortStub + fieldDesc); element.focus(); // set the focus to this input return false; } else if ((element.value.length > 1) && (!element.value.match(alphaNumExp))) { var wrongStub = 'Please enter only numbers for your '; alert(wrongStub + fieldDesc); element.focus(); return false; }else { return true; } } // function for checking dropdown fields function selectField(element, which, message){ if ((which == 'mand') && (element.value == '')) { alert(message); element.focus(); return false; } else { return true; } } // function for checking credit card field function CCField(element, which, CCType) { var NumExp = /^[0-9]+$/; if (CCType.value == 'M') { var CCTypeFull = 'MasterCard'; var prefix_str = element.value.substr(0,2); var prefix_int = Number(prefix_str); if ((element.value.length != 16) || (prefix_int < 51) || (prefix_int > 55) || (!element.value.match(NumExp))) { var error = 'There is a problem with your ' +CCTypeFull+ ' number format. Please check your ' +CCTypeFull+ ' number.'; alert(error); element.focus(); // set the focus to this input return false; } else if (!modNumber(element.value)) { // if the mod 10 test is false var error = 'Your ' +CCTypeFull+ ' number is in the right format but does not pass the valid number test. Please check your ' +CCTypeFull+ ' number.'; alert(error); // var modResult = modNumber(element.value); // go to function to do mod 10 test of our card number element.focus(); // set the focus to this input return false; } else { return true; } } else if (CCType.value == 'V') { var CCTypeFull = 'Visa'; var prefix_str = element.value.substr(0,1); var prefix_int = Number(prefix_str); if (((element.value.length != 13) && (element.value.length != 16)) || (prefix_int != 4) || (!element.value.match(NumExp))) { var error = 'There is a problem with your ' +CCTypeFull+ ' card number format. Please check your ' +CCTypeFull+ ' card number.'; alert(error); element.focus(); // set the focus to this input return false; } else if (!modNumber(element.value)) { // if the mod 10 test is false var error = 'Your ' +CCTypeFull+ ' card number is in the right format but does not pass the valid number test. Please check your ' +CCTypeFull+ ' card number.'; alert(error); // var modResult = modNumber(element.value); // go to function to do mod 10 test of our card number element.focus(); // set the focus to this input return false; } else { return true; } } else if (CCType.value == 'X') { var CCTypeFull = 'American Express'; var prefix_str = element.value.substr(0,2); var prefix_int = Number(prefix_str); if ((element.value.length != 15) || (!element.value.match(NumExp)) || ((prefix_int !== 34) && (prefix_int !== 37))) { var error = 'There is a problem with your ' +CCTypeFull+ ' card number format. Please check your ' +CCTypeFull+ ' card number.'; alert(error); element.focus(); // set the focus to this input return false; } else if (!modNumber(element.value)) { // if the mod 10 test is false var error = 'Your ' +CCTypeFull+ ' card number is in the right format but does not pass the valid number test. Please check your ' +CCTypeFull+ ' card number.'; alert(error); // var modResult = modNumber(element.value); // go to function to do mod 10 test of our card number element.focus(); // set the focus to this input return false; } else { return true; } } else if (CCType.value == 'I') { var prefix_str = element.value.substr(0,2); var prefix_int = Number(prefix_str); if ((element.value.length != 14) || ((prefix_int != 30) && (prefix_int != 36) && (prefix_int != 38)) || (!element.value.match(NumExp))) { var error = 'There is a problem with your ' +CCType.value+ ' card number format. Please check your ' +CCType.value+ ' card number.'; alert(error); element.focus(); // set the focus to this input return false; } else if (!modNumber(element.value)) { // if the mod 10 test is false var error = 'Your ' +CCType.value+ ' card number is in the right format but does not pass the valid number test. Please check your ' +CCType.value+ ' card number.'; alert(error); // var modResult = modNumber(element.value); // go to function to do mod 10 test of our card number element.focus(); // set the focus to this input return false; } else { return true; } } else { alert('Invalid Credit Card Type'); CCType.focus(); // set the focus to the credit card type return false; } } function modNumber(CCNo) { var revStr = strRev(CCNo); // our string is reversed by our strrev function //alert('reversed number is ' +revStr); var numSum = 0; for(i = 0; i 9) { // if a doubled number is more than 10, then we add the digits. eg. 14 = 5, 16 = 7. var firstNum = currentNum % 10; var secondNum = (currentNum - firstNum) / 10; currentNum = firstNum + secondNum; } numSum = numSum + currentNum; // add to our running total for the doubled and non doubled numbers //alert ('the new sum is ' +numSum); } var modResult = (numSum % 10 == 0); // our result should b divisible by 10 so true if the remainder = 0 return modResult; // return true if the credit card number is valid, false if not. } function strRev(CCNo) { var revStr=''; for (i = CCNo.length-1; i>=0; i--) { revStr+=CCNo.charAt(i) } return revStr; }
Your Payment
An error has occurred with your payment. (1)
I can't help thinking that perhaps I wasn't supposed to see that.