function CommonFooter()
{
    foreach (array('iconv', 'zlib', 'exif', 'mysql', 'dba') as $ext) {
        $support[] = (extension_loaded($ext) ? '+' : '-') . $ext;
    }
    echo xml_gen::br();
    echo xml_gen::p('getID3() ' . getid3::VERSION . '.<br>PHP ' . phpversion() . ' (' . implode(xml_gen::space(2), $support) . ').');
    echo xml_gen::p(xml_gen::a('http://getid3.sourceforge.net/', 'http://getid3.sourceforge.net'));
    echo '</body></html>';
}
 /**
  * Generate XML for tooltips
  *
  * @param    array     info           from get_extended_file_info()
  */
 function generate_tooltip_xml($info)
 {
     static $order = array(array('genre'), array('title', 'artist', 'album', 'part', 'opus', 'tracknumber', 'track', 'discnumber', 'label'), array('date', 'year', 'released', 'version', 'sourcemedia'), array('location', 'language'), array('composer', 'lyricist', 'author', 'conductor', 'ensemble', 'arranger', 'performer'), array('comment'), array('backup'), array('*'));
     $g = new xml_gen();
     // no proper extended info found?
     if (empty($info->format_name)) {
         return;
     }
     // generate xml for format infomation
     $xml = $g->b($info->format_name) . ($info->encoder_version ? '; ' . $info->encoder_version : '') . $g->br();
     // ... technical information about track
     $xml .= number_format($info->sample_rate / 1000) . 'k/' . $info->bits_per_sample . '/' . $info->channels . '; ';
     $xml .= number_format($info->avg_bit_rate / 1000) . ' kbps' . ($info->bitrate_mode ? '(' . $info->bitrate_mode . ')' : '') . '; ';
     $xml .= morg_gui::number_format_significant_ciphers($info->filesize / 1024 / 1024, 2) . ' Mb; ';
     $xml .= $this->display_seconds_human_readable($info->playtime);
     // metadata
     if (!empty($info->comments)) {
         // remove hidden fields
         foreach ($this->hidden_fields() as $field) {
             if (isset($info->comments[$field])) {
                 unset($info->comments[$field]);
             }
         }
         // sort 'date'
         if (isset($info->comments['date'])) {
             sort($info->comments['date']);
         }
         // begin comments table
         $xml .= "<table cellpadding='0' cellspacing='0' border='0' class='meta'>";
         // loop thru tooltips groups
         foreach ($order as $fields) {
             // reset addline flag
             $add_line = false;
             // loop thru fields in group
             foreach ($fields as $field) {
                 // does field exists in comments?
                 if ($field != "*" && !empty($info->comments[$field])) {
                     // extract values
                     $key = $field;
                     $values = $info->comments[$field];
                     // if multiple values, make pluralis of $key
                     if (sizeof($values) >= 2 && ereg("s\$", $key)) {
                         $key = "{$key}es";
                     } elseif (sizeof($values) >= 2) {
                         $key = "{$key}s";
                     }
                     // unpack values
                     $values = implode($g->br(), $values);
                     // add row
                     $xml .= "<tr><td valign='top'>{$key}</td><td>{$values}</td></tr>";
                     // remove field from comment
                     unset($info->comments[$field]);
                     // set addline flag
                     $add_line = true;
                 } elseif ($field == '*') {
                     // loop thru remaining comments
                     foreach ($info->comments as $key => $values) {
                         // if multiple values, make pluralis of $key
                         if (sizeof($values) >= 2 && ereg("s\$", $key)) {
                             $key = "{$key}es";
                         } elseif (sizeof($values) >= 2) {
                             $key = "{$key}s";
                         }
                         // unpack values
                         $values = implode("<br>", $values);
                         // add row
                         $xml .= "<tr><td valign='top'>{$key}</td><td>{$values}</td></tr>";
                     }
                     // no line after last group
                     $add_line = false;
                 }
             }
             // add empty row
             if ($add_line && $info->comments) {
                 $xml .= "<tr><td colspan='2' style='font: 6px serif;'>&nbsp;</td></tr>";
             }
         }
         // finalise comments table
         $xml .= "</table>";
     }
     // create tooltip
     return $this->tool_tips->create($xml, 200);
 }