#!/usr/bin/perl

#use utf8;
use strict;
use CGI;
use MIME::Base64::Perl;
use Opals::Template qw(
    tmpl_read
    tmpl_write
    tmpl_preference
);
use Opals::Context;
use Opals::Constant;
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        => 'ajax/util/uploadLogo.tmpl',
            reqPermission   => 'pref_edit',
        }
);
use XML::SAX;

my ($isbn,$oplCoverId,$uri)=("","","");
my $fname     = $input->{'imgFile'};

if ($permission && $permission->{'pref_edit'}) {
       if($input->{'logoOpt'} eq 'preview'){
           if($fname && $fname ne''){
            previewImg();
           }
       }
       else{
           saveHeaderInfo();
       }
         
}

#-------------------------------------------------------------
sub previewImg{
    print $cgi->header("image/jpg;base64");
    print encode_base64(getUploadFile());


}
#-------------------------------------------------------------
# slogan                                
# libname                                          
# libname_css    
# slogan_css     
# headerLogo_pos 
# headerbg_class

sub saveHeaderInfo{
    my @prefFields=qw(libname_css  slogan_css headerLogo_pos headerbg_class);
 
    if($input->{'logoOpt'} eq 'remove'){
        removeLogo();
        $input->{"headerLogo_pos"} ="";
    }

    elsif(defined $input->{"imgFile"} && $input->{"imgFile"} ne "" ){
        saveLogo();
    }

    my $sth = $dbh->prepare("replace into opl_preference set val=? ,var=?,hidden=?");

    my $colorTheme= $cgi->cookie('colorTheme');
    my $fontTheme= $cgi->cookie('fontTheme');
    $sth->execute($colorTheme,"colorTheme",1);
    $sth->execute($fontTheme,"fontTheme",1);


    foreach my $fname(@prefFields){
        $sth->execute($input->{$fname},$fname,1);
    }

    $sth = $dbh->prepare("update opl_preference set val=?,valShow=? where var=?");
    
    foreach my $fname qw(libname slogan){
        $sth->execute($input->{$fname},$input->{$fname},$fname);
    }
    $sth->finish;


}
#-------------------------------------------------------------

sub saveLogo{
  my $sth = $dbh->prepare(<<_STH_);
replace into  opl_file
set     mimeType = ?,
        fileData = ?,
        fileType='image',
        fileName='header_logo'
_STH_
    
    my $mimeType=getMimeType($input->{"imgFile"});
    my $imgFile=getUploadFile();
    if($imgFile ne ""){
        $sth->execute($mimeType,$imgFile);
    }
    $sth->finish;
  }
#-------------------------------------------------------------

sub removeLogo{
    $dbh->do("delete from opl_file where fileName='header_logo'");
}

#-------------------------------------------------------------
#Thu, Jan 07, 2010 @ 13:50:35 EST
        
############################################################
sub getUploadFile{
    my $upload_filehandle = $cgi->upload("imgFile"); 
    my $fCont="";
    while(<$upload_filehandle>) {
        $fCont .= $_;
    }
    return $fCont;
}

sub getMimeType {
    my ($fileName)= @_;

    my $fExt = $fileName;
       $fExt =~ s/.*\.([\w\-]+)$/$1/;
       $fExt = lc($fExt);

    my $mimtypes = {

        'djv'   =>    'image/vnd.djvu',
        'djvu'  =>    'image/vnd.djvu',
        'gif'   =>    'image/gif',
        'ico'   =>    'image/x-icon',
        'ief'   =>    'image/ief',
        'jp2'   =>    'image/jp2',
        'jpe'   =>    'image/jpeg',
        'jpeg'  =>    'image/jpeg',
        'jpg'   =>    'image/jpeg',
        'mac'   =>    'image/x-macpaint',
        'pbm'   =>     'image/x-portable-bitmap',
        'pct'   =>     'image/pict',
        'pgm'   =>     'image/x-portable-graymap',
        'pic'   =>     'image/pict',
        'pict'  =>     'image/pict',
        'png'   =>     'image/png',
        'pnm'   =>     'image/x-portable-anymap',
        'pnt'   =>     'image/x-macpaint',
        'pntg'  =>     'image/x-macpaint',
        'ppm'   =>     'image/x-portable-pixmap',
        'qti'   =>     'image/x-quicktime',
        'qtif'  =>     'image/x-quicktime',
        'ras'   =>     'image/x-cmu-raster',
        'rgb'   =>     'image/x-rgb',
        'svg'   =>     'image/svg+xml',
        'tif'   =>     'image/tiff',
        'tiff'  =>     'image/tiff',
        'wbmp'  =>     'image/vnd.wap.wbmp',
        'xbm'   =>     'image/x-xbitmap',
        'xpm'   =>     'image/x-xpixmap',
        'xwd'   =>     'image/x-xwindowdump'
    };
    return $mimtypes->{$fExt};
}
