#!/usr/bin/perl
    eval 'exec /usr/local/bin/perl -S $0 ${1+"$@"}'
	if $running_under_some_shell;

require 'jcode.pl';
require 'find.pl';

%form=&get_form;
&find('.');
@img=sort(@img);

if ($form{TYPE}=~/^list$/i) {
    print "Content-type: text/html\n\n";
    print "<HTML>\n";
    print "<HEAD><TITLE>Thumb nails</TITLE></HEAD>\n\n";
    print "<BODY TOPMARGIN=1 LEFTMARGIN=0 MARGINHEIGHT=1 MARGINWIDTH=0>\n";
    print "<NOBR>\n";
    foreach $i (@img) {
	print "<A HREF=\"photo.cgi?img=$i\" TARGET=\"photo\"><IMG SRC=\"s/$i\" BORDER=1></A>\n";
    }
    print "</NOBR>\n";
    print "</BODY>\n</HTML>\n";
    exit;
} elsif ($form{TYPE}=~/^frame$/i) {
    print "Content-type: text/html\n\n";
    print "<FRAMESET ROWS=\"90,*\">\n";
    print "<FRAME SRC=\"photo.cgi?type=list\">\n";
    print "<FRAME SRC=\"photo.cgi\" NAME=\"photo\">\n";
    print "</FRAMESET>\n";
    exit;
}

@l=search_link($form{IMG});

print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD><TITLE>" . &basename($l[1]) . "</TITLE></HEAD>\n" if ($l[1] ne '');
print "<BODY>\n";
print "<CENTER>\n";
if ($l[0] ne '') {
print "<A HREF=\"photo.cgi?img=$l[0]\">&lt;&lt;Prev</A>";
} else {
print "&lt;&lt;Prev";
}
print "||";
print "<A HREF=\".\">Up</A>";
print "||";
if ($l[2] ne '') {
print "<A HREF=\"photo.cgi?img=$l[2]\">Next&gt;&gt;</A>";
} else {
print "Next&gt;&gt;";
}
print "<BR>\n";
print "<A HREF=\"$l[1]\"><IMG SRC=\"$l[1]\" BORDER=0 WIDTH=\"100%\"></A>\n";
print "</CENTER>\n";
print "</HTML>\n</BODY>\n";
exit;

sub basename {
    local($_)=@_;
    $_=$1 if m#([^/]+/)\s*$#;
    $_=$1 if m#([^/]+)(\.s?html?)?\s*$#;
    s/\.s?html?//;
    return $_;
}

sub search_link {
    local($cur)=@_;
    local($_,$prev,$next,$i,@link);

    $i=0;
    @link=('',$img[0],$img[1]);
    return @link if ($cur eq '');
    foreach $_ (@img) {
	if ($_ eq $cur) {
	    @link=('','','');
	    @link[0]=($i>0)? $img[$i-1] : $img[$#img];
	    @link[1]=$img[$i];
	    @link[2]=($i<$#img)? $img[$i+1] : $img[0];
	    last;
	}
	$i++;
    }
    return @link;
}

sub get_form {
    local($args, $method);
    local($cont_len);
    local($a, $form_name, $form_arg);
    local(%form);

    $method=$ENV{'REQUEST_METHOD'};
    if ($method=~/^POST$/i) {
	$cont_len=$ENV{'CONTENT_LENGTH'};
	while (<>) {
	    push(@args, $_);
	}
	foreach (split('&', $ENV{'QUERY_STRING'})) {
	    push(@args, $_)
        }
    } elsif ($method=~/^GET$/i) {
	@args=split('&', $ENV{'QUERY_STRING'});
    }
    foreach $a (@args) {
	foreach (split('&',$a)) {
	    if (/([^=]+)=(.+)/) {
		$form_name=$1;
		$form_name=~tr/[a-z]/[A-Z]/;
		$form_arg=$2;
		$form_arg=~s/\+/ /g;
		$form_arg=~s/%92//g;
		$form_arg=~s/%(..)/pack("c",hex($1))/ge;
		&jcode'convert(*form_arg, 'euc');
	        $form{$form_name}=$form_arg;
	    }
        }
    }
    $form{'METHOD'}=$method;
    @form=('REMOTE_USER', 'REMOTE_HOST', 'SERVER_SOFTWARE', 'SERVER_NAME', 
           'GATEWAY_INTERFACE', 'SERVER_PROTCOL', 'SERVER_PORT', 
           'REQUEST_METHOD', 'PATH_INFO', 'PATH_TRANSLATED', 'SCRIPT_NAME', 
           'QUERY_STRING', 'REMOTE_HOST', 'REMOTE_ADDR', 'AUTH_TYPE', 
           'REMOTE_USER', 'REMOTE_IDENT', 'CONTENT_TYPE', 'CONTENT_LENGTH', 
           'HTTP_ACCEPT', 'HTTP_USER_AGENT', 'HTTP_REFERER');
    foreach $f (@form) {
        $form{$f}=$ENV{$f};
    }
    return %form;
}

sub wanted {
    $name=~s/^\.\///;
    push(@img,$name) if ($name=~/^CIMG?\d+\.JPG$/);
}