<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Untitled</title>
<style type="text/css">
#cardDetails td { vertical-align:top; }
#cardDetails td p { margin:0; font-size:9pt; }
</style>
<script language="JavaScript" type="text/javascript">
var $ = Object.prototype.$ = function(id) { return (document.getElementById) ? document.getElementById(id): document.all[id]; };
function validate(form) {
var resultCodes = [];//Will be populated with -ve numbers for errors, +ve for validated
var allNumeric = /^[0-9]+$/;
//Name validation
if($('fname').value === '') { resultCodes.push(-1); }//check 1: error
else { resultCodes.push(1); }//check 1: pass
//Card number validation
var el_1 = $('card_number_field1');
var el_2 = $('card_number_field2');
var el_3 = $('card_number_field3');
var el_4 = $('card_number_field4');
if(!el_1 || !el_1.value || !allNumeric.test(el_1.value) || el_1.value.length < 4 ||
!el_2 || !el_2.value || !allNumeric.test(el_2.value) || el_2.value.length < 4 ||
!el_3 || !el_3.value || !allNumeric.test(el_3.value) || el_3.value.length < 4 ||
!el_4 || !el_4.value || !allNumeric.test(el_4.value) || el_4.value.length < 4 ) { resultCodes.push(-2); }//check 2: error
else { resultCodes.push(2); }//check 2: pass
//Date validation
var today = new Date();
var expMonth = $('card_exp_month');
var expYear = $('card_exp_year');
expMonth = (!expMonth || !expMonth.value || !allNumeric.test(expMonth.value)) ? -1 : parseInt(expMonth.value-1);//Convert to index-origin:zero
expYear = (!expYear || !expYear.value || !allNumeric.test(expYear.value)) ? 0 : parseInt(expYear.value);
if( expMonth === -1 || expYear === 0 || expYear < today.getYear() ||
(expYear === today.getYear() && expMonth < today.getMonth()) ) { resultCodes.push(-3); }//check 3: error
else { resultCodes.push(3); }//check 3: pass
//Error indication
var rtnVal = true;
for(var i=0; i<resultCodes.length; i++){
var el = $('msg'+Math.abs(resultCodes[i]));
if(el){
el.style.color = (resultCodes[i] < 0) ? '#FF0000' : '#000000';
rtnVal = rtnVal && (resultCodes[i] > 0);
}
}
return rtnVal;
}
</script>
</head>
<body>
<div class="style3" id="payment_box">
<form name="payment" action="" method="post" onsubmit="return validate(this);">
<table id="cardDetails" align="center"><tr>
<td>Card Holder's Name :</td>
<td><input name="fname" type="text" id="fname" msg="msg1" />
<p id="msg1" class="msg">Enter the account holder's name that appears on your card.</p></td>
</tr><tr>
<td>Card Number :</td>
<td><INPUT name="card_number_field1" type="text" id="card_number_field1" size="4" maxlength="4" msg="msg2" />
<INPUT name="card_number_field2" type="text" id="card_number_field2" size="4" maxlength="4" msg="msg2" />
<INPUT name="card_number_field3" type="text" id="card_number_field3" size="4" maxlength="4" msg="msg2" />
<INPUT name="card_number_field4" type="text" id="card_number_field4" size="4" maxlength="4" msg="msg2" />
<p id="msg2" class="msg">Enter your card's 16-digit account number.</p>
</td>
</tr><tr>
<td>Card Expiry Date (mm yyyy) :</td>
<td><INPUT name="card_exp_month" type="text" id="card_exp_month" size="2" maxlength="2" msg="msg3" /> /
<INPUT name="card_exp_year" type="text" id="card_exp_year" size="4" maxlength="4" msg="msg3" />
<p id="msg3" class="msg">Date must be in the format "01 2000" and must not be earlier than the current month.</p>
</td>
</tr><tr>
<td></td>
<td><input name="submit" type="submit" value="Submit" /></td>
</tr></table>
</form>
</div>
</body>
</html>