#!/usr/bin/perl

#use utf8;
use strict;
use CGI;

use Opals::Context;#use MARC::File::USMARC;
#use MARC::File::XML;

use Opals::Template qw(
    tmpl_read
    tmpl_write
    tmpl_rangedPageList
    tmpl_getSearchFieldList
);
use Opals::SolrIndex qw(
    slr_browseSubject_keyword
    slr_browseSubject_beginWith
);
use Opals::Search qw(
    srch_zTab
);

use Opals::Locale qw(
    loc_getMsgFile
    loc_write
);
my $dbh = Opals::Context->dbh();
END { $dbh->disconnect(); }

my $cgi = CGI->new;
my $input = $cgi->Vars();
my ($permission, $cookie, $template) = tmpl_read(
        {
            dbh             => $dbh,
            cgi             => $cgi,
            tmplFile        => 'search/subjectBrowse.tmpl',
        }
);
my  $lang = $cgi->cookie('language');
    if($lang !~ m/en|fr/i){
        $lang          = 'en';
    }

my $zid = $input->{'zid'};
($zid && $zid =~ m/^[\d]+$/ && $zid >= 0) || ($zid = 0);
my @cookieList = (@$cookie);

################################################################################
    my $pSize = 20;
    my $curPage = $input->{'pNum'};
    ($curPage && $curPage >= 1) || ($curPage = 1);
    my $offset      = ($curPage - 1) * $pSize ;
    my $srchTerm = $input->{'kw0'};
    my $fieldBrowse = $input->{'fBrowse'};
    if($srchTerm ne ''){
         my ($hits,$subjList);
        if($fieldBrowse eq "subjectContain" ){ 
             # ($resultSize, $result) = srch_searchSubjectContainWithSQLs($dbh, ,$srchTerm , $offset, $pSize);
            ($hits,$subjList)= slr_browseSubject_keyword($srchTerm,$offset,$pSize);   
        }
        elsif($fieldBrowse eq "subjectbeginWith"){ 
             # ($resultSize, $result) = srch_searchSubjectStartWithSQLs($dbh, ,$srchTerm , $offset, $pSize);
            ($hits,$subjList)= slr_browseSubject_beginWith($srchTerm,$offset,$pSize);   
        }
        
    
       if($hits >0){                    
            if ($hits - $offset + 1 <= 0) {
                my $availRange = $hits % $pSize;
                $availRange = $pSize if ($availRange == 0); 
                $offset = $hits - $availRange + 1;
                $curPage = ($offset - 1) / $pSize + 1;
            }
            my $result=[];
            my $i=0;
            foreach my $s(@$subjList){
                push @$result,{subject=>$s,id=>$i++};
            }

            my $pRange = 10;
            my @rangedPageList = tmpl_rangedPageList($hits, $curPage, $pSize, $pRange);
            my $headerStr=  "Subject";
               $headerStr = 'Sujet' if ($lang eq 'fr' );
            
            $template->param(
                pNum             => $curPage,
                srchTerm         => $srchTerm,
                rangedPageList   => \@rangedPageList,
                headerStr        => $headerStr,
                result           => $result,
                searchFound      => ($hits >0)? 1:0,
                resultSize       => $hits, 
                "Browse_$fieldBrowse" =>1,
            );
        }
    }
    my $t=Opals::Constant->getHlpUrl('browseSubject');
my @siteTab = srch_zTab($dbh, $zid);
$template->param(
    zid     => $zid,
    kw0     => $input->{'kw0'},
    pqf     => $srchTerm,
    siteTab => \@siteTab,
    hlpUrl     => Opals::Constant->getHlpUrl('browseSubject')
);


#Tue, Jan 05, 2010 @ 13:49:55 EST
#
my $stdMsgMap  =loc_getMsgFile('search/browseSubject.msg');
loc_write($template,$stdMsgMap);





tmpl_write($dbh, $cgi, \@cookieList, $template);
