#!/usr/bin/perl

# TODO: Date-text-field: Eg 2005, or 05/2005 or 2005 03 or Summer 2003
# TODO: Flags of Canada, Sweden...
# TODO: Cache info
# TODO: Group is under Country_Type -> @I doesn't work
# TODO: Year&Month list instead of Goto photo page...
# TODO: When choosing a year, keep all years
# TODO: Fix count of photos
# TODO: Frames?
# TODO: List-box with Events. Persons
# TODO: Count photos in your as your photos
# TODO: Open the first event automatically
# Done: Include &$cgi_data{Name} in $Link
# Done: Fix auto-submit
# Done: Fix multi-sections eg Bro'llop

require "./cgi-lib.pl";
use locale ;
use POSIX qw(locale_h);
setlocale(LC_COLLATE, 'sv_SE') ;

$time = time ;
($ME = $0) =~ s/.*\/// ;
open DEBUG, ">>.photosdebug" ;
sub LFILE {open my $F,(@_>1&&">").shift; flock $F,2; @_=@_?print $F @_:(<$F>); flock $F,8; @_} #r/w !()file w lock
sub UNIQ { my %S;grep{!$S{$_}++}@_ } # unsorted, doesn't sort
sub substrHTML{ my($t,$b,$e)=@_; $t = CHARISO(htmlchar($t)) ; $e-=3 if length($t) > $e ;
	charhtml(ISOCHAR((substr($t,$b,$e)).(length($t) > $e+3 && "..."))) ; }
sub ECHO  { print STDOUT (map{"[$_] "}@_), "<BR>\n" if $Name =~ /^Erik Elfgren/}
sub ECHOA { print STDOUT (map{"[$_] "}@_), "<BR>\n"}
sub ECHOD  { print DEBUG (map{"[$_] "}@_), "\n" ;}
sub MAIL {my($D,$S,$M,$F,@T)=('elf@ludd.luth.se',@_) ; $F||=$D ; for $T($T[0]?@T:$D){
	open my $P,"|/usr/sbin/sendmail -f $F $T";print $P "To: $T\nFrom: $F\nSubject: $S\n\n$M\n.";close $P}}
sub difftime{
	my $t1 = '' ;
	while($_ = shift){
		@t = split(/-|_|\./, $_) ;
		#ECHO @t ;
		$t[1] += $t[0]*12 ;
		$t[2] += $t[1]*30 ;
		$t[3] += $t[2]*24 ;
		$t[4] += $t[3]*60 ;
		$t[5] += $t[4]*60 ;
		$t1 = $t[5] unless $t1 ;
	}
	#ECHO $t1 - $t[5] ;
	return $t1 - $t[5] ;
}
sub ISOCHAR{
  local $_ = $_[0] ;
	s/aa/\\aa/g ; s/AA/\\AA/g ;
	s/å/aa/g ; s/Å/AA/g ;
	s/ä/a''/g ; s/Ä/A''/g ;
	s/ö/o''/g ; s/Ö/O''/g ;
	s/ë/e''/g ; s/Ë/E''/g ;
	s/é/e'/g ; s/É/E'/g ;
	s/è/e`/g ; s/È/E`/g ;
	s/ê/e^/g ; s/Ê/E^/g ;
	s/á/a'/g ; s/Á/A'/g ;
	s/à/a`/g ; s/À/A`/g ;
	s/â/a^/g ; s/Â/A^/g ;
	s/ú/u'/g ; s/Ú/U'/g ;
	s/ù/u`/g ; s/Ù/U`/g ;
	s/û/u^/g ; s/Û/U^/g ;
	s/ç/c`/g ; s/Ç/C`/g ;
	s/ô/o\^/g ; s/Ô/O\^/g ;
	return $_ ;
}
sub CHARISO{
  local $_ = $_[0] ;
	s/aa/å/g ; s/AA/Å/g ;
	s/\\å/aa/g ; s/\\Å/AA/g ; # Watch out for \\aa!
	s/a''/ä/g ; s/A''/Ä/g ;
	s/o''/ö/g ; s/O''/Ö/g ;
	s/e''/ë/g ; s/E''/Ë/g ;
	s/e'/é/g ; s/E'/É/g ;
	s/e`/è/g ; s/E`/È/g ;
	s/e\^/ê/g ; s/E\^/Ê/g ;
	s/a'/á/g ; s/A'/Á/g ;
	s/a`/à/g ; s/A`/À/g ;
	s/a\^/â/g ; s/A\^/Â/g ;
	s/u'/ú/g ; s/U'/Ú/g ;
	s/u`/ù/g ; s/U`/Ù/g ;
	s/u\^/û/g ; s/U\^/Û/g ;
	s/c`/ç/g ; s/C`/Ç/g ;
	s/o\^/ô/g ; s/O\^/Ô/g ;
	return $_ ;
}

$ret = &ReadParse(\%cgi_data,\%cgi_cfn,\%cgi_ct,\%cgi_sfn);
while(($Var, $Val)= each %cgi_data){push @ARGs, "$Var=$Val"}
#$ENV{QUERY_STRING} = join("&", @ARGs) unless $ENV{QUERY_STRING} ;
$ENV{QUERY_STRING} = join("&", @ARGs) ;
#$ENV{QUERY_STRING} = join("&", ($ENV{QUERY_STRING}, @ARGs)) ;

print &PrintHeader;
#ECHOA @ARGs ;
#while(($Var, $Val)= each %cgi_data){ECHO $Var, $Val}
print "<script language=\"JavaScript\">\n" ;
print "<!--\n" ;
print "function mover( pos ) {\n" ;
print "  l = document.images.length\n" ;
#print "  if (document.images) {\n" ;
print "  if(pos==1){document.images[l-2].src = \"/imgs/cgi/PrevFrost3.png\"}\n" ;
print "  if(pos==2){document.images[l-1].src = \"/imgs/cgi/NextFrost3.png\"}\n" ;
print "}\n" ;
print "function mout( pos ) {\n" ;
#print "  if (document.images) {\n" ;
print "  if(pos==1){document.images[l-2].src = \"/imgs/cgi/PrevFrost3b.png\"}\n" ;
print "  if(pos==2){document.images[l-1].src = \"/imgs/cgi/NextFrost3b.png\"}\n" ;
print "}\n" ;
print "//-->\n" ;
print "</script>\n" ;
	print "<HEAD>\n" ;
	print "<TITLE>Erik Elfgren's photopages</TITLE>\n" ;
	#print '<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">'."\n" ;
	print "</HEAD>\n" ;
	print "<BODY bgcolor=#ffffff background=\"/imgs/Back.gif\">\n" ; 
#if($cgi_data{access}){
#	print "<BODY bgcolor=#ffffff background=\"/imgs/cgi/Back.gif\">\n" ; }
#else{
#	print "<BODY bgcolor=#ffffff background=\"/imgs/cgi/bakgrund_large1.gif\">\n" ; }
@top = LFILE("top.html") ;
for(@top){s/photos.cgi/$ME/}
($Quote, $Auth, undef, $Quote2, $Auth2) = `export HOME="/home/elf/" ; /home/elf/Quotes/readq.pl2 -W=76 -N=2 -Length='76'` ;
#ECHOA ($Quote, $Auth) ;
for(@top){my $x="<BR>" if $cgi_data{Public} ; s/<I>.*<\/I> - .*/$x<I> $Quote <\/I> $Auth/}
#print @top if $cgi_data{access} ;
@top = grep{!/map\.html/}@top if $cgi_data{Public} ;
print @top ;
#print "<TABLE cellspacing=2 cellpadding=2 border=0>\n" ;
#print "<TR valign=\"top\"><TD width=240></TD><TD>\n" ;
#print LFILE("top.html") ;
#print "</TD></TR>" ;
#print "</TABLE>" ;

if($cgi_data{EvSearch}){ ($cgi_data{Search} = "$cgi_data{EvSearch}".'(\n|$)') =~ s/\?/\\\?/g}
if($cgi_data{PeSearch}){ ($cgi_data{Search} = "$cgi_data{PeSearch}".'(\n|$)') =~ s/\?/\\\?/g}

