#!/usr/bin/perl

#use utf8;
use strict;
use CGI;

use POSIX qw(
    ceil
    floor
);
use Opals::Context;#use MARC::File::USMARC;
use Opals::Template qw(
    tmpl_read
    tmpl_write
    tmpl_preference
);

use XML::SAX;
use base qw( XML::SAX::Base );
use Opals::MarcXmlParser; 
use Opals::SolrIndex qw(
    slr_search
    slr_buildSearchQuery
    
);
use Opals::Locale qw(
    loc_getMsgFile
    loc_write
);

use Opals::RecordInfoHTML qw(
    rinfo_getBibRecordHTML
    rinfo_getSimilarItemsHTML
    rinfo_getRecCircInfoHTML
    rinfo_getPageNavForm_search
    rinfo_getRatingInfoHTML
);
use Opals::Circulation qw(
    circ_infoRecord
);

use Opals::Search qw(
    srch_buildNewItemSQLs
    srch_searchRecordSQL
    srch_recordBrief
);
use Opals::BookCover qw(
    bookCover_getUrl
);
use Opals::Constant;

    my $dbh = Opals::Context->dbh();
    my $cgi     = CGI->new;
    my $input = $cgi->Vars();
    END { $dbh->disconnect(); }

my ($permission, $cookie, $template) = tmpl_read(
        {
            dbh             => $dbh,
            cgi             => $cgi,
            tmplFile        => 'pf/recDetailPage.tmpl',
        }
);
my $msgValMap={} ;
my $self = $ENV{'SCRIPT_NAME'};
my @cookieList = (@$cookie);

my $pref = tmpl_preference($dbh);
my $circInfoOption={};
$circInfoOption->{'enableItemStatus'}=1 if($permission && $permission->{'circ_loan'});
$circInfoOption->{'showLocation'}=$pref->{'showLocation'};
    # ---------------------- SEARCH --------------------
    my  $offset=0  ;
    my  $rid            = $input->{'rid'};
    $input->{'kw0'} = $rid;
    $input->{'sf0'} = 12;
    my $sortAttr ;
    my $sortOrder  ;
  $template->param(
        reserveActive => ($permission->{'circ_rsrv'}) ? 1 : 0,
        reserveActive => ($permission->{'circ_rsrv_self'}) ? 1 : 0,
    );

        my $rs={};

    my $rec=undef;
    my $hits =0 ;
        my $lQuery      = slr_buildSearchQuery($input);
           $rs          = slr_search({lQuery=>$lQuery,recFormat=>'detail',
                            sortAttr=>$sortAttr,sortDir=>$sortOrder, 
                            offset=>$offset,size=>1,
                            incCircStatus=>1});
        $rec=$rs->{'recordList'}[0];
        $hits = $rs->{'hits'};

    $rid =$rec->{'rid'};
    $rec->{'uriList'} =mapURI($rec->{'uriList'})if($rec->{'uriList'} && ref($rec->{'uriList'} ) eq 'ARRAY');

       my  $titleFm = $rec->{'title'};
    $titleFm=~ s/[\:]+$//g;
    $titleFm=~ s/[\/]+$//g;
    $rec->{'titleFm'} = $titleFm;
    if($rec->{'subtitle'} && $rec->{'subtitle'} ne ''){
        my $subtitleFm = $rec->{'subtitle'};
        $subtitleFm=~ s/[\/]+$//g;
        $rec->{'subtitleFm'} = $subtitleFm;
    }
     my $recInfoHtml      = rinfo_getBibRecordHTML($dbh,$rec);
        my $similarItemsHtml = rinfo_getSimilarItemsHTML($rec);
        my $recCircInfoHtml  = rinfo_getRecCircInfoHTML($dbh,$rec,$circInfoOption);
        my $ratingInfo       = rinfo_getRatingInfoHTML($dbh,$rec->{'rid'});
        my $pageNavForm      = rinfo_getPageNavForm_search($cgi); #Added: Mon, Sep 26, 2011 @ 16:56:34 EDT
        my ($numTotal, $numLoan, $numReserve, $numHold, $items,$totalCirc,$bid)= circ_infoRecord($dbh,$rid);
        $template->param(recInfoHtml        => $recInfoHtml,
                         similarItemsHtml   => $similarItemsHtml,
                         recCircInfoHtml    => $recCircInfoHtml,
                         pageNavForm        => $pageNavForm,
                         ratingInfo         => $ratingInfo,
                         title=>$rec->{'titleFm'}, 
                         totalHolding=>$numTotal
                         );
    
    $template->param(
        idvalid     => ($rs) ? 1:0,
        rid         => $rid,
        sortAttr    => $sortAttr,
        sortOrder   => $sortOrder,
        recRsPos    => $offset,
     );

my $infoMsgMap            =loc_getMsgFile('record/info.msg');
loc_write($template,$infoMsgMap);
my $stdMsgMap  =loc_getMsgFile('search/standard.msg',$msgValMap);
loc_write($template,$stdMsgMap);

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


################################################################################

sub mapURI{
    my ($uriList)=@_;
    my $uriMap=undef;
    if($pref->{'learn360ClientKey'}){
        foreach my $u(@$uriList){
            if($u->{'uri'} =~ m/http:\/\/www.learn360.com/g){
                $u->{'uri'} ="/bin/search/learn360?uri=" . $u->{'uri'};
            }
        }
    }
    if($pref->{'ebrary'}){
        my $mhost = $pref->{'ebrary'};
        foreach my $u(@$uriList){
            $u->{'uri'} =~ s/http:\/\/site.ebrary.com\/(.*)/$mhost\/$1/g;
        }
    }
    return $uriList;
}

