<?php
require_once 'HTML/QuickForm.php';

// Template for header
$headerTemplate  = '<tr><td style="white-space: nowrap; background-color: blue;" align="center" ';
$headerTemplate .= 'valign="top" colspan="2"><font size="5" color="yellow">{header}</font></td></tr>';

// Template for text fields (card holder and number)
$elTemplate  = '<tr><td align="right" valign="top">';
$elTemplate .= '<!-- BEGIN required --><font color="blue"><b>#</b></font><!-- END required --><b>{label}</b></td>';
$elTemplate .= '<td valign="top" align="left"><!-- BEGIN error --><span style="color: #ff0000">';
$elTemplate .= '{error}</span><br /><!-- END error -->{element}</td></tr>';

// Instantiate form
$myForm     = new HTML_QuickForm('CreditcardForm', 'POST');
// new text for mandatory fields
$myForm->setRequiredNote('<font color="blue"><b>#</b></font> are mandatory');

// Add header and set new template
$myForm->addElement('header', '', 'Creditcarddata');
$myForm->setHeaderTemplate($headerTemplate);

// Add text fields and set new template for each
$myForm->addElement('text', 'textCardholder',   'Cardholder:');
$myForm->addElement('text', 'textCardnumber', 'Cardnumber:');
$myForm->setElementTemplate($elTemplate, 'textCardholder');
$myForm->setElementTemplate($elTemplate, 'textCardnumber');

// Array for credit card types
$cardtypes = array( 'visa' => 'VISA', 'master' => 'EuroCard', 'amex'   => 'American Express',);
// Drop-down menu for credit card types
$myForm->addElement('select', 'selectCardtypes', 'cardtype:', $cardtypes);

// Arrays for months and years
$months = array (
'01'   => 'January',  '02' => 'February', '03'   => 'March',
'04'   => 'April',   '05' => 'May',     '06'   => 'June',
'07'   => 'July',    '08' => 'August',  '09'   => 'September',
'10'   => 'October', '11' => 'November','12'   => 'December'
           );
$years = array ( '2003' => '2003', '2004' => '2004', '2005' => '2005' );

// Create group elements for months and years
$validTo[] = &HTML_QuickForm::createElement('select', 'selectValidMonth', NULL, $months);
$validTo[] = &HTML_QuickForm::createElement('select', 'selectValidYear',  NULL, $years);

// group elements create for months and years
$myForm->addGroup($validTo, 'validToGroup', 'Valid to:');

// Add Submit button
$myForm->addElement('submit', 'submitButton','Submit Data');

// Credit card number have 16 digits
$cardnumber =& $myForm->getElement('textCardnumber');
$cardnumber->setMaxLength(16);

// Validation rules: The two text fields must be occupied
// Credit card number must be numeric and comprise 16 digits
$myForm->addRule('textCardholder', 'Please enter cardholder', 'required');
$myForm->addRule('textCardnumber',  'Please supply card number', 'required');
$myForm->addRule('textCardnumber',  'Invalid card number',  'numeric');
$myForm->addRule('textCardnumber', 'Card number too short', 'minlength', 16);

// Freeze form if validation succeeds
if ( $myForm->validate() )
{
$myForm->removeElement('submitButton');
$myForm->freeze();
}

// Display form
$myForm->display();

?>
