#!/usr/local/bin/perl 
############################################################################
# Digitalt fotoalbum-program (fil 4 av 7)                                  #
# Version 3 av Anders Hultman 2002.                                        #
#                                                                          #
# Programmet låter dig ha flera separata fotoalbum med samma layout.       #
# För detaljerade anvisningar, se kommentarer i "album-lib" samt i koden.  #
#                                                                          #
# Programmet kräver Image::Size och Image::Magick                          #
############################################################################
use Image::Size; 
use Image::Magick; 
require 'album-lib';

&read_album;

if ($ENV{'QUERY_STRING'} eq "top") {
  &ht_start("top");
  print '<DIV ALIGN="CENTER">',"\n";
  print '<table width="100%" border="0">',"\n<tr><td>";

# Här hämtar jag in en snutt HTML-kod från filen "logo.include" för
# att visa min logotype och en länk till min förstasida.
# Avkommentera följande rader om du vill ha en liknande funktion.
# open (LOGO,"logo.include");
# print while (<LOGO>);
# close (LOGO);

  print '<td><td align="right">',
        '<a href="',$toc_url,'" target="_top">',
        "$toc_txt</a><br>\n";
  print '<tr><td valign="top" bgcolor="#CCCCFF" colspan="3"><big><strong>',
        "$bild[0]</strong></big>\n</table>";
  print "</BODY>\n</HTML>\n";
}
elsif ($ENV{'QUERY_STRING'} eq "toc") {
  &ht_start("toc");
  print '<DIV ALIGN="center">',"\n";
  for ($i = 1; $i <= $antal; $i++) {
    ($url,$bildtext,$serv) = &url_text($i);
    if ($serv eq "local") {
	  ($width,$height) = imgsize($ENV{'DOCUMENT_ROOT'}.$url); 
          $lill_url = $url;
	  $lill_url =~ tr/\//_/;
	  $lill_url = $ca_dir."/".$lill_url;
	  $bild_tid = (stat ($ENV{'DOCUMENT_ROOT'}.$url)) [9];
	  $lill_tid = (stat ($ENV{'DOCUMENT_ROOT'}.$lill_url)) [9];
	  if ($bild_tid > $lill_tid) {
	    if ($width > $height) {
		  $Nw = $small_width;
		  $Nh = int($Nw * $height / $width);
		} else {
		  $Nh = $small_width;
		  $Nw = int($Nh * $width / $height);
		}
        my($image, $x);
		$image = Image::Magick->new;
		$x = $image->Read($ENV{'DOCUMENT_ROOT'}.$url); warn "$x" if "$x";
		$x = $image->Scale(width=>$Nw,height=>$Nh); warn "$x" if "$x";
		$x = $image->Write($ENV{'DOCUMENT_ROOT'}.$lill_url); warn "$x" if "$x";
	  } else {
	    ($Nw,$Nh) = imgsize($ENV{'DOCUMENT_ROOT'}.$lill_url);
	  }
	  $link = "<IMG SRC=\"$lill_url\" WIDTH=\"$Nw\" HEIGHT=\"$Nh\" BORDER=\"1\">";
    } else {
      if ($bildtext) { $link = $bildtext; }
      else { $link = "Bild $i"; }
    }
    print '<A NAME="',$i,'"></A>';
    print '<A HREF="',$fr_url,"?",$i,'." TARGET="pic" CLASS="pic">',
          "$link</A><P>\n";
  }
  print "</DIV>\n</BODY>\n</HTML>\n";
}
elsif ($ENV{'QUERY_STRING'} =~ /^\d+\.$/) {
  $nr = $ENV{'QUERY_STRING'} + 0;
  &fel_404 if (($nr < 1) || ($nr > $antal));
  &ht_start("pic",$nr);
  print '<DIV ALIGN="RIGHT">',"\n";
  ($url,$bildtext,$serv) = &url_text($nr);
  if ($serv eq "local") {
    ($width,$height) = imgsize($ENV{'DOCUMENT_ROOT'}.$url);
  }
  print '<A HREF="',$en_url,"?",$nr,'" CLASS="pic" TARGET="_top">';
  print '<IMG SRC="',$url,'" ';
  print "WIDTH=\"$width\" HEIGHT=\"$height\" " if (($width) && ($height));
  print 'BORDER="1" ALIGN="LEFT"></A>',"\n";
  if ($nr < $antal) {
    print '<A HREF="',$fr_url,"?",$nr+1,'." TARGET="_self">',
      "<SMALL>Nästa bild</SMALL></A>";
  }
  print "<BR>\n";
  if ($nr > 1) {
    print '<A HREF="',$fr_url,"?",$nr-1,'." TARGET="_self">',
      "<SMALL>Förra bilden</SMALL></A>";
  }
  print "<BR><BR>\n",'<A HREF="',$al_url;
  print "#$nr" if ($nr > 1);
  print '">',"<SMALL>Alla på en sida</SMALL></A>";
  print "<BR>\n",'<A HREF="',"$en_url?$nr",
        '">',"<SMALL>En bild i taget</SMALL></A>";
# print "<BR>\n",'<A HREF="Javascript:bildtext();">',
#            "<SMALL>Föreslå ny bildtext</SMALL></A>";
  print '<BR CLEAR="ALL">',"\n</DIV>\n<BR>\n";
  print "$bildtext\n<P>\n" if ($bildtext);
  print "$bild[$antal+1]\n<P>\n" if ($bild[$antal+1]);
  print "</BODY>\n</HTML>\n";
}
else {
  if ($ENV{'QUERY_STRING'} =~ /^\d+$/) {
    $s_nr = $ENV{'QUERY_STRING'};
  } else { $s_nr = 1; }
  $t_nr = "#$s_nr" if ($s_nr > 1);
  $uri = $ENV{'SCRIPT_NAME'}.$ENV{'PATH_INFO'};
  print "Content-type: text/html\n\n";
  print "<HTML>\n<HEAD>\n<TITLE>$title</TITLE>\n</HEAD>\n";
  print '
<FRAMESET ROWS="85,*" BORDER="0" FRAMEBORDER="0">
  <FRAME SRC="',$uri,'?top" NAME="top" FRAMEBORDER="0" SCROLLING="no">
  <FRAMESET COLS="',$small_width+50,',*">
    <FRAME SRC="',"$uri?toc$t_nr",'" NAME="toc" FRAMEBORDER="0">
    <FRAME SRC="',"$uri?$s_nr.",'" NAME="pic" FRAMEBORDER="0">
  </FRAMESET>
</FRAMESET>
<NOFRAMES>
<BODY BGCOLOR="#FFFFFF">
Mitt fotoalbum: ',$title,'<P>
<A HREF="',$en_url,'">En bild i taget<BR>
<A HREF="',$al_url,'">Alla på en sida<BR>
</BODY>
</NOFRAMES>
</HTML>
';
}

