$fm = array('RLTB' => 'Right to left, top to bottom', 'RLBT' => 'Right to left, bottom to top', 'LRTB' => 'Left to right, top to bottom', 'LRBT' => 'Left to right, bottom to top', 'TBLR' => 'Top to bottom, left to right', 'TBRL' => 'Top to bottom, right to left', 'BTLR' => 'Bottom to top, left to right', 'BTRL' => 'Bottom to top, right to left', 'InC' => 'Inwards, clockwise', 'InCC' => 'Inwards, counter-clockwise', 'OutC' => 'Outwards, clockwise', 'OutCC' => 'Outwards, counter-clockwise');
$def['number'] = 5;
$def['cols'] = 5;
$form = new HTML_QuickForm('formMatrixExample');
if ($_POST) {
    $form->setDefaults($_POST);
} else {
    $form->setDefaults($def);
}
$form->addElement('header', '', "HTML_Table_Matrix Example");
$form->addElement('select', 'number', "Number of items", $nSel);
$form->addElement('select', 'cols', "Columns", $sel);
$form->addElement('select', 'rows', "Rows", $sel);
$form->addElement('select', 'startcol', "X Offset", $sel);
$form->addElement('select', 'startrow', "Y Offset", $sel);
$form->addElement('select', 'fillmode', "Fill", $fm);
$form->addElement('submit', "Submit");
$form->display();
if ($_POST) {
    echo "<br><hr>";
    $nw = new Numbers_Words();
    for ($i = 1; $i <= $_POST['number']; $i++) {
        $data[] = $nw->toWords($i);
    }
    $m->setData($data);
    $m->setTableSize($_POST['rows'], $_POST['cols']);
    $m->setFillStart($_POST['startrow'], $_POST['startcol']);
    $f = HTML_Table_Matrix_Filler::factory($_POST['fillmode'], $m);
    $m->accept($f);
    print $m->toHtml();
}