#!/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_searchFieldAdvance
);
use Opals::Search qw(
    srch_parseSearchTerm
    srch_searchRecordSQL
    srch_searchSubjectStartWithSQLs
    srch_searchSubjectContainWithSQLs
    srch_zTab
);
use Opals::Circulation qw(
    circ_infoRecord
);
use Opals::MarcXml qw(
    mxml_delete
);

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/browseSubject.tmpl',
        }
);
my  $lang = $cgi->cookie('language');
    if($lang !~ m/en|fr/i){
        $lang          = 'en';
    }

################################################################################
# Delete Record
if ($permission && $permission->{'marc_edit'} && $ENV{'REQUEST_METHOD'} =~ m/^post$/i && $input->{'op'} eq 'delRec') {
    $template->param(
        remainList  =>  mxml_delete($dbh, $input->{'rid'}),
    );
}
#/Delete Record
################################################################################

my $self = $ENV{'SCRIPT_NAME'};
my @cookieList = (@$cookie);

# Cookie::showpqf
my $showpqf = $input->{'showpqf'};
($showpqf) || ($showpqf = $cgi->cookie('showpqf')) || ($showpqf = 0);
push @cookieList, $cgi->cookie(-name => 'showpqf', -value => $showpqf,);
$template->param('showpqf' => $showpqf,);

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

my ($query, $pqf, $sTerm);

if ($self eq $template->param('url_itemstatus')) {
    $template->param(msgItemStatus => 1);
}
# advance search, item status is a link to standard search
my ($sfOrder, $kw, $boolop);
   
# Cookie::sortAttr
my $sortAttr = $input->{'sortAttr'};
$sortAttr=undef if ($zid != 0);
$template->param(sortAttr => $sortAttr,);

# Cookie::sortOrder
my $sortOrder = $input->{'sortOrder'};
$template->param(sortOrder => $sortOrder,);

my  $awsId =Opals::Context->preference('amazonId');
my  $syndeticsId =Opals::Context->preference('syndeticsId');


my $sql=" from opl_recordindex r ";
my $sqlCond="";

if($syndeticsId && $syndeticsId ne''){$awsId ="";}
my $iCount = 0;


  my $srchTerm    = $input->{'kw0'};
  my $fieldBrowse = $input->{'fBrowse'};
  if ($srchTerm ne "") {
    my $pSize = 20;
    my $curPage = $input->{'pNum'};
    ($curPage && $curPage >= 1) || ($curPage = 1);
    my $offset = ($curPage - 1) * $pSize + $ENV{'Z_INDEX_BASE'};
    my ($resultSize, $result);
    my $headerStr= "Subject";
       $headerStr = 'Sujet' if ($lang eq 'fr' );

    if($fieldBrowse eq "subjectContain" ){ 
          ($resultSize, $result) = srch_searchSubjectContainWithSQLs($dbh, ,$srchTerm , $offset, $pSize);
    }
    elsif($fieldBrowse eq "subjectbeginWith"){ 
          ($resultSize, $result) = srch_searchSubjectStartWithSQLs($dbh, ,$srchTerm , $offset, $pSize);
    }
    if($resultSize >0 &&
        ($fieldBrowse eq "subjectContain" || $fieldBrowse eq "subjectbeginWith")){
        foreach my $rec(@$result){
            my @sbjList= split / -- /, $rec->{'strVal'};
            foreach my $sbj(@sbjList){
              push  @{$rec->{'subjectList'}},{subject=>$sbj};
            }
        }

    }
    if ($resultSize - $offset + 1 <= 0) {
        my $availRange = $resultSize % $pSize;
        $availRange = $pSize if ($availRange == 0); 
        $offset = $resultSize - $availRange + 1;
        $curPage = ($offset - 1) / $pSize + 1;
    }

    my $pRange = 10;
    my @rangedPageList = tmpl_rangedPageList($resultSize, $curPage, $pSize, $pRange);


    $template->param(
        browseSubject    => 1,
        rangedPageList   => \@rangedPageList,
        headerStr        => $headerStr,
        result           => $result,
    );
 }

my @siteTab = srch_zTab($dbh, $zid);
$template->param(
    zid     => $zid,
    kw0     => $input->{'kw0'},
    "Browse_$fieldBrowse" =>1,
    pqf     => $srchTerm,
    siteTab => \@siteTab,
);




#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);