exit(0);

sub ht_start {
  print "Content-type: text/html\n\n";
  print "<HTML>\n<HEAD>\n<TITLE>$title</TITLE>\n";
  print '<STYLE TYPE="text/css"><!--',"\n  A.pic { color: black; }\n",
        "  A.pic IMG { border-color: black; }\n--></STYLE>\n";
  print "<SCRIPT>\nfunction checkIsFrame() {\n";
# alert("window.name = " + window.name + " // framename = ", framename);
  print "  if (window.name == '$_[0]' && window.name!=window.top) { }\n";
  print "  else {\n    top.name='top';\n";
  print "    top.location.href='$fr_url";
  print "?$_[1]" if ($_[1] > 1);
  print "';\n  }\n}\n</SCRIPT>\n";
# if ($_[0] eq "pic") {
#   print "<SCRIPT>\nfunction bildtext(){\n",
#     "window.open('$bt_uri$ENV{'PATH_INFO'}?$ENV{'QUERY_STRING'}', ",
#     "'bt', 'height=200,width=380,toolbar=no,",
#     "resizable=no,scrolling=auto,location=no,directories=no,status=no,",
#     "menubar=no,scrollbars=no');\n}\n</SCRIPT>\n";
# }
  print '<BASE TARGET="_top">',"\n" if ($_[0] eq "pic");
  print "</HEAD>\n",'<BODY BGCOLOR="#FFFFFF" onLoad="checkIsFrame()">',"\n";
}