$ALL = 1 if $cgi_data{ALL} == 1 ;
#$ALL = 1 if $cgi_data{Name} =~ s/ALL$// ;
print "<FORM METHOD=\"POST\">\n" ;
if(!$cgi_data{Email} or $cgi_data{Email} eq "eelfgren\@hotmail.com"){
print "<TABLE cellspacing=0 cellpadding=0 border=0>\n" ;
print "<TR valign=\"top\"><TD width=260>\n" ;
#print "<FORM METHOD=\"POST\" action=\"/cgi/$ME\">\n" ;
unless($cgi_data{access}){
		if($cgi_data{Email} eq "eelfgren\@hotmail.com"){
			$ALL = 1 unless $cgi_data{ALL} eq "0" ;
			$cgi_data{moreopts} = "on" ;
			#print "<INPUT type=password name=Email value=\"$cgi_data{Email}\" size=20>\n" ;
			print "<INPUT type=hidden name=Email value=\"$cgi_data{Email}\" size=20>\n" ;
		}
		else{
			print "Please identify yourself with your<BR><B>e-mail address</B>:\n" ;
			print "<INPUT type=text name=Email value=\"$cgi_data{Email}\" size=20>\n" ;
			print " <INPUT type=submit value=Go>" ;
		}
	}
}
	else{
		print "<INPUT type=hidden name=Email value=\"$cgi_data{Email}\">\n" ;
	}
{ open my $P, "/home/elf/bin/.people" ; @People = <$P> }
for $P(@People){
	($Name, undef, undef, $Mail) = split /\t/, $P ;
	@Mail = split(/\//, $Mail) ;
	#ECHO $Name, $cgi_data{Email}, @Mail ;
	push @Names, $Name if grep{s/[()]//g;$_ = CHARISO($_); $_ =~ /^\Q$cgi_data{Email}\E$/i}@Mail and $Mail ;
	#last if grep{s/[()]//g;$_ eq $cgi_data{Email}}@Mail and $Mail ;
	$Name = '' ;
}
if(@Names>1){
	if ($cgi_data{Name}){
		@Names = grep{$_ eq $cgi_data{Name}}@Names ;
	}
	else{
		print "Click on your name: " ;
		for(@Names){
			my $o = &charhtml($_) ; 
			print "<A href=\"$ME?Email=$cgi_data{Email}&Name=$_\">$o</A> " ;
		}
		exit ;
	}
}
$Name = $Names[0] ;
#$cgi_data{Advanced} = 1 if $cgi_data{Email} eq 'eelfgren@hotmail.com' ;
$cgi_data{Advanced} = 1 if $cgi_data{moreopts} ;
$cgi_data{Advanced} = 1 if $Name eq 'Erik Elfgren' ;
$cgi_data{Advanced} = 1 if $Name eq 'Nathalie Caron Elfgren' ;
#for(keys %ENV){ ECHO($_, $ENV{$_}) }
#for(keys %cgi_data){ ECHO($_, $cgi_data{$_}) }
#ECHO  ;
#(my $md5Name = $Name ) =~ s/ALL$// ;
#ECHO $Name ;
{(my $t = $Name) =~ s/'/'\\''/g ; ($md5Name) = (`echo 'xyz$t'|md5sum` =~ /(\S{4})/) ;}
#ECHO "Name", $Name ;
if($cgi_data{access} and !$Name){
	$str = $cgi_data{Country_Type}.$cgi_data{Group}.$cgi_data{Event}.$cgi_data{Search}.$cgi_data{Public} ;
	$str =~ s/'/'\\''/g ;
	($md5) = (`echo 'xyz$str'|md5sum` =~ /(\S{4})/) ;
	#ECHOA $md5 ;
	$ALL = 1 ;
	$Name = $cgi_data{access} ;
	exit if $md5 ne $cgi_data{access} ;
}
if(!$Name){
#	if(!$cgi_data{Email}){
#		print "<BR>You must enter your e-mail address to view my photos<BR>\n" ;
#	}
	if(!$cgi_data{Name} and $cgi_data{Email}){
		#print "<BR>Please write your name and I'll add you to my address book as soon as possible<BR>\n" ;
		print "I don't have the address <B>$cgi_data{Email}</B> in my address-book.<BR>Please write your full name and I'll add you to my address book as soon as possible<BR>\n" ;
		print "<B>Full name</B>:\n" ;
		print "<INPUT type=text name=Name value=\"$cgi_data{Name}\" size=20><BR>\n" ;
		print "<B>Comment</B>:\n" ;
		print "<INPUT type=text name=Comment size=20>\n" ;
		print " <INPUT type=submit value=Go>" ;
	}
	elsif($cgi_data{Email}){
		$S = "Photopage: $cgi_data{Name}" ;
		#$S = $cgi_data{Name}." ".$cgi_data{Email} ;
		($tName = $cgi_data{Name}) =~ s/ /  /g ;
		#&MAIL($S, "People.pl -add -CHOICE_Persons='$tName' -ForceEmail='$cgi_data{Email}'\nscp.pl 'bin/.people' -CHOICE_Servers='erike.homeip.net' ==", $cgi_data{Email}) ;
		#&MAIL($S, "People.pl -add -CHOICE_Persons='$tName' -ForceEmail='$cgi_data{Email}'\nscp.pl 'bin/.people' -CHOICE_Servers='elfweb.mine.nu' ==", $cgi_data{Email}) ;
		&MAIL($S, "$cgi_data{Comment}\n\nPeople.pl -add -CHOICE_Persons='$tName' -ForceEmail='$cgi_data{Email}'\nscp.pl 'bin/.people' -CHOICE_Servers='elfweb.mine.nu' ==", $cgi_data{Email}) ;
		print "<P>Thank you $cgi_data{Name}, I will write to you ($cgi_data{Email}) as soon as possible.<BR>\n" ;
	}
	print "</FORM>\n" ;
	{ open my $P, ">>.photolog" ; print $P "$cgi_data{Name}\t$cgi_data{Email}\t$ENV{REMOTE_ADDR}\t$ENV{QUERY_STRING}\n" if $cgi_data{Name} or $cgi_data{Email} ; close $P}
	exit ;
}

#print "</FORM>\n" ;
{ open my $P, ">>.photolog" ; print $P "${Name}\t$cgi_data{Email}\t$ENV{REMOTE_ADDR}\t$ENV{QUERY_STRING}\n" ; close $P}

$Compact = $cgi_data{Compact} || '0' ;
$Nphoto = $cgi_data{Nphoto} || '10' ;
$Size = $cgi_data{Size} || 'Thumbs' ; # Default size should be width=300
$Quality = $cgi_data{Quality} || 'Web' ;
$cgi_data{Quality} = '' if $Quality eq 'Web' ;
$cgi_data{Size} = '' if $Size eq 'Thumbs' ;

#ECHO $cgi_data{SearchSection} ;
#ECHO $ENV{QUERY_STRING}, $ALL ;
#ECHO $Name, $ALL ;
#$cgi_data{Name} = "ALL" if $cgi_data{SearchSection} ne 'on' ;
if ($cgi_data{SearchSection} ne 'on' and $cgi_data{Search}){
	$ALL = 1 ;
	#$cgi_data{I} = '' ;
	#$cgi_data{Nphoto} = '' ;
	$cgi_data{Country_Type} = '' ;
	$cgi_data{Group} = '' ;
	$cgi_data{Event} = '' ;
	$cgi_data{year} = '' ;
	$cgi_data{month} = '' ;
}
#$Name .= 'ALL' if $ALL ;
#$Name .= 'ALL' if $cgi_data{Name} eq "all" or $cgi_data{SearchSection} ne 'on' ;
#ECHOA $Name, $cgi_data{Name} ;
#exit ;
#$Name =~ s/ / 32 /g ;
($Country_Type = $cgi_data{Country_Type}||'') ;#=~ s/ / 32 /g ;
($Group = $cgi_data{Group}||'') ;#=~ s/ / 32 /g ;
$Opts = " -GrUnsort" if $Group =~ s/Unsorted// ;
($Event = $cgi_data{Event}||'') ;#=~ s/ / 32 /g ;
$Opts = " -EvUnsort" if $Event =~ s/Unsorted// ;
#$OrgName = $Name ;
for(Country_Type, Group, Event, Name){${"Org$_"} = $$_ ;$$_ =~ s/'/'\\''/g}
#for(Country_Type, Group, Event){$$_ .= '$' if $$_}
$year = $cgi_data{year} ;#|| '\d{4}' ;
$month = $cgi_data{month} ;#|| '\d{2}' ;
$month = "0$month" if length($month) == 1 ;
#ECHO $month ;
#$month = "($month|".($month+1)."|".($month+2).")" if $month >100 and $month = ($month-101)*3+1 ;
$month = "(03|04|05)" if $month == 101 ;
$month = "(06|07|08)" if $month == 102 ;
$month = "(09|10|11)" if $month == 103 ;
$month = "(12|01|02)" if $month == 104 ;
#ECHO $month ;
$lDate = "${year}-${month}" if $year or $month ;
$Link = "&Size=".$cgi_data{Size} if $cgi_data{Size} ;
$Link .= "&Name=".$cgi_data{Name} if $cgi_data{Name} ;
$Link .= "&Nphoto=".$cgi_data{Nphoto} if $cgi_data{Nphoto} ;
$Link .= "&Compact=".$cgi_data{Compact} if $cgi_data{Compact} ;
$Link .= "&Quality=".$cgi_data{Quality} if $cgi_data{Quality} ;
$Link .= "&moreopts=on" if $cgi_data{moreopts} ;
$Link .= "&OnlyFilm=on" if $cgi_data{OnlyFilm} ;
#ECHO $Link ;
#$ASearch = $cgi_data{ASearch} ;
#$ASearch = '' if $ASearch eq "Search all" ;
$YSearch = $cgi_data{Search} ;
$OnlyFilm = $cgi_data{OnlyFilm} ;
#$YSearch = '' if $YSearch eq "Search" ;
#$Link.= "&Name=".$cgi_data{Name} if $cgi_data{Name} ;
#ECHO $lDate ;
#$year = $month = '' if $year eq '\d{4}' and $month eq '\d{2}' ;
#@list = `./show.pl -noxv -Q=Web -list -CHOICE_Country_Type=Canada_Family -CHOICE_Person='Nathalie 32 Caron' ==` ;
#@list = `./show.pl -list -noxv -Qlim='$Quality' -CHOICE_Person='$Name' -CHOICE_Country_Type='$cgi_data{Country_Type}' -CHOICE_Group='$cgi_data{Group}' -CHOICE_Event='$cgi_data{Event}' ==` ;
#ECHO "./show.pl -list -noxv -Qlim='$Quality' -CHOICE_Person='$Name' -CHOICE_Country_Type='${Country_Type}' -CHOICE_Group='${Group}' -CHOICE_Event='${Event}' -Date='${year}-${month}' ==" ;
#@list = `./show.pl -list -noxv -Qlim='$Quality' -CHOICE_Person='$Name' -CHOICE_Country_Type='${Country_Type}' -CHOICE_Group='${Group}' -CHOICE_Event='${Event}' -Date='${year}-${month}' ==` ;
#$Opts = '' ;
#$Name .= "ALL" if $ASearch and $YSearch = $ASearch ;
if($ENV{REMOTE_ADDR} ne $ENV{SERVER_ADDR}){$Quality =~ s/\W//g ; $Quality = "Web" unless $Quality ;}
$Name .= "ALL" if $ALL ;
for(lDate, Quality, YSearch, Opts){${"Org$_"} = $$_ ;$$_ =~ s/'/'\\''/g}
$OrgName = $Name ;
$Name =~ s/\^/\\^/g ;
 #ECHOA "./pickphoto.pl '$Name' '${Country_Type}' '${Group}' '${Event}' '$lDate' $Quality '' '$YSearch' '$OnlyFilm' $Opts" ;
@list = `./pickphoto.pl '$Name' '${Country_Type}' '${Group}' '${Event}' '$lDate' $Quality '' '$YSearch' '$OnlyFilm' $Opts` ;
for(lDate, Quality, YSearch, Opts, Name){ $$_ = ${"Org$_"}} ;

print "</TD><TD>\n" if(!$cgi_data{Email} or $cgi_data{Email} eq "eelfgren\@hotmail.com") ;
#print "</TD><TD>\n" unless $cgi_data{access} ;
print "<INPUT type=hidden name=Country_Type value=\"$OrgCountry_Type\">\n" if $Country_Type;
print "<INPUT type=hidden name=Group        value=\"$OrgGroup\">\n" if $Group;
print "<INPUT type=hidden name=Event        value=\"$OrgEvent\">\n" if $Event;
#print "<INPUT type=hidden name=Name         value=\"all\">\n" if $cgi_data{Name} eq "all" ;
#print "<INPUT type=hidden name=Name         value=\"${Name}".($ALL && "ALL")."\">\n" if ${Name} ;
print "<INPUT type=hidden name=Name         value=\"$cgi_data{Name}\">\n" if $cgi_data{Name} ;
print "<INPUT type=hidden name=ALL         value=\"$cgi_data{ALL}\">\n" if $cgi_data{ALL} ;
print "<INPUT type=hidden name=access       value=\"$cgi_data{access}\">\n" if $cgi_data{access} ;

print "</TD>\n" if(!$cgi_data{Email} or $cgi_data{Email} eq "eelfgren\@hotmail.com") ;
#exit ;
sub htmlchar{
	local $_ = $_[0] ;
	s/&(.)uml;/$1''/g ; 
	s/&(.)circ;/$1\^/g ;
	s/&(.)acute;/$1'/g ;
	s/&(.)grave;/$1`/g ; 
	s/&(.)cedil;/$1`/g ;
	s/aa/\\aa/g ; s/AA/\\AA/g ;
	s/&aring;/aa/g ; s/&Aring;/AA/g ;
	return $_ ;
}
sub charhtmlspace{$_=shift; s/_/ /g ; return charhtml($_)}
#sub charhtmlspace{return &charhtml($_[0])}
sub charhtml{
	local $_ = $_[0] ;
	s/(.)''/&${1}uml;/g ;
	s/(.)\^/&${1}circ;/g ;
	s/aa/&aring;/g ; s/AA/&Aring;/g ;
	s/\\&aring;/aa/g ; s/\\&Aring;/AA/g ;
	s/(a|A|e|E)'/&${1}acute;/g ;
	s/(a|A|e|E|u|U)`/&${1}grave;/g ;
	s/(c|C)`/&${1}cedil;/g ;
	return $_ ;
}

for(@list){
	next if /^$/ and $p=1;
		chomp ;
	#$org = $_ ;
	#s/None_// ;
	$_ = charhtml($_) ;
	if( $p ){
		unshift @photos, $_ ;
		#($Group, $Event, $People) = split "\t" ;
		#$People =~ s/\|$// ;
		#@Poeple = split /\|/ ;
	}
	else{
		#ECHO "allp: $_" ;
		$your = s/\\_// ;
		#s/(.*)\t// ;
		#/(.*)\t/ ;
		#$_ = '\-'.$_ if $1 < 20 ;
		#ECHO "pref: $_" if $your ;
		push @yourtree, $_ if $your ;
		push @alltree, $_ ;
		#$orgname{$_} = $org ;
	}
}

#ECHO "years", @years ;
print "<TABLE cellspacing=2 cellpadding=0 border=0>\n" ;
unless($cgi_data{access}){
print "<TR valign=\"top\"><TD width=260 bgcolor=lightyellow> \n" ;
}
#ECHO @photos ;
for(@photos){
	push @years, $1 if /^(\d{4})/ and $1 ne $years[-1];
	push @months, $1 if /^\d{4}-(\d{2})/ and $1 ne $months[-1] ;
	push @seasons, 101 if /^\d{4}-(\d{2})/ and $1 =~ /(03|04|05)/ and $1 ne $seasons[-1] ;
	push @seasons, 102 if /^\d{4}-(\d{2})/ and $1 =~ /(06|07|08)/ and $1 ne $seasons[-1] ;
	push @seasons, 103 if /^\d{4}-(\d{2})/ and $1 =~ /(09|10|11)/ and $1 ne $seasons[-1] ;
	push @seasons, 104 if /^\d{4}-(\d{2})/ and $1 =~ /(12|01|02)/ and $1 ne $seasons[-1] ;
	if($cgi_data{moreopts}){
		split "\t" ;
		push @_, '' if $_ =~ /\t$/ ;
		push @_, '' if $_ =~ /\t\t$/ ;
		my ($E, $P) = @_[-2,-1] ;

		#push @fEvents, $E ;
		#push @fPersons, grep{!/^\?*$/}split(/\|/, $P) ;
		$fEvents{$E}++ ;
		for $P(grep{!/^\?*$/}split(/\|/, $P)){$fPersons{$P}++}
	}
}
#@fPersons = map{
#	$_ = substrHTML($_,0,20) ;
#}UNIQ(@fPersons) ;
#@fEvents = map{
#	substrHTML($_,0,20) ;
#	#$_ = CHARISO(htmlchar($_)) ; $_ = (substr($_, 0, 20)).(length($_) > 20 && "...") ; $_ = charhtml(ISOCHAR($_)) ;
#}UNIQ(@fEvents) ;
@months = UNIQ(@months) ;
@seasons = UNIQ(@seasons) ;
#ECHO $cgi_data{year} ;
#ECHO "years", @years ;
#ECHO "months", @months ;
#ECHO "seasons", @seasons ;
#ECHO "Persons", @Persons ;
if(!$cgi_data{access}){
#if($cgi_data{year} or @years != 1){
	#if(!$cgi_data{moreopts}){
		my $checked = "checked" if $cgi_data{moreopts} ;
		print "<INPUT type=checkbox name=moreopts $checked onChange=\"this.form.submit()\"> More options\n" ;
		print " <INPUT type=submit value=Go>" unless $cgi_data{moreopts} ;
		#<INPUT type=submit>
	#}
	#else{
	if($cgi_data{moreopts}){
print "<HR width=95%>" ;
		my $checked = "checked" if $cgi_data{OnlyFilm} ;
		print "<INPUT type=checkbox name=OnlyFilm $checked onChange=\"this.form.submit()\"> Show only film-clips\n" ;
	print "<BR>\n<SELECT name=year onChange=\"this.form.submit()\")>\n" ;
	print "  <OPTION value=\"\\d{4}\" >All years\n" ;
	#print "  <OPTION value=\"\\d{4}\" selected>All years\n" ;
	#print "  <OPTION value=\"\\d{4}\">All years\n" unless @years ;
	#ECHO @years ;
	for(@years){my $s=($cgi_data{year}==$_)?" selected":'' ; print "  <OPTION value=\"$_\"$s>$_\n" ;}
	print "</SELECT>\n" ;
#}
#else{
#	print "<INPUT type=hidden name=year value=\"$years[0]\">\n" ;
#}
#if($cgi_data{month} or @months != 1){
	print "<SELECT name=month onChange=\"this.form.submit()\")>\n" ;
	print "  <OPTION value=\"\\d{2}\" >All months\n" ;
	@allmonths = ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") ;
	@allseasons = ("Spring", "Summer", "Fall", "Winter") ;
	#for(1..12){my $s=($cgi_data{month}==$_)?" selected":'' ; print "  <OPTION value=\"$_\"$s>".$allmonths[($_-1)]."\n" ;}
	for(sort @months){my $s=($cgi_data{month}==$_)?" selected":'' ; print "  <OPTION value=\"$_\"$s>".$allmonths[($_-1)]."\n" ;}
	print "  <OPTION value=\"\"> ---\n" ;
	for(sort @seasons){my $s=($cgi_data{month}==$_)?" selected":'' ; print "  <OPTION value=\"$_\"$s>".$allseasons[($_-101)]."\n" ;}
	print "</SELECT><BR>\n" ;
	if(%fEvents ){
		print "<SELECT name=EvSearch onChange=\"this.form.submit()\")>\n" ;
		print "  <OPTION value=\"\" >Search Events\n" ;
		print "  <OPTION value=\"\" >".("-" x 33)."\n" ;
		for(sort keys %fEvents){ print "  <OPTION value=\"$_\">".substrHTML($_,0,18)." ($fEvents{$_})\n" ;}
		print "</SELECT><BR>\n" ;
	}
	if(%fPersons and (!$ALL or $cgi_data{Email} eq 'eelfgren@hotmail.com')){
		print "<SELECT name=PeSearch onChange=\"this.form.submit()\")>\n" ;
		print "  <OPTION value=\"\" >Search Persons\n" ;
		print "  <OPTION value=\"\" >".("-" x 33)."\n" ;
		for(sort keys %fPersons){ print "  <OPTION value=\"$_\">".substrHTML($_,0,18)." ($fPersons{$_})\n" ;}
		print "</SELECT><BR>\n" ;
	}
#}
my $value ;
#$value = "value=\"$cgi_data{Search}\"" ;
print "Search: <INPUT type=text name=Search $value size=15>" ;
print " <INPUT type=submit value=Go>" ;
#my $value = "checked" if $cgi_data{Search} ;
print "<BR><INPUT type=\"checkbox\" $value name=SearchSection> Search current section only" ;
#print "<INPUT type=checkbox name=moreopts onChange=\"this.form.submit()\"> More options\n" ;
#print "<INPUT type=hidden name=moreopts checked>\n" ;
#{($tName = charhtml($OrgName)) ; print "<BR><A href=\"$ME?Email=$cgi_data{Email}&Name=$tName$Link&YSearch=${tName}\">Photos with $tName</A><BR>" ;}
}
print "<HR width=95%>" ;
}
#print "<INPUT type=hidden name=YSearch      value=\"$cgi_data{YSearch}\">\n" if $cgi_data{YSearch} ;
#print "<INPUT type=submit>" ;
#print "Search: <INPUT type=text name=Search value=\"$cgi_data{Search}\" size=22>\n" ;
#print "<INPUT type=submit>" ;
$cgi_data{Search} = "" unless $cgi_data{Search} ;
#print "<H3> <A href=\"$ME?Email=$cgi_data{Email}$Link\">Your Photos</A> <INPUT type=text name=YSearch value=\"$cgi_data{YSearch}\" size=12></H3>\n" ;
#print "<H3> <A href=\"$ME?Email=$cgi_data{Email}$Link\">Your Photos</A> <INPUT type=text name=YSearch value=\"Search your\" size=12></H3>\n" ;
if($cgi_data{Email}){
my $Where ;
for("Country_Type", "Group", "Event"){
	$Where .= $cgi_data{$_}? "&$_=$cgi_data{$_}" : "" ;
}
my $PhotoFilm = $cgi_data{OnlyFilm} ? "films" : "photos" ;
if(! $ALL){
#print "<H3> <A href=\"$ME?Email=$cgi_data{Email}$Link\">Your Photos</A> </H3>\n" ;
print "<A href=\"$ME?Email=$cgi_data{Email}$Link$Where&ALL=1\"> Click here to see all $PhotoFilm</A><P>" ;
print "<A href=\"$ME?Email=$cgi_data{Email}$Link\"><IMG src=\"/imgs/cgi/Your.png\" alt=\"Your Photos\"></A><BR>\n" ;
#print "<HR>" ;
#print "<FORM>\n" ;
#print "</FORM>\n" ;
#print "</TD>\n" ;#<TD></TD>\n"; #<TD>\n" ;
#print "<TR valign=\"top\"><TD width=250>\n" ;
#print '<IMG SRC="/imgs/cgi/Empty.gif" WIDTH="228" HEIGHT="171" BORDER = "0" ALT = "&#187;" HSPACE="0" VSPACE="0"><BR>'."\n" ;
$i = 0 ;
#$Date = "&Date=${year}-${month}" ;#if $Date ;
$Date = "&year=${year}" if $year and $year ne '\d{4}' ;
$Date .= "&month=${month}" if $month and $month ne '\d{2}' ;
for(@yourtree){ $i++ ; $Group = $Event = $n = '' ;
	$n = $1 if s/(.*)\t// ;
	$n .= $1 if s/^( +)// ;
	#ECHO $n ;
	(my $o = $_ )=~ s/_/ /g ;
	my $ofull = $o ;
	$o = CHARISO(htmlchar($o)) ;
	my $add = "..." if length($o) > 28 ;
	$o = charhtml(ISOCHAR(substr($o, 0, 28))).$add ;
	$o =~ s/None // ; $ofull =~ s/None // ;
	$o = "<small>$o</small>" ;
	#if ($cgi_data{"Event"}){ }
	#elsif ($cgi_data{"Group"}){ }
	#elsif ($cgi_data{"Country_Type"}){ }
	#print '&nbsp;&nbsp;&nbsp' while ($n =~ s/^  // and $j++) ;
	if($n =~ s/^    //){ print '&nbsp;&nbsp&nbsp;&nbsp&nbsp;&nbsp;' if $_ ; {$o = "<B>$o</B>" if charhtml($cgi_data{"Event"}) eq $_ and !$ALL}; {$_ = htmlchar($_) ; s/&/%26/g ; $_ = charhtml($_)} ; $Event = "&Event=$_"  ; $_ = $cgi_data{"Country_Type"} ; $Group = "&Group=$cgi_data{Group}" }
	elsif($n =~ s/^  //){ print '&nbsp;&nbsp&nbsp;' ; $o = "<B>$o</B>" if charhtml($cgi_data{"Group"}) eq $_ and !$ALL; $Group = "&Group=$_" ; $_ = $cgi_data{"Country_Type"} }
	else{$o = "<B>$o</B>" if charhtml($cgi_data{"Country_Type"}) eq $_ and !$ALL;}
	#$img = "subdir" ;
	#$img = "plain" if $n <= 20 ;
	$img = "plain" ;
	#if ($j){ $Group = $_ ; $_ = $cgi_data{"Country_Type"} ;}
	#s/ /\%20/g ;
	next if $Event eq "&Event=" ;
	$link = "Country_Type=$_$Group$Event$Date" ;
	$link = htmlchar($link) ;
  print "<IMG SRC=\"/imgs/cgi/$img.gif\" WIDTH=\"20\" HEIGHT=\"16\" BORDER = \"0\" ALT = \"&#187;\" HSPACE=\"0\" VSPACE=\"0\"><A href=\"$ME?Email=$cgi_data{Email}$Link&I=0&$link\" title=\"$ofull ($n photos)\" onmouseover=\"msover($i) ; return true\" onmouseout=\"msout($i, 3)\">$o</A><BR>"."\n" ;
}
#$cgi_data{ASearch} = "Search all" unless $cgi_data{ASearch} ;
#print "<H3> <A href=\"$ME?Email=$cgi_data{Email}$Link&Name=all\">All Photos</A> <INPUT type=text name=ASearch value=\"Search all\" size=12></H3>\n" ;
#print "<H3> <A href=\"$ME?Email=$cgi_data{Email}$Link&Name=all\">All Photos</A> </H3>\n" ;
}

else{
print "<A href=\"$ME?Email=$cgi_data{Email}$Link$Where&ALL=0\"> Click here to see your $PhotoFilm</A><P>" ;
print "<P><A href=\"$ME?Email=$cgi_data{Email}$Link&ALL=1\"><IMG src=\"/imgs/cgi/All.png\" alt=\"All Photos\"></A><BR>\n" ;
$i = 0 ;
for(@alltree){ $i++ ; $Group = $Event = $n = '' ;
	$n = $1 if s/(.*)\t// ;
	$n .= $1 if s/^( +)// ;
	(my $o = $_ )=~ s/_/ /g ;
	my $ofull = $o ;
	#(my $ofull = (my $o = $_ )=~ s/_/ /g) ;
	#(my $ofull = $o = $_) =~ s/_/ /g ;
	$o = CHARISO(htmlchar($o)) ;
	my $add = "..." if length($o) > 28 ;
	$o = charhtml(ISOCHAR(substr($o, 0, 28))).$add ;
	$o =~ s/None // ; $ofull =~ s/None // ; 
	$o = "<small>$o</small>" ;
	#print '&nbsp;&nbsp;&nbsp' while ($n =~ s/^  // and $j++) ;
	#ECHO 2, $_ ;
	if($n =~ s/^    //){ print '&nbsp;&nbsp&nbsp;&nbsp&nbsp;&nbsp;' if $_ ; $o = "<B>$o</B>" if charhtml($cgi_data{"Event"}) eq $_ and $ALL ;$Event = htmlchar("Event=$_") ; $Event=~ s/&/%26/g ; $Event = "&".charhtml($Event) ; $_ = $cgi_data{"Country_Type"} ; $Group = "&Group=$cgi_data{Group}" }
	#if($n =~ s/^    //){ print '&nbsp;&nbsp&nbsp;&nbsp&nbsp;&nbsp;' if $_ ; $Event = "&Event=$_" ; $_ = $cgi_data{"Country_Type"} ; $Group = "&Group=$cgi_data{Group}" }
	elsif($n =~ s/^  //){ print '&nbsp;&nbsp&nbsp;' ; $o = "<B>$o</B>" if charhtml($cgi_data{"Group"}) eq $_ and $ALL ;$Group = "&Group=$_" ; $_ = $cgi_data{"Country_Type"} }
	else{$o = "<B>$o</B>" if charhtml($cgi_data{"Country_Type"}) eq $_ and $ALL ;}
	#if($n =~ s/^  //){ print '&nbsp;&nbsp' ; $Group = "&Group=$_" ; $_ = $cgi_data{"Country_Type"} }
	#if($n =~ s/^  //){ print '&nbsp;&nbsp' ; $Event = "&Event=$_" ; $_ = $cgi_data{"Country_Type"} ; $Group = $cgi_data{Group} }
	#$img = "subdir" ;
	#$img = "plain" if $n <= 20 ;
	$img = "plain" ;
	#s/ /\%20/g ;
	next if $Event eq "&Event=" ;
	$link = "Country_Type=$_$Group$Event$Date" ;
	$link = htmlchar($link) ;
	#ECHO $link ;
	#my $border = 1 if 
	my $border = 0 ;
  print "<IMG SRC=\"/imgs/cgi/$img.gif\" WIDTH=\"20\" HEIGHT=\"16\" BORDER = \"$border\" ALT = \"&#187;\" HSPACE=\"0\" VSPACE=\"0\"><A href=\"$ME?Email=$cgi_data{Email}$Link&I=0&ALL=1&$link\" title=\"$ofull ($n photos)\" onmouseover=\"msover($i) ; return true\" onmouseout=\"msout($i, 3)\">$o</A><BR>"."\n" ;
}
}
print "</TD><TD>\n" ;
}
if($cgi_data{Advanced}){
	print "<SELECT name=Size onChange=\"this.form.submit()\")>\n" ;
	for(Tiny, Thumbs, Small, Medium){ my $s = "selected" if $_ eq $Size ; print "  <OPTION value=$_ $s> $_\n" ; }
	print "</SELECT>\n" ;
	print "<SELECT name=Nphoto onChange=\"this.form.submit()\")>\n" ;
	for(5, 10, 20, 50, 100, 500){ my $s = "selected" if $_ eq $Nphoto ; print "  <OPTION value=$_ $s> $_ photos/page\n" ; }
	print "</SELECT>\n" ;

#$cgi_data{Advanced} = 1 if $cgi_data{Email} eq 'eelfgren@hotmail.com' ;
	print "<SELECT name=Compact onChange=\"this.form.submit()\")>\n" ;
	for(0, 1, 2, 3, 4, 9){ my $s = "selected" if $_ eq $Compact ; print "  <OPTION value=$_ $s> Compact: $_\n" ; }
	print "</SELECT>\n" ;
	if ($cgi_data{Email} eq 'eelfgren@hotmail.com'){
		print "<SELECT name=Quality onChange=\"this.form.submit()\")>\n" ;
		for(Bad, Good, Web, "."){ my $s = "selected" if $_ eq $Quality ; print "  <OPTION value=$_ $s> $_\n" ; }
		print "</SELECT>\n" ;
		$str = $cgi_data{Country_Type}.$cgi_data{Group}.$cgi_data{Event}.$cgi_data{Search} ;
		$str =~ s/'/'\\''/g ;
		($md5) = (`echo 'xyz$str'|md5sum` =~ /(\S{4})/) ;
		my $Country_Type = "Country_Type=$cgi_data{Country_Type}&" if $cgi_data{Country_Type} ;
		my $Group = "Group=$cgi_data{Group}&" if $cgi_data{Group} ;
		my $Event = "Event=$cgi_data{Event}&" if $cgi_data{Event} ;
		my $Search = "Search=$cgi_data{Search}" if $cgi_data{Search} ;
		print "<A href=\"/cgi/$ME?$Country_Type$Group$Event$Search&access=$md5\">Publish photos</A> " ;
		print "<A href=\"/cgi/send.cgi?$cgi_data{Email}/cgi/$ME?Country_Type=$cgi_data{Country_Type}&Group=$cgi_data{Group}&Event=$cgi_data{Event}$Search&access=$md5\">Send photos</A><BR>" ;
	}
	else{
		print "<BR>" ;
	}
}
if ($YSearch and !$cgi_data{access}){
	print "<P>Searched for <B>\"$YSearch\"</B> in " ;
	my $tName = ($ALL) ? "All photos" : "Your photos" ;
	my $tName2 = $cgi_data{Event} || $cgi_data{Group} || $cgi_data{Country_Type} || "" ;
	$tName .= " -- ".$tName2 if $tName2 ;
	$year =~ s/\\d\{4\}// ;
	$month =~ s/\\d\{2\}// ; $month = $months[$month-1] if $month ;
	$tDate = " -- ".$year." - ".$month if $month and $year ;
	$tDate = " -- ".$year.$month if !$tDate and ($month or $year) ;
	$tName .= $tDate if $tDate ;
	$tName =~ s/_/ /g ;
	print charhtml($tName),"<P>" ;
}
$i = 0 ;
#for("Country_Type", "Group", "Event"){$i++; $$_ = $cgi_data{$_} ; $$_=~s/_/ /g ; $$_=charhtml($$_) ; print "<H$i> $$_ </H$i>" if $$_}
#print "<H1> $cgi_data{Country_Type} </H1>" if ${Country_Type} ;
#print "<H2> $cgi_data{Country_Type} </H2>" if ${Group} ;
#print "<H3> $cgi_data{Country_Type} </H3>" if ${Event} ;
#$Nphoto = $cgi_data{Nphoto} || 20 ;
#$i = $cgi_data{I}||0 ;
#ECHO sort(@photos) ;
#ECHOA $cgi_data{Country_Type}, $cgi_data{Group}, $cgi_data{Event} ;
for(($i=$cgi_data{I}||0); $i<@photos; $i++){
#for(@photos[($i+1)..$i+20]){ $i++ ; $i = "0$i" if $i<10 ;
	for("Country_Type", "Group", "Event"){$$_=''}
	last if $i>=$Nphoto+($cgi_data{I}||0) ;
	$photos[$i] = htmlchar($photos[$i]) ;
	$_ = $photos[$i] ;
	if($Compact==9){
		($Photo) = /([^\t]*)/ ;
		($title = $_) =~ s/\t/ -- /g ;
		$title =~ s/\|/, /g ;
		print "<A href=\"show_one_photo.cgi?${tName}_$md5Name\&$time\&$Photo\" title=\"$title\"><IMG src=\"/imgs/cgi/photos/${tName}_$md5Name/$Size/$Photo\"></A>\n" ;
		#print "<A href=\"show_one_photo.cgi?${tName}_$md5Name\&$Photo\"><IMG src=\"/imgs/cgi/photos/${tName}_$md5Name/$Size/$Photo\"></A>\n" ;
		mkdir("../imgs/cgi/photos/${tName}_$md5Name") unless -d "../imgs/cgi/photos/${tName}_$md5Name";
		for my $size(Tiny,Thumbs,Small,Medium,Large){my $D = "../imgs/cgi/photos/${tName}_$md5Name/$size"; mkdir($D) unless -d $D ; symlink("../../../ALL_photos/$size/$Photo","$D/$Photo") unless -e "../imgs/cgi/photos/${tName}_$md5Name/$size/$Photo"} ;
	}
	else{
	split "\t", $photos[$i] ;
	push @_, '' if $photos[$i] =~ /\t$/ ;
	push @_, '' if $photos[$i] =~ /\t\t$/ ;
	#ECHO @_ ;
	#next ;
	($Photo, $Comment, $Country_Type, $Group, $Event, $People) = @_ if @_ == 6 ;
	($Photo, $Comment, $Group, $Event, $People) = @_ if @_ == 5 ;
	($Photo, $Comment, $Event, $People) = @_ if @_ == 4 ;
	($Photo, $Comment, $People) = @_ if @_ == 3 ;
	$People = charhtml($People) ;
	$diff = difftime($oldPhoto, $Photo) ;
	#print "<HR size=1 width=100%>" if $diff > 60*60*24*1 ;
	#print "<HR size=3 width=100%>" if $diff > 60*60*24*365 ; # 1 years
	#ECHO @_ ;
	#ECHO scalar(@_), ($Photo, $Country_Type, $Group, $Event, $People) ;
	$Group = 'Unsorted' if !$Group and @_ >= 5 ;
	$Event = 'Unsorted' if !$Event and @_ >= 4 ;
	next unless $Photo ;
	$People =~ s/\|$// ;
	@People = split /\|/, $People ; # TODO: Watch out for " "
	
	#"<A href=\"$ME?Email=$cgi_data{Email}&I=0&Name=all&Country_Type=$_$Group$Event$Date\" title=\"$n photos\">" ;
	$tCountry_Type = ($Country_Type) ? $Country_Type : $cgi_data{Country_Type} ;
	$tGroup = ($Group) ? $Group : $cgi_data{Group} ;
	$tEvent = ($Event) ? $Event : $cgi_data{Event} ;
	#$j=0;for("Country_Type", "Group", "Event"){$j++; $$_=~s/_/ /g; print "<H$j> <A href=\"$ME?Email=$cgi_data{Email}&I=0&Country_Type=$tCountry_Type&Group=$Group&Event=$Event&Date=$Date\" title=\"$n photos\">$$_</A> </H$j>\n" if $$_ and $$_ ne ${"old$_"}}
	#for("Country_Type", "Group", "Event"){(${"o$_"}=${"t$_"}) =~ s/_/ /g; ${"t$_"} = htmlchar(${"t$_"}); ${"t$_"} =~ s/&/%26/g ; ${"o$_"} = charhtml(${"o$_"})}
	for("Country_Type", "Group", "Event"){(${"o$_"}=${"t$_"}) =~ s/_/ /g; ${"t$_"} =~ s/&/%26/g ; ${"o$_"} = charhtml(${"o$_"})}
	$oCountry_Type =~ s/None // ;
	if ($Size eq "Tiny"){
		#if ($diff > 60*60*24*365 and $tEvent eq ${"oldEvent"}){print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"} # 1 year
		#if ($diff > 60*60*24*365){($Yr) = ($Photo =~ /(\d{4})/);print "<H".(1+$Compact).">$Yr</H".(1+$Compact).">"} # 1 year
		if ($diff > 60*60*24*365){($Yr) = ($Photo =~ /(\d{4})/);print "<H".(1+$Compact).">$Yr</H".(1+$Compact).">"} # 1 year
		elsif ($diff > 60*60*24*1 and $tEvent eq ${"oldEvent"}){print "&nbsp;&nbsp;&nbsp;"} # 1 day
	}
	else{
		#if ($diff > 60*60*24*365){print "<HR size=20 width=100%>"} # 1 year
		#if ($diff > 60*60*24*365){($Yr) = ($Photo =~ /(\d{4})/);print "<H".(1+$Compact).">$Yr</H".(1+$Compact).">"} # 1 year
		if (($Photo =~ /(\d{4})/)[0] != ($oldPhoto =~ /(\d{4})/)[0]){($Yr) = ($Photo =~ /(\d{4})/);print "<H".(1+$Compact).">$Yr</H".(1+$Compact).">"} # 1 year
		elsif ($diff > 60*60*24*1){print "<HR size=1 width=100%>"} # 1 day
	}
	#$tDate = "&Date=$Date" if $Date ;
	$tName = "&Name=$cgi_data{Name}" ;
	#$tName .= "ALL" if $ALL ;
	$tALL = "&ALL=1" if $ALL ;
	$H1 = 1+$Compact ; $H2 = 2+$Compact ; $H3 = 3+$Compact ;
	for(H1, H2, H3){$$_ = ($$_<5)? "H$$_" : "FONT size=".(9-$$_)}
	if ($tCountry_Type and $tCountry_Type ne ${"oldCountry_Type"}){
		@CT = split("//",$tCountry_Type) ;
		my $o ;
		print "<BR>" if $Compact == 4 and $diff <= 60*60*24*365 ;
		print "<$H1> " ;
		for my $tCT (@CT){
			print $o ; $o = "/" ;
			print ((!$cgi_data{access}&&"<A href=\"$ME?Email=$cgi_data{Email}$tALL$Link&I=0&".htmlchar("Country_Type=$tCT&Date=$tDate\" >")).charhtmlspace($tCT).(!$cgi_data{access}&&"</A>")) ;
			#print "/" if $tCT ne @CT[-1] ;
			}
		print " </$H1>\n" ;
	}
	if ($tGroup and $tGroup ne ${"oldGroup"}){
		#ECHO "test", @CT ;
		print "<BR>" if $Compact > 2 and $tCountry_Type eq ${"oldCountry_Type"};
		print "--" if $Compact == 4 ;
		print "<$H2> " ;
		@Gr = split("//",$tGroup) ;
		my $o ;
		my $i = 0 ;
		for my $tGr (@Gr){
			$tCT = $CT[$i] ;
			$i++ if $CT[$i+1] ;
			#$tCT = shift @CT ;
			print $o ; $o = "/" ;
			print ((!$cgi_data{access}&&"<A href=\"$ME?Email=$cgi_data{Email}$tALL$Link&I=0&".htmlchar("Country_Type=$tCT&Group=$tGr$tDate\" >")).charhtmlspace($tGr).(!$cgi_data{access}&&"</A>")) ;
			#print "/" if $tGr ne (split("//",$tGroup))[-1] ;
		}
		print " </$H2>\n" ;
	}
	#print "<$H1> ".(!$cgi_data{access}&&$tCountry_Type!~m+//+&&"<A href=\"$ME?Email=$cgi_data{Email}$tName$Link&I=0&".htmlchar("Country_Type=$tCountry_Type&Date=$tDate\" >"))."$oCountry_Type".(!$cgi_data{access}&&"</A>")." </$H1>\n" if $tCountry_Type and $tCountry_Type ne ${"oldCountry_Type"} ;
	#print "<$H2> ".(!$cgi_data{access}&&$tGroup!~m+//+&&$tCountry_Type!~m+//+&&"<A href=\"$ME?Email=$cgi_data{Email}$tName$Link&I=0&".htmlchar("Country_Type=$tCountry_Type&Group=$tGroup$tDate\" >"))."$oGroup".(!$cgi_data{access}&&"</A>")." <BR></$H2>\n" if $tGroup and $tGroup ne ${"oldGroup"} ;
	print "<$H3> <BR>".(!$cgi_data{access}&&$tGroup!~m+//+&&$tCountry_Type!~m+//+&&"<A href=\"$ME?Email=$cgi_data{Email}$tALL$Link&I=0&".("Country_Type=$tCountry_Type&Group=$tGroup&Event=$tEvent$tDate\" >"))."$oEvent".(!$cgi_data{access}&&"</A>")." <BR></$H3>\n" if (($tEvent and $tEvent ne ${"oldEvent"}) or ($tGroup and $tGroup ne ${"oldGroup"})) ;
	(my $title = $Photo) =~ s/(\d{4}-\d{2}-\d{2})_(\d{2})-(\d{2})-(\d{2}).*/$1 $2:$3:$4 -- / ;
	$title .= $Comment." -- " if $Comment ;
	$title .= join(", ", @People) ;
	(my $tName = $OrgName) ;
	$tName =~ s/ /_/g ;
	mkdir("../imgs/cgi/photos/${tName}_$md5Name") unless -d "../imgs/cgi/photos/${tName}_$md5Name";
	for my $size(Tiny,Thumbs,Small,Medium,Large){my $D = "../imgs/cgi/photos/${tName}_$md5Name/$size"; mkdir($D) unless -d $D ; symlink("../../../ALL_photos/$size/$Photo","$D/$Photo") unless -e "../imgs/cgi/photos/${tName}_$md5Name/$size/$Photo"} ;
	#print "<A href=\"ALL_photos/Medium/$Photo\" title=\"$title\"><IMG src=\"ALL_photos/$Size/$Photo\"></A>\n" ;
	my $oName = $tName ;
	$oName =~ s{\\}{%5c}g ;
	print "<A href=\"show_one_photo.cgi?${tName}_$md5Name\&$time\&$Photo\" title=\"$title\"><IMG src=\"../imgs/cgi/photos/${oName}_$md5Name/$Size/$Photo\"></A>\n" ;
	#print "<A href=\"../imgs/cgi/photos/${tName}_$md5Name/Medium/$Photo\" title=\"$title\"><IMG src=\"../imgs/cgi/photos/${tName}_$md5Name/$Size/$Photo\"></A>\n" ;
	#print "<A href=\"ALL_photos/Medium/$Photo\"><IMG src=\"ALL_photos/Tiny/$Photo\"></A>\n" ;
	print " " ;
	print "<P>" if $i%4 == 4 ;
	for("Country_Type", "Group", "Event"){${"old$_"}=${"t$_"} if ${"t$_"}}
	$oldPhoto = $Photo ;
	}
}
print "<P>\n" ;
#ECHO $i ;
#ECHO keys %cgi_data ;
$out = '' ;
for(keys %cgi_data){$out .= "&$_=".$cgi_data{$_} if $_ ne "I" and $_ and $cgi_data{$_}};
#$out .= 'Name=' if $ ;
#$out .= $tName ;
#ECHO $out ;
#ECHO $i, (@photos) ;
#ECHO $i, $Nphoto, $cgi_data{I} ;
#ECHO int($i/$Nphoto-1)*$Nphoto ;
if(@photos>$Nphoto){
print "<CENTER>\n" ;

if ($i > $Nphoto and @photos >= $i){
	print "<A href=\"$ME?$out&I=".(int(($i-1)/$Nphoto-1)*$Nphoto)."\"> \n" ;
	print "<IMG SRC=\"/imgs/cgi/PrevFrost3b.png\" border=0 onmouseover=\"mover(1)\" onmouseout=\"mout(1)\" alt=\"[Prev $Nphoto photos]\"></A>\n" ;
}
else{
	print '<IMG SRC="/imgs/cgi/PrevFrost3c.png">'."\n" ;
}
if ($i < @photos){
	print "<A href=\"$ME?$out&I=$i\">\n" if $i < @photos ;
	print "<IMG SRC=\"/imgs/cgi/NextFrost3b.png\" border=0 onmouseover=\"mover(2)\" onmouseout=\"mout(2)\" alt=\"[Next ".(((scalar @photos)-$i<$Nphoto)?(scalar @photos-int($i/$Nphoto)*$Nphoto):$Nphoto)." photos]\"></A>\n" ;
}
else{
	print '<IMG SRC="/imgs/cgi/NextFrost3c.png">'."\n" ;
}
print "</CENTER>" ;
}
print "Go to page: " if $Nphoto < @photos ;
#print "<A href=\"$ME?$out&I=".($i-$Nphoto*2)."\">[Prev $Nphoto]</A> \n" if $i > $Nphoto and @photos >= $i;
#print "<A href=\"$ME?$out&I=".(int(($i-1)/$Nphoto-1)*$Nphoto)."\">[Prev $Nphoto photos]</A> \n" if $i > $Nphoto and @photos >= $i;
#if(@photos>$Nphoto){for(0..int((@photos-1)/$Nphoto)){if($cgi_data{I}==$Nphoto*$_){print " ".($_*$Nphoto)."\n"}else{print " [<A href=\"$ME?$out&I=".($_*$Nphoto)."\">".($_*$Nphoto)."</A>] \n" }}}
#if(@photos>$Nphoto){for(0..int((@photos-1)/$Nphoto)){if($cgi_data{I}==$Nphoto*$_){print " ".($_)."\n"}else{print " <A href=\"$ME?$out&I=".($_*$Nphoto)."\">".($_)."</A> \n" }}}
{my $D=1;
#if(@photos>$Nphoto){for($_=0;$_<=int((@photos-1)/$Nphoto);$_+=$delta){if($cgi_data{I}==$Nphoto*$_){print " ".($_)."\n"}else{print " <A href=\"$ME?$out&I=".($_*$Nphoto)."\">".($_)."</A> \n"; $delta*=10 if $_%(10*$delta) == 0 and $_>1 and print "..." }}}}
#if(@photos>$Nphoto){for($_=0;$_<=int((@photos-1)/$Nphoto);$_+=$D){if($cgi_data{I}==$Nphoto*$_){print " ".($_)."\n"}else{print " <A href=\"$ME?$out&I=".($_*$Nphoto)."\">".($_)."</A> \n"; $D = 10**(length(abs($cgi_data{I}-$_))-1) }}}}
#if(@photos>$Nphoto){for($_=0;$_<=int((@photos-1)/$Nphoto);$_+=1){
#	$D = 10**(length(abs($cgi_data{I}/$Nphoto-$_)-1)-1) ; my $o=$_; $o="." if abs($cgi_data{I}/$Nphoto-$_) >= $D and $_%($D-0) ;
#	if($cgi_data{I}==$Nphoto*$_){print " <B>".($_)."</B>\n"}else{print " <A href=\"$ME?$out&I=".($_*$Nphoto)."\">".($o)."</A> \n"; }}}}
if(@photos>$Nphoto){for($_=0;$_<=int((@photos-1)/$Nphoto);$_+=1){
	$D = 10**(length(abs($cgi_data{I}/$Nphoto-$_)-1)-1) ; next if abs($cgi_data{I}/$Nphoto-$_) >= $D and $_%($D-0) ;
	if($cgi_data{I}==$Nphoto*$_){print " <B>".($_)."</B>\n"}else{print +($D>1 && $cgi_data{I}/$Nphoto-$_<0 &&"...")." <A href=\"$ME?$out&I=".($_*$Nphoto)."\">".($_)."</A> \n".($D>1 && $cgi_data{I}/$Nphoto-$_>0 &&"..."); }}}}
#print "<A href=\"$ME?$out&I=$i\">[Next $Nphoto]</A>\n" if $i < @photos ;
#print "<A href=\"$ME?$out&I=$i\"><img src=\"/imgs/cgi/next4.gif\" vspace=0 hspace=0 align=bottom alt=\"[Next ".(((scalar @photos)-$i<$Nphoto)?(scalar @photos-int($i/$Nphoto)*$Nphoto):$Nphoto)." photos]\"></A>\n" if $i < @photos ;
print "<P>\n" ;
$ZipName = (!$ALL) ? "Your-" : "All-" ;
$ZipName .= $cgi_data{Event} || $cgi_data{Group} || $cgi_data{Country_Type} || "photos" ;
$year =~ s/\\d\{4\}// ;
$month =~ s/\\d\{2\}// ; $month = $months[$month-1] if $month ;
$ZipDate = "-".$year."-".$month if $month and $year ;
$ZipDate = "-".$year.$month if !$ZipDate and ($month or $year) ;
$ZipName .= $ZipDate if $ZipDate ;
#$ZipDate = $cgi_data{year} unless $cgi_data{year} eq '\d{4}' ;
#ECHO $year, $month, $cgi_data{year}, $cgi_data{month}, $lDate ;
$ZipSearch = $YSearch || $ASearch ;
$ZipName .= "_Search-$ZipSearch" if $ZipSearch ;
$ZipName =~ s/ /_/g ;
#$ZipName =~ s/aa/a/g ;
$ZipName =~ s/['`^]//g ;
$ZipName =~ s/&/and/g ;
#ECHO $ZipName ;
#$ZipName = CHARISO($ZipName) ;
#print "<A href=\"zipit.cgi?${ZipName}&".join("&",map{$s=$_;$s=~s/\t.*//;$s}@photos)."\"> Download these ".(scalar @photos)." files</A>\n" ;
$Name =~ s/ /_/g ;
#ECHO $Name, $ZipName ;
(my $tName = $OrgName) ;
$tName =~ s/ /_/g ;
open F, ">>../imgs/cgi/photos/${tName}_$md5Name.hist" ;
#print F "${ZipName}&".join("&",map{$s=$_;$s=~s/\t.*//;$FileSize+=(-s "/home/elf/Photos/Conv/Large/$s"); $s}@photos) ;
print F "${ZipName}&".join("&",map{$s=$_;$s=~s/\t.*//;$FileSize+=(-s "../imgs/cgi/photos/${tName}_$md5Name/Large/$s"); $s}@photos) ;
#ECHOA $photos[0], $FileSize ;
$FileSize = int($FileSize/1024**2*10+1)/10 ;
#print F "\n" ;
$ENV{QUERY_STRING} =~ s/ /%20/g ;
print F " $ENV{QUERY_STRING} $ENV{REMOTE_ADDR} $time\n" ;
close F ;
$Utrop = "!" if $FileSize > 50 ;
$Utrop = "!!" if $FileSize > 200 ;
if($FileSize>500){ print ((scalar @photos)." photos")}
else{print "<HR><A href=\"zipit.cgi?${tName}_${md5Name}\"> <B>Download</B></A> all ".(scalar @photos)." photos with highest quality (file size: $FileSize MB$Utrop)\n" if @photos ;}
print "</TD></TR></TABLE>\n" ;
print "</FORM>\n" ;
$ENV{QUERY_STRING} =~ s/%/%25/g ;
$ENV{QUERY_STRING} =~ s/&/%26/g ;
print "<HR>\n" if $cgi_data{access};
#print "<CENTER>Comments or corrections? <A href=\"mailto:elf\@ludd.ltu.se?subject=Comment&body=http://erike.mine.nu/cgi/$ME%3F$ENV{QUERY_STRING}\">Mail me</A>!<BR></CENTER><BR>\n" ;
print "Comments or corrections? <A href=\"mailto:elf\@ludd.ltu.se?subject=Comment&body=http://elfweb.mine.nu/cgi/$ME%3F$ENV{QUERY_STRING}\">Mail me</A>!<BR>\n" unless $cgi_data{Public} ;
#print $ENV{QUERY_STRING} ;
@bot = LFILE("bot.html") ;
for(@bot){s/<I>.*<\/I><BR>.*/<I><B> $Quote2 <\/B><\/I><BR> $Auth2/}
#print @bot if $cgi_data{access} ;
#print @bot ;

print &HtmlBot;
# vi: set ts=2 sw=2 ai:
