#!C:\Perl64\bin\perl.exe -w

use gsdlCGI;

sub load_gsdl_utils
{
    my ($gsdlhome) = @_;

    require "$gsdlhome/perllib/util.pm";
##    require "$gsdlhome/perllib/FileUtils.pm";
}

sub save_image_data
{
    my ($gsdl_cgi,$io_dir,$docid,$imagedata) = @_;

    if (!defined $imagedata || ($imagedata =~ m/^\s*$/)) {
	$gsdl_cgi->generate_error("No image data given.\n");
	return;
    }

#    my $filename = &FileUtils::FileConcatenate($io_dir,"$docid-canvas.png");
    my $filename = &util::filename_cat($io_dir,"$docid-canvas.png");


    if (!open(FILE, ">$filename")) {
	$gsdl_cgi->generate_error("Cannot open $filename: $!\n");
	return;
    }

    binmode(FILE);

    print FILE $imagedata;

    close(FILE);

    print STDOUT "Content-type:text/plain\n\n";
    print STDOUT "Data save successful\n";
    print STDOUT " -> Wrote image data out to $filename\n";

}



sub load_image_data
{
    my ($gsdl_cgi,$io_dir,$docid) = @_;

#    my $filename = &FileUtils::FileConcatenate($io_dir,"$docid-canvas.png");
    my $filename = &util::filename_cat($io_dir,"$docid-canvas.png");

    if (!open(FILE, "<$filename")) {
	print STDERR "Requested image data file does not exist\n";
	exit -1;
    }

    binmode(FILE);

    print STDOUT "Content-type:text/plain\n\n";

    while (defined ($line = <FILE>)) {
	print $line;
    }

    close(FILE);

}




sub main
{
    #my $gsdl_cgi = new gsdlCGI("+cmdline"); # doesn't work anymore
    my $gsdl_cgi = new gsdlCGI();

    $gsdl_cgi->setup_gsdl();
    my $gsdlhome = $ENV{'GSDL3HOME'};

    $gsdl_cgi->checked_chdir($gsdlhome);

    my $action  = $gsdl_cgi->clean_param("a");
    my $collect = $gsdl_cgi->clean_param("c");
    my $docoid  = $gsdl_cgi->clean_param("d");
    my $site    = $gsdl_cgi->clean_param("site");

    ##my $io_dir = &FileUtils::FilenameConcatenate($gsdlhome,"site",$site,"collect",$collect,"index");
    my $io_dir = &util::filename_cat($gsdlhome,"sites",$site,"collect",$collect,"index");

    if ($action eq "save") {
	my $image_data = $gsdl_cgi->clean_param("imagedata");
	save_image_data($gsdl_cgi,$io_dir,$docoid,$image_data);
    }
    elsif ($action eq "load") {
	load_image_data($gsdl_cgi,$io_dir,$docoid);
    }
    else {
	$gsdl_cgi->generate_error("Unrecognized action: '$action'\n");
    }

    # filename is now local to the current dir after checked_dir
    # my $filename = $gsdl_cgi->clean_param("filename");
	
    # my $checksum = generate_checksum($filename,$gsdl_cgi);


}

&main();

