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


// Template fuer Kopfzeile
$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 fuer Textfelder (Karteninhalber und -nummer)
$elTemplate  = '<tr><td aligh="right" valigh="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>';


// Formularinstanz erzeugen
$myForm     = new HTML_QuickForm('KreditkartenFormular', 'POST');
// neuer Text fuer Pflichtfelder
$myForm->setRequiredNote('<font color="blue"><b>#</b></font> sind Pflichtfelder');


// Kopfzeile hinzufuegen und neues Template dafuer setzen
$myForm->addElement('header', '', 'Kreditkartendaten');
$myForm->setHeaderTemplate($headerTemplate);

// Textfelder hinzufuegen und neues Template jeweils dafuer setzen
$myForm->addElement('text', 'textKarteninhaber',   'Karteninhaber:');
$myForm->addElement('text', 'textKartennummer', 'Kartenummer:');
$myForm->setElementTemplate($elTemplate, 'textKarteninhaber');
$myForm->setElementTemplate($elTemplate, 'textKartennummer');


// Array fuer Kreditkartentypen
$kartentypen = array( 'visa' => 'VISA', 'master' => 'EuroCard', 'amex'   => 'American Express',);
// Dropdownmenue fuer Kreditkartentypen
$myForm->addElement('select', 'selectKartentypen', 'Kartentyp:', $kartentypen);


// Arrays fuer Monate und Jahre
$monate = array ( '01'   => 'Januar',  '02' => 'Februar', '03'   => 'Maerz', 
                  '04'   => 'April',   '05' => 'Mai',     '06'   => 'Juni', 
                  '07'   => 'Juli',    '08' => 'August',  '09'   => 'September', 
                  '10'   => 'Oktober', '11' => 'November','12'   => 'Dezember'
                );
$jahre = array ( '2003' => '2003', '2004' => '2004', '2005' => '2005' );

// Gruppelemente fuer Monate und Jahre erstellen
$gueltigBis[] = &HTML_QuickForm::createElement('select', 'selectGueltigMonat', NULL, $monate);
$gueltigBis[] = &HTML_QuickForm::createElement('select', 'selectGueltigJahr',  NULL, $jahre);

// angelegte Elemente fuer Monate und Jahre Gruppieren
$myForm->addGroup($gueltigBis, 'gueltigBisGruppe', 'G&uuml;ltig bis:');

// Submitbutton hinzufuegen
$myForm->addElement('submit', 'submitButton','Daten senden');

// Kreditkartennummer haben 16 Stellen
$kartennummer =& $myForm->getElement('textKartennummer');
$kartennummer->setMaxLength(16);

// Validierungsregeln: Die Zweitextfelder muessen gesetzt sein
// Kreditkartennummer darf nur Nummern enthalten und muss 16stellig sein
$myForm->addRule('textKarteninhaber', 'Bitte Karteninhaber angeben', 'required');
$myForm->addRule('textKartennummer',  'Bitte Kartennummer angeben',  'required');
$myForm->addRule('textKartennummer',  'Keine g&uuml;ltige Kartennummer',  'numeric');
$myForm->addRule('textKartennummer',  'Zu wenige Stellen bei Kartennummer',  'minlength', 16);

// Falls Validierung erfolgreich ist, Formular einfrieren
if ( $myForm->validate() )
{
   $myForm->removeElement('submitButton');
   $myForm->freeze();
}

// Formular anzeigen
$myForm->display();

?>