#!/usr/bin/perl -w

use Pg;
use CGI qw(:html3 :standard);
use strict;
use vars qw($haslo $conn $query $result $prevnrfrm $prevknrfrm 
	    $state $line $linea $lineb);

$haslo=param('querytext');

print header(-TYPE => 'text/html; charset=iso-8859-2'),
    start_html('Korpus sownika frekwencyjnego');
    
unless ($haslo) {
    print p("Potrzebny argument: sowo do konkordancji"), end_html;
    exit;
}

print  h1("Konkordancja dla hasa '<tt>$haslo</tt>'."), "<TABLE>";

$conn = Pg::connectdb("dbname = frek");

die "Could not connect to the database"
    unless $conn->status == PGRES_CONNECTION_OK;

$query = "select w.nrfrm, f.forma, wd.nrfrm
from wystapienia wd, interpretacje, leksemy, wystapienia w, formy f
where wd.wfid=ifid and ilid=lid and haslo='$haslo'
  and (w.nrfrm between wd.nrfrm-6 and wd.nrfrm+5) and
      w.wfid=f.fid
group by w.wid, w.nrfrm, f.forma, wd.wfid, wd.nrfrm
order by wd.wfid, wd.nrfrm, w.wid;
";

#print STDERR "Przetwarzanie zapytania...";
$result = $conn->exec($query);

die $conn->errorMessage unless $result->resultStatus == PGRES_TUPLES_OK;
#print STDERR " gotowe.\n";

$prevnrfrm=0; $prevknrfrm=0; $state=0; $linea=''; $lineb=''; $line='';
while (my ($nrfrm,$forma,$knrfrm) = $result->fetchrow) {
    if ($prevnrfrm == $knrfrm && $nrfrm > $knrfrm) {
	$lineb = $line; $line = '';
    }
    if ($knrfrm != $prevknrfrm) { 
	print  Tr( td({-ALIGN=>'RIGHT'}, $linea), td(b($lineb)), td($line) ), "\n";
	$linea=''; $lineb=''; $line='';
    }
    $line .= ' ' unless $nrfrm == $prevnrfrm;
    if ($prevnrfrm < $knrfrm && $nrfrm == $knrfrm) {
	$linea = $line; $line='';
    }
    $line .= "$forma" ;
    $prevnrfrm=$nrfrm; $prevknrfrm=$knrfrm;
}

print  Tr( td({-ALIGN=>'RIGHT'}, $linea), td(b($lineb)), td($line) );

print "</TABLE>\n", end_html();
