/**
  *  Display the HTML code to display the query fields
  *
  *  @param prefs: array of parameters used for the current query
  *  @param advsrch,pv: HTTP get variables
  *
  *      @return string
  *
  */
 function displayQueryFields($prefs, $advsrch, $pv)
 {
     global $ath, $Language;
     $hp = Codendi_HTMLPurifier::instance();
     $html_select = '';
     //
     // Loop through the list of used fields to define label and fields/boxes
     // used as search criteria
     //
     $query_fields = $this->getQueryFields();
     //the width has been removed to correct the display of the Query Form (related to the fix of STTab theme)
     $html_select .= "<table>";
     $labels = '';
     $boxes = '';
     // Number of search criteria (boxes) displayed in one row
     $this->fields_per_line = 5;
     $ib = 0;
     $is = 0;
     $load_cal = false;
     while (list($key, $field) = each($query_fields)) {
         $field_html = new ArtifactFieldHtml($field);
         //echo $field->getName()."-".$field->display_type."-".$field->data_type."-".$field->dump()."<br>";
         // beginning of a new row
         if ($ib % $this->fields_per_line == 0) {
             $align = "left";
             $labels .= "\n" . '<TR align="' . $align . '" valign="top">';
             $boxes .= "\n" . '<TR align="' . $align . '" valign="top">';
         }
         // Need to build help button argument.
         // Concatenate 3 args in one string
         $group_id = $ath->Group->getID();
         $help_args = $group_id . '|' . $this->group_artifact_id . '|' . $field->getName();
         $labels .= '<td class="small"><b>' . $hp->purify(SimpleSanitizer::unsanitize($field->getLabel()), CODENDI_PURIFIER_CONVERT_HTML) . '&nbsp;' . help_button('browse_tracker_query_field', $help_args) . '</b></td>';
         $boxes .= '<TD><FONT SIZE="-1">';
         if ($field->isSelectBox()) {
             // Check for advanced search if you have the field in the $prefs (HTTP parameters)
             if ($advsrch) {
                 if (isset($prefs[$field->getName()]) && $prefs[$field->getName()]) {
                     if (is_array($prefs[$field->getName()])) {
                         $values = $prefs[$field->getName()];
                     } else {
                         $values[] = $prefs[$field->getName()];
                     }
                 } else {
                     $values[] = 0;
                 }
             } else {
                 if (isset($prefs[$field->getName()][0])) {
                     $values = $prefs[$field->getName()][0];
                 } else {
                     $values = "";
                 }
             }
             $boxes .= $field_html->display($this->group_artifact_id, $values, false, false, $pv != 0 ? true : false, false, true, $Language->getText('global', 'none'), true, $Language->getText('global', 'any'));
         } else {
             if ($field->isMultiSelectBox()) {
                 $boxes .= $field_html->display($this->group_artifact_id, $prefs[$field->getName()], false, false, $pv != 0 ? true : false, false, true, $Language->getText('global', 'none'), true, $Language->getText('global', 'any'));
             } else {
                 if ($field->isDateField()) {
                     $load_cal = true;
                     // We need to load the Javascript Calendar
                     if ($advsrch) {
                         $date_begin = isset($prefs[$field->getName()][0]) ? $prefs[$field->getName()][0] : '';
                         $date_end = isset($prefs[$field->getName() . '_end'][0]) ? $prefs[$field->getName() . '_end'][0] : '';
                         $boxes .= $field_html->multipleFieldDate($date_begin, $date_end, 0, 0, $pv);
                     } else {
                         $val_op = isset($prefs[$field->getName() . '_op'][0]) ? $prefs[$field->getName() . '_op'][0] : '';
                         $val = isset($prefs[$field->getName()][0]) ? $prefs[$field->getName()][0] : '';
                         $boxes .= $field_html->fieldDateOperator($val_op, $pv) . $field_html->fieldDate($val, $pv);
                     }
                 } else {
                     if ($field->isTextField() || $field->isTextArea()) {
                         $val = isset($prefs[$field->getName()][0]) ? $prefs[$field->getName()][0] : "";
                         $boxes .= $pv != 0 ? $val : $field_html->fieldText(stripslashes($val), 15, 80);
                     }
                 }
             }
         }
         $boxes .= "</TD>\n";
         $ib++;
         // end of this row
         if ($ib % $this->fields_per_line == 0) {
             $html_select .= $labels . '</TR>' . $boxes . '</TR>';
             $labels = $boxes = '';
         }
     }
     // Make sure the last few cells are in the table
     if ($labels) {
         $html_select .= $labels . '</TR>' . $boxes . '</TR>';
     }
     $html_select .= "</table>";
     return $html_select;
 }