#!/usr/local/bin/perl
require "weblib.lib";
&getparams;
if($param{photo}){$in{file}=$param{photo};}
$dir="/home/todd/public_html/pictures/gallery/temp";
dbmopen(%TOUR,"/home/todd/tours/t2004",undef);
dbmopen(%DB,"/home/todd/db/photoindex",undef);
dbmopen(%TOURtemp,"$dir/t2004",0666);
dbmopen(%DBtemp,"$dir/photoindex",0666);
&htmlopen("Photo classifications");
&ReadParse;
@file=split(/\0/,$in{file});
%file=map {$_,1} @file;
if($in{name} eq "New" && $in{NewKey} && $in{NewName}){
	print "Adding $in{NewKey} -> $in{NewName}<br>\n";
	$DB{"SetID%%$in{NewKey}"}="Photographers%%$in{NewName}";
	$in{name}="SetID%%$in{NewKey}";
}
open(TOUR,"/home/todd/tours/t2004.info");
$_=<TOUR>;
$_=<TOUR>;
$select=qq{<select name="venue"><option value="">Select Venue</option>\n};
while(<TOUR>){
	($date,$city,$venue,$note)=split(/\t/);
	$selected=$in{venue} eq "$date, $venue, $city"?" selected":"";
	$select.="<option$selected>$date, $venue, $city</option>\n";
}
$select.="</select>\n";
@sets=grep /^SetID%%/,keys %DB;
foreach $set(@sets){
	next if $DB{$set}=~/^Shows%%/;
	$DB{$set}=~/^(.*)%%/;
	push(@{$1},$set);
	$set{$1}=1;
}
$selectname=qq{<select name="name"><option value="">Select Photographer</option>\n};
$selectname.=qq{<option value="New">New Photographer</option>\n};
foreach $photographer(sort bylastname @Photographers){
	@p=split(/%%/,$DB{$photographer});
	$selected=$in{name} eq $photographer?" selected":"";
	$selectname.=qq{<option value="$photographer"$selected>$p[1]</option>\n};
}
$selectname.="</select>\n";
opendir(DIR,$dir);
chdir $dir;
@files=grep !-d,readdir(DIR);
$selectfile=qq{<select name="file" multiple size=10><option value="">Select File</option>\n};
foreach $file(sort @files){
	$selected=$file{$file}?" selected":"";
	$selectfile.=qq{<option$selected>$file</option>\n};
}
$selectfile.="</select>\n";
print "<table border><tr>";
if(@file){
	if($in{name}){
		$info="";
		$info.="Caption: $in{caption}#" if $in{caption};
		@p=split(/%%/,$DB{$in{name}});
		($nameid=$in{name})=~s/^SetID%%//;
		($setdate,$venue)=split(/, /,$in{venue},2);
		$key="$setdate.photo";
		$tourdateset=$TOURtemp{$key}?$TOURtemp{$key}:$TOUR{$key};
		@tourdateset=split(/;/,$tourdateset);
		foreach $set(@tourdateset){
			($photographer,$URL)=split(/:/,$set,2);
			push(@set,$URL);
			$set{$URL}=$photographer;
		}
		($day,$date)=split(/ /,$setdate);
		($month,$day,$year)=split(m#/#,$date);
		$year+=2000 if length($year)==2;
		$ymd=sprintf("%04d%02d%02d",$year,$month,$day);
		$date=sprintf("%d/%d/%d",$month,$day,$year);
		if(!$set{"$nameid$ymd"}){
			push(@set,"$nameid$ymd");
			$set{"$nameid$ymd"}=$p[1];
		}
		$info.="Photographer: $p[1]#";
		$info.="Date: $date#Venue: $venue%%";
	}
	print "<td>";
	foreach $file(@file){
		if(0&&$DBtemp{$file}){printthumb($file);}
		else{
			chop($picinfo=`/home/todd/bin/identify '$file'`);
			($name,$size,$class,$bytes,$id)=split(/\s+/,$picinfo);
			($width,$height)=split(/x/,$size);
			$DBtemp{$name}="${info}Width=$width;Height=$height;SetID=t$year,t$ymd,$nameid,$nameid$ymd,decade2000";
			if(!$DB{"SetID%%t$ymd"} && !$DBtemp{"SetID%%t$ymd"}){$DBtemp{"SetID%%t$ymd"}="Shows%%from $venue on $date";}
			if(!$DB{"SetID%%$nameid$ymd"} && !$DBtemp{"SetID%%$nameid$ymd"}){
				$DBtemp{"SetID%%$nameid$ymd"}="Shows%%from $venue on $date by $p[1]";
			}
			printthumb($file);
		}
		print "</td></tr><tr><td>";
	}
	foreach $URL(@set){
		$URL="$set{$URL}:$URL";
	}
	if($setdate){$TOURtemp{"$setdate.photo"}=join(";",@set);}
	print "</td>";
}
print <<EOF;
<td>
<form action="$weblib::URL" method="POST">
$selectfile<br>
$selectname<br>New Key:<input name="NewKey"><br>New Name: <input name="NewName"><br>
$select<br>
<input type="submit">
</form>
</td></tr></table>
EOF
&htmlclose;
sub bylastname{
	return join(/ /,reverse(split(/\s+/,$DB{$a}))) cmp join(/ /,reverse(split(/\s+/,$DB{$b})));
}
sub thumbnail{
	local($filename)=shift;
	local(@filename)=split(/\./,$filename);
	local($thumbdir)=shift;
	local($type)=pop(@filename);
	local($thumbnailname)=join(".",@filename);
	$thumbnailname="tn_${thumbnailname}_$type.jpg";
	if(-f $filename && !-f "$thumbdir/$thumbnailname"){
		system("convert -geometry '95x95>' '$filename' 'jpeg:$thumbdir/$thumbnailname'");
	}
	return $thumbnailname;
}
sub printthumb{
	local($file)=shift;
	local($caption,$info,%caption,%info,$tn,$value,$key);
	($caption,$info)=split(/%%/,$DBtemp{$file});
	$tn=thumbnail($file,"$dir/thumbnails");
	print qq{<a href="/todd/photoclass/photo=$file"><img src="/trc/pictures/gallery/temp/thumbnails/$tn" align="left">$file</a></td><td>\n};
	foreach $caption(split(/#/,$caption)){
		print "$caption<br>\n";
		($key,$value)=split(/: /,$caption);
		$caption{$key}=$value;
	}
	foreach $info(split(/;/,$info)){
		print "$info<br>\n";
		($key,$value)=split(/=/,$info);
		$info{$key}=$value;
	}
}
