if (is_file($full_name)) {
                $files[$full_name] = $file;
            } elseif ($file[0] != '.') {
                $dirs[$full_name] = $file;
            }
        }
        closedir($dh);
    }
}
// Create table
$g = new xml_gen();
$t = new Table(10, "class='table'", ';odd_files;even_files', 'left;left;right;right;left;left;left;left;left;right');
// Output parent dir
if ($dir != $root_path) {
    $t->data(xml_gen::a($_SERVER['SCRIPT_NAME'] . '?directory=' . urlencode(realpath($dir . '/..')), '[parent directory]'), 'colspan=10');
    $t->end_row();
}
// Output directories
if (@$dirs) {
    asort($dirs);
    foreach ($dirs as $full_name => $short_name) {
        $t->data(xml_gen::a($_SERVER['SCRIPT_NAME'] . '?directory=' . urlencode($full_name), $short_name), 'colspan=10');
        $t->end_row();
    }
}
// Output file rows
if (@$files) {
    asort($files);
    $counter = $i = 0;
    foreach ($files as $full_name => $short_name) {
        // Table header