<%shared>
my $conf = FS::Conf->new;
</%shared>
<%init>
my %opt = @_;
$opt{'name'} ||= PL($opt{'name_singular'});

my $group_info = $m->comp('core', %opt);

my $redirect;

if ( $group_info->{num} == 0 ) {
  $redirect = $opt{'redirect_empty'};
  $redirect = &$redirect($cgi) if $redirect && ref($redirect) eq 'CODE';
  if ($redirect) {
    redirect( $redirect );
  } else { # just print this stuff and exit
    $m->comp('/elements/header.html', $opt{'title'});
    $m->print('<BR><BR>No matching ' . $opt{'name'} . ' found.<BR>');
    $m->comp('/elements/footer.html');
    $m->abort;
  }
}

# this mode has a concept of "current group"
my $curr_group = 0;
if ($cgi->param('group') =~ /^(\d+)$/) {
  $curr_group = $1;
}

my $group = $group_info->{groups}[$curr_group];
my $query = $group_info->{queries}[$curr_group];
my $footer = $group_info->{group_footers}[$curr_group];
my $total_footer =  $group_info->{total_footer} || [];
# pagination
my ($limit, $offset);
my $maxrecords = $conf->config('maxsearchrecordsperpage') || 100;
if ( $cgi->param('maxrecords') =~ /^(\d+)$/ ) {
  $maxrecords = $1;
}
if ( $maxrecords ) {
  $limit = "LIMIT $maxrecords";
  if ( $cgi->param('offset') =~ /^(\d+)$/ ) {
    $offset = $1;
    $limit .= " OFFSET $offset";
  }
}
$query->{order_by} .= $limit if $limit;

#warn Dumper($query); #DEBUG

# run the query
my @rows = $query->qsearch;

#warn Dumper(\@rows); #DEBUG

my $pager = '';
# show pager if needed
if ( $group->num_rows > scalar(@rows) ) {
  $pager = include( '/elements/pager.html',
    'offset'      => $offset,
    'num_rows'    => scalar(@rows),
    'total'       => $group->num_rows,
    'maxrecords'  => $maxrecords,
  );
}

# set up tab bar
my @menubar;
if ($group_info->{num} > 1) {
  for (my $i = 0; $i < $group_info->{num}; $i++) {
    push @menubar, $group_info->{group_labels}[$i], ";group=$i";
  }
}

# not enabled yet; if we need this at some point, enable it on a per-report
# basis and then disable it for search/cust_pay.html, because it's redundant
# to see "Check   Check #130108", "Credit card   Card #401...", etc.

## if this is the combined view, add a column for the group key
#if ( $curr_group == 0 and $opt{'show_combined'} ) {
#  unshift @{$opt{'header'}}, '';
#  unshift @{$opt{'fields'}}, $opt{group_label};
#  unshift @{$opt{'sort_fields'}}, $opt{group_column} if $opt{'sort_fields'};
#  $opt{'align'} = 'c'.$opt{'align'};
#  foreach (qw(header2 links link_onclicks color size style cell_style xls_format)) {
#    if ( $opt{$_} ) {
#      unshift @{$opt{$_}}, '';
#    }
#  }
#}

</%init>

<& /elements/header.html, $opt{title} &>

%# tab bar
% $cgi->delete('group');
% $cgi->delete('offset');
% $cgi->delete('type');
<& /elements/menubar.html,
  { newstyle => 1,
    url_base => $cgi->self_url,
    selected => $group_info->{group_labels}[$curr_group] },
  @menubar
&>

<DIV CLASS="fstabcontainer">
% if ( $group->num_rows > 0 ) {
<P><% emt('[quant,_1,_2]', $group->num_rows, $opt{name_singular}) %>
</P>
%# download links
<P><% emt('Download results:') %>
% $cgi->param('type', 'xls');
<A HREF="<% $cgi->self_url %>"><% emt('Spreadsheet') %></A>&nbsp;|&nbsp;
% $cgi->param('type', 'html-print');
<A HREF="<% $cgi->self_url %>"><% emt('webpage') %></A>
% $cgi->delete('type');
</P>
% }

<% $pager %>

<STYLE>
  table.grid {
    border-spacing: 0;
  }
</STYLE>
<table class="grid">
  <thead>
  <& /search/elements/search-html.html:header_row,
    'header'      => $opt{'header'},
    'header2'     => $opt{'header2'},
    'sort_fields' => ($opt{'sort_fields'} || $opt{'fields'}),
  &>
  </thead>
  <tbody>
  <& /search/elements/search-html.html:data_rows,
    'rows' => \@rows,
    'opt'  => \%opt,
  &>
  </tbody>
  <tfoot>
  <& /search/elements/search-html.html:footer_row, row => $footer, opt => \%opt &>
%   if ( scalar @$total_footer ) {
  <& /search/elements/search-html.html:footer_row, row => $total_footer, opt => \%opt &>
%   }
  </tfoot>
</table>

<% $pager %>
</DIV>

<& /elements/footer.html &>

