Colophon

Pictures were generally scanned in at 120 pixels per inch. Graphic Converter was used to trim the scans and produce thumbnails at 40% of scale. A custom-written mac-perl script (see below) was used to produce ALL the pages. Arrays and hashes in the script provided the order of the pictures in the tables, the definitions of pages with beginning and ending text, wrote the navigation bars, and generally allowed rewriting the HTML quickly and easily... after the script was written!

[Costa Rica] [ Our Guide, Johnny ] [Hotel Don Carlos] [Poas and Iruzu Volcanos] [ Church of the Black Madonna ] [Lankaster Botanical Garden] [Rain Forest at Tortuguero] [Bananas] [Ram Luna] [Arenal Volcano] [Canopy Tour at Eco Lodge] [Colophon]




#!perl -w
{ #start up stuff 
use Carp ();
local $SIG{__WARN__} = \&Carp::cluck;
use strict;
use Config;
use Config qw(myconfig config_sh config_vars);
use File::Basename;
$| = 1;

# if ( $Config{'osname'} =~ /^macos/i ) { os_mac(); } 
sub os_mac { 
  my( $cmdLine, @args );
  $cmdLine = &MacPerl::Ask( "Enter command line options:" );
  require "shellwords.pl";
  @args = &shellwords( $cmdLine );
  unshift( @ARGV, @args );
}

my ($app, $path) = fileparse($0);
print "Running $app under $Config{'osname'} from directory '$path'."
 , "\n\nLibrary paths:\n", join ("\n" , @INC )   
# , "\n\nwith arguments: \n", join ("\n" , @ARGV )
 , "\n\n" 
 ;
 
} # end of start up stuff 

use Image::Size 'html_imgsize' ;
use HTML::Entities ;


use vars qw($pic_dir $html_dir $pics %pages @order $picture $page $oldpage %used 
  $picture_number $this_page %imgs);
  
$pic_dir = "big:costa_rica:new" ; $html_dir = "$pic_dir:html" ;
$pic_dir = "mwjw:other:costa_rica:new" ; $html_dir = "$pic_dir" ;

ℴ 
sub order {

# defines the order that pictures are displayed (linear) while %pages defines how to divide into pages 

@order = qw(
   101 99 98  01  02  
     
   105 900 191 102 106 91  110 
   
   108 97  03  04  05  06  07  08  09   10  11  12  13 
 
   43 14 95 15 57 16  17  18  19  53  54  55  56 103 104 
   
   20  21  22 94 23  
 
   24 69 25  26  
   
   27    28  29  30  31  32  33 52 34  35  36  107
 
   37  38  39  40  41  42       46   48  

   109 112 113 1101 111 
 
   114 115 116 1161 44  45 117  51   67 118 119 120  68    78   121 122 123
 
124  125 126 79  80  81  82  83  84  85  86  87  88    90  911  127 128 89               
             ) ;
             
#print join("  \n",@order ) ;

} ;

&images ;

sub images { 
%imgs = (       '01' => qq(Barbara and Coates.) ,
         '02' => qq(Mike and Ruth Anne.) ,
         '03' => qq(On the patio at the Hotel Don Carlos.) ,
         '04' => qq(Watching a performance in the town square.) ,
         '05' => qq(The Church in the town square.) ,
         '06' => qq(A stained glass window.  There was obviously great 
pride expressed in every community through their Church. ) ,
         '07' => qq(In the garden at the side of the Church. ) ,
         '08' => qq(A tower for defense of the town.  The architect 
just couldn't get it right-  here, the windows funnel in gunfire onto 
the defenders.) ,
         '09' => qq(Another immaculately kept Church.  When driving 
away from this Church, two kids held a rope across the street, 
and then we were politely asked for a donation for the Church.  We 
saw this fund-raising technique a few other times!) ,
         '10' => qq(A fruit store, selling from the window, and 
showing Agave flowers...) ,
         '11' => qq(Peace Waterfall.) ,
         '12' => qq(On the trail that goes under the waterfall.) ,
         '13' => qq(Looking out past the waterfall towards the bridge 
where the first photo was taken.) ,
         '14' => qq(Downwind of Poas Volcano, the hillsides are 
denuded by the acidic toxic gases.) ,
         '15' => qq(A view into the main active crater of Poas.  The 
clouds and fog above lifted somewhat at times, but the thick steam 
rising out of the crater was continuous.) ,
         '16' => qq(Ruth Anne's telephoto lens got this good view into 
the crater.  Steam is rising off a pile of volcanic ash.  Behind is a 
rainwater lake, a milky blue due to suspended particles of sulfur.) ,
         '17' => qq(We walked to another crater on Poas, now inactive, 
overgrown, and filled by a lake.  At first, the clouds were too thick 
to see anything.) ,
         '18' => qq(But the steam blew aside, giving a good view of the lake.) ,
         '19' => qq(We stopped at a very nice restaurant during the 
drive back, and the Chef came out to chat.) ,
         '191' => qq(Johnny is sitting in the middle, at a great restaurant he took us to on the way back from Poas Volcano.) ,
         '20' => qq(The Church of the Black Madonna.) ,
         '21' => qq(Inside the Church.) ,
         '22' => qq(Donations of jewelry made at the Shrine to the 
Black Madonna.) ,
         '23' => qq(Lunch after the Church.  This is the coffee making 
afterwards; a filter bag holds the ground coffee above the pot, and 
the hot water is poured through.  We bought similar bags in the 
market later- they are quite traditional.) ,
         '24' => qq(Papyrus growing in a pool.) ,
         '25' => qq(A Mot-Mot bird in the garden.) ,
         '26' => qq(Construction of this Church was abandoned after 
set-backs caused by a series of earthquakes.  Not an auspicious start 
for a Church; they took the hint.) ,
         '27' => qq(Approaching Tortuguero by air, the rainforest was 
living up to its name.) ,
         '28' => qq(Fresh water canals at Tortuguero, with the 
Caribbean Coast visible a few hundred meters away at the top of the 
picture.) ,
         '29' => qq(Bones at the Exhibit Hall, jaguar, shark, and turtle.) ,
         '30' => qq(Where turtles come to nest, in season.) ,
         '31' => qq(Jim is holding the National flower of Costa Rica, 
from a small tree.  It had an amazing bundle of red stamens, about 15 
cm long, inside those long yellow sepals.) ,
         '32' => qq(One of a troop of White-faced Capuchins.) ,
         '33' => qq(Mike spotted this basilisk.) ,
         '34' => qq(An outsized jungle relative of our Jack-in-the-Pulpit.) ,
         '35' => qq(Howler monkeys.) ,
         '36' => qq(After the boat ride, we had a drink where the road 
ended at the canal.) ,
         '37' => qq(Bananas, protected from insects with a wrapping.) ,
         '38' => qq(The road was a bit rough at times.  Johnny said 
this was good road compared to the trip to Monte Verde- which we 
decided not to try!) ,
         '39' => qq(Women sorting bananas- cattle feed, domestic, or 
export- which then are washed.) ,
         '40' => qq(Men packing the export-quality bananas.) ,
         '41' => qq(Bananas slowly floating from the sorters to the packers.) ,
         '42' => qq(Packing a truck with domestic-grade bananas. We 
brightened up many a day with our amazement at commonplace 
activities.) ,
         '43' => qq(Our entrance pass at Poas.) ,
         '44' => qq(Arenal Volcano with our cottage in the foreground.) ,
         '45' => qq(Ruth Anne at the cottage.) ,
         '46' => qq(A banana sorting and packing plant.) ,
         '48' => qq(Export boxes.) ,
         '51' => qq(Mike and Johnny perched on an outcropping in a rockfield from one of Arenal's eruptions.) ,
         '52' => qq(Basilisk.) ,
         '53' => qq(Rainbow after lunch.) ,
         '54' => qq(left rainbow.) ,
         '55' => qq(right rainbow- notice it is a double, at lower right.) ,
         '56' => qq(composite of rainbow.) ,
         '57' => qq(Crater at Poas as the steam blew aside, revealing a pool.) ,
         '67' => qq(A local artist near the hot springs resort, now a rich man.) ,
         '68' => qq(Lunch: roasted chicken, guacamole, beans, ... plantains with cheese? ) ,
         '69' => qq(Admiring epiphytes at Lankaster Gardens.) ,
         '78' => qq(Coatis being fed on the road near Arenal.  Pizote in Spanish.) ,
         '79' => qq(Zipping between platforms in the Canopy tour at the Eco Lodge.) ,
         '80' => qq(A guide waiting for Jim's arrival.) ,
         '81' => qq(Michele coming down the wire.) ,
         '82' => qq(Sliding uphill, right?) ,
         '83' => qq(Clipping Jim onto safety after his slide.) ,
         '84' => qq(The rain forest canopy seen from a platform.) ,
         '85' => qq(Ruth Anne flies through the air with the greatest of ease.) ,
         '86' => qq{A palm (note the spathe) harbors a lot of life.} ,
         '87' => qq(Freeman rappels out of the canopy.) ,
         '88' => qq(Another double rainbow.) ,
         '89' => qq(We review pictures at Winterthur.),
         '90' => qq(Johnny's van with Jim in front at Arenal.),
         '900' => qq(Johnny's van with Jim in front at Arenal.),
         '91' => qq(Johnny explains the driving for the next leg of our trip.),
         '911' => qq(Johnny explains the driving for the next leg of our trip.),
         '94' => qq(Crown of the Black Madonna, under the Church.) ,
         '95' => qq("You are here" at the Poas Volcano.) ,
         '97' => qq(Jim and Michele on the patio.) ,
         '98' => qq(Freeman and Lois) ,
         '99' => qq(Jim and Michele) ,
          '101' => qq(Around the table at dinner our first night.),
          '102' => qq(Mike and Johnny on the bridge at Peace Falls.),
          '103' => qq(Freeman near Iruzu.),
          '104' => qq(Mike near Iruzu.),
          '105' => qq(Johnny with Cafe Rey coffee.),
          '106' => qq(Johnny at the airport during the rain delay before we flew to Tortuguero.),
          '107' => qq(A monkey... squirrel?),
          '108' => qq(Hotel Don Carlos.  Bigger than it looks, very nice.),
          '109' => qq(Enjoying the view over San Jose, up in the cloud forest where Johnny used to work.),
          '110' => qq(Johnny and his honey at Ram Luna.),
          '1101' => qq(Johnny and his honey at Ram Luna.),
          '111' => qq(The view of San Jose from Ram Luna.),
          '112' => qq(Ram Luna had entertainment.),
          '113' => qq(The buffet at Ram Luna.),
          '114' => qq(Spices at the central market in San Jose.  We bought a blend for rice, and a coating for fish.  Fun back at home.),
          '115' => qq(Flowers at the central market.),
          '116' => qq(Cashew fruit, from a street vendor.  The red fruit above the nut is edible, eaten as is.  An acquired taste, I believe... it left an aftertaste that reminded me of other wild fruits, like an unripe persimmon.  The nut is fascinating- just one is held in a husk below the red fruit.  It is toxic before being roasted- Johnny said even deadly.),
          '1161' => qq(Closeup of cashew fruit.),
          '117' => qq(We left the horses and walked to a lava field.  The white patches on the mountain are steam.),
          '118' => qq(Artist near Tabacon Hot Springs Resort.),
          '119' => qq(The main pool at Tabacon.  A great hot springs resort, with hot and cool streams running through, heated by the volcano.  You can sit under a ledge, and the hot stream pounding onto your neck and shoulders is like a strong massage.),
          '120' => qq(Orchids in the gardens at Tabacon.),
          '121' => qq(Thinking ahead.  They do have a lot of rocks right now, but you never know.),
          '122' => qq(Arenal across a lava and ash field from the 1968 eruption.),
          '123' => qq(A young banana fruit at the stop for the botanical and butterfly gardens on the road around Lake Arenal.  Large stamens atop the fruit.),
          '124' => qq(The Canopy Adventure Group.  How many make it back?),
          '125' => qq(Peering down the cable to the next platform, high above the rain forest floor.),
          '127' => qq(On the Pacific coast, on our drive back to the airport to leave Costa Rica.),
          '128' => qq(There is still time to stop at the Auto Pollo for some great chicken roasted over coffee wood coals.),
          '126' => qq(Hey, no pushing!)
         );
} ;

&page_define ; 

sub page_define { %pages = ( '101' => { name => 'index.html' ,
                     title => qq(Costa Rica) , 
                     start => qq( This web site is a picture album of our recent trip to
                     Costa Rica.  Freeman organized an excellent introduction to the country,
                     using the travel guide from Moon.  We also got a tip about a good 
                     guide that a friend had used on another trip: <A HREF="montero.html">Johnny Montero</A>.  
                     Johnny was great, and he really added to our experience.  We recommend
                     him.<P>
                     
                      
                     First, our intrepid travellers; we departed from Maryland, Delaware, and
                     Pennsylvania through Philadelphia International Airport, changed planes in
                     Atlanta, and then flew into San Jose on February 19th.  <P>
                     
                     These pictures were taken at dinner in San Jose... a rogues gallery if I ever saw one.
                    
                      ) ,
                     finish => qq( It was everyone's first trip to Costa Rica.  High on the agenda 
                     were the natural wonders of this eco-tourism destination:  volcanoes, rain forest,
                     and other natural wonders, as well as good food, coffee, and friendly people. )
                     } 
      , '105' => { name => 'montero.html' ,
                     title => qq( Our Guide, Johnny ) ,
                     start => qq{ Johnny Montero was a great guide, and I put up this website mainly so that 
he could give a link to prospective customers to find out more about him.
Email me at <A HREF="mailto:mwest\@nyx.net">mwest\@nyx.net</A> if you want 
to hear it from the horse's 
mouth.  

<P>
Johnny is a native of Costa Rica, and shows the same pride in his country that we saw in many of the people.
And they have a lot to be proud of: no military, a very high literacy rate, a 
great climate, a society tolerant of different religions and races, and a strong economy.

<P>
Johnny spent a good deal of his youth in the USA, and is fluent in English.
He came back to his own country to live, and I can't say I blame him.
Now he works for himself as a guide and jack-of-all-trades, 
and he has a great work ethic.  He is polite, intelligent, and he was always ready
to tell us about his country, to answer questions, and to help make our vacation
truly special.  We never felt rushed, and he was truly gracious in helping
us get what we wanted.  I sense that he gets a lot of good "word-of-mouth"
advertising from his customers.  I just wanted to put some of that onto the web.

<P>



You can get in touch with Johnny by fax to his sister at
011-506-441-4682 or try his cell phone at 394-4217.  Of course, often
he is guiding a tour group.  As of now, he does not have email.
His address is (believe it or not, if you are fluent in Spanish) :  

<ADDRESS>
<PRE>
Johnny Montero AlFaro
Alajuela: Detros Antiga Fabrica Lizano
Centro America
Costa Rica
</PRE>
</ADDRESS>

 },
                     finish => qq{  }
                }
         , '108' => { name => 'day02.html' ,
                     title => qq(Hotel Don Carlos) ,
                     start => qq( While staying at the Don Carlos Hotel in San Jose, we planned to
                     see the nearby Poas and Iruzu Volcanoes.  The Don Carlos was very nice; spend the 
                     extra \$10 or so for the "Superior" rooms; they are a great luxury for just a few \$ more.  
                     The staff was 
                     very helpful, and the location is nice.  <P>
                     The next day we started our car trip to Poas Volcano, planning to see some sights on the
                     way.
                     
                      ) ,
                     finish => qq{ We had already learned one of the many ways that Johnny proved
                     indispensible.  As a driver!  The streets and roads are not well marked, but Johnny lives there,
                     has been giving tours for many years, and was great at pointing out our options- and getting us places!
                     He lived in the US for about 7 years, and is fluent in English. <P>
                     
                     <P>
                     The drivers are aggressive, but polite and happy at the same time.  It is rather "anything goes", but without
                     the road rage.  Johnny once commented that everyone is a friendly driver, and he couldn't 
                     understand why Costa Rica has a high traffic fatality rate.  I could! <P>
                     
                     We made up a joke.  In San Jose, the "Stop" signs ("Alto") often have arrows
                     beneath them pointing right or left to show the direction of one way streets.
                     But you would see people drive right through the intersections anyway.  So I said
                     that the arrows actually meant that there was GOING to be a REAL stop sign over that way...
                     
                     <P> 
                      
                     
                     }
                     }
      , '43' => { name => 'poas.html' ,
                     title => qq(Poas and Iruzu Volcanos) ,
                     start => qq{                     Although February is the dry season, we were getting unseasonable rains due to a
                     cold front "from the US" (the US is such a big, overbearing country that the Costa Ricans talk 
                     as if it is our weather...). We lucked out and had a good view of Poas, and a great rainbow
                     as well.  But would our luck hold? 
},
                     finish => qq{Iruzu was a bust- too rainy.  But the drive up was clear and interesting.}
                }
      , '24' => { name => 'lankaster.html' ,
                     title => qq(Lankaster Botanical Garden) ,
                     start => qq{ },
                     finish => qq{ }
                }
      , '27' => { name => 'tortuguero.html' ,
                     title => qq(Rain Forest at Tortuguero) ,
                     start => qq{We flew to Tortuguero, named after the "Turtle Men" who used to harvest
                     the green turtles that come out of the ocean to breed.  Rain delayed the puddle jumper 2 hours,
                     so our tour was a bit rushed. },
                     finish => qq{ }
                }
      , '37' => { name => 'bananas.html' ,
                     title => qq(Bananas) ,
                     start => qq{On the drive back, we saw banana plantations, processing stations, and 
                     small towns.},
                     finish => qq{ }
                }
      , '20' => { name => 'madonna.html' ,
                     title => qq( Church of the Black Madonna ) ,
                     start => qq{  },
                     finish => qq{  }
                }
      , '109' => { name => 'RamLuna.html' ,
                     title => qq(Ram Luna) ,
                     start => qq{Wednesday we took a short trip into the hills around San Jose.  
                     Johnny had tried to arrange horse-back riding, but due to a power outage at the farm,
                     the message did not get through.  Still, we got to see cloud forest and some great views.
                     That evening we had a opecial dinner at Ram Luna.
                  Ram Luna is a nice restaurant above the valley which holds San Jose.
                     On Wednesday night, they have a special show and buffet.  The entertainment includes a 
                     band, dancers, and elaborate costimes, all with a theme of Costa Rican traditions.
                     Ram Luna on Wednesday nights is a special destination for Costa Ricans and 
                     tourists alike. And the view of the city is spectacular. 
                      },
                     finish => qq{  }
                }
      , '114' => { name => 'Arenal.html' ,
                     title => qq(Arenal Volcano) ,
                     start => qq{We drove to Arenal mid-week, after visiting the Central Market.  We stayed at a small place near Fortuna; 4 cottages and the owner's place.
                     From the back porch you could see Arenal, and at night the red-hot boulders it ejected
                     would careen down the side, making a mini display of fireworks from this distance.},
                     finish => qq{  }
                }
      , '124' => { name => 'canopy.html' ,
                     title => qq(Canopy Tour at Eco Lodge) ,
                     start => qq{ This was our thrill ride, with great views of the rain forest tree tops. },
                     finish => qq{ We had a nice drive back on Monday.  I got to touch the waters of the Caribbean and the Atlantic in the space of seven days- from Tortuguero on the previous Monday, to our trip out.  }
                }
      , '00' => { name => '  .html' ,
                     title => qq(  ) ,
                     start => qq{  },
                     finish => qq{  }
                }

          ) ; 
}

foreach $picture (@order) {
  print "\nPicture $picture: " ;
  if ( defined($pages{$picture}) ) { #starting a new page
    if ($page++) { ## close the previous page
      &closepage ;
      } #finished closing the last page
    $this_page_index = "$picture" ; # remember the index of this page for closing! 
    print "\nStarting a new page for $picture... $pages{$picture}{name} \nPicture $picture: " ;
#    print "open >$html_dir:$pages{$picture}{name}\n" ; 
    $this_page = $pages{$picture}{name};


    open (PAGE , ">$html_dir:$pages{$picture}{name}")  or die $! ;
    print PAGE &header;
    print PAGE &navigation;
    print PAGE "\n<hr>\n";
    print PAGE qq($pages{$picture}{start}  \n<hr>\n
    <TABLE BORDER="0"  ALIGN=CENTER >
    ) ;
  }  # we just started the new page   
    # Get the size as "HEIGHT=X WIDTH=Y" for HTML generation
    $size_small = &html_imgsize("$pic_dir:I$picture".'s.jpg') or warn "$!\n" ;
    $size_large = &html_imgsize("$pic_dir:I$picture".'.jpg');
    # $size == "HEIGHT=40 WIDTH=60"


    open (BIGPAGE , ">$html_dir:big$picture.html")  or die $! ;
    print BIGPAGE qq(<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
	<TITLE>Costa Rica: Picture $picture</TITLE>
	<META NAME="generator" CONTENT="Perl">
<META name="description" content="A page in my on-line photo album of a trip to Costa Rica in February 2000, guided by Johnny Montero.">
<META name="keywords" content="Costa Rica Poas Iruzu Tortuguero Arenal Johnny Montero Rain Forest Cloud Forest">
</HEAD>
<BODY>
<A NAME="start"> </A>
<!--

Note: This HTML was generated by a perl progrom. If you want to change the HTML, CHANGE the program.

-->


);
;
    print BIGPAGE &navigation;
    print BIGPAGE qq(<hr> \n) ;

#print PAGE "\n* $picture * \n" ;
  print PAGE qq(<TR>\n<td align="right"><A NAME="$picture"> </A> &nbsp; <P><P><a href="big$picture.html"><IMG SRC="I$picture) , qq(s.jpg" ALT="$picture" $size_small ></A> </td> 
           <td valign = "top"> &nbsp; <P>  &nbsp; <P>) ;

  if ($picture_number++) { #we have a previous picture 
    $previous = $picture_number - 2 ; 
    if (defined($pages{$picture})) {  #we just changed pages 
      print PAGE qq( <A HREF="$pages{$last_page_index}{name}#$order[$previous]">[Previous]</A>) ;
      print BIGPAGE qq( <A HREF="big$order[$previous].html">[PREVIOUS]</A> ) ;
      print BIGPAGE qq( <A HREF="$pages{$last_page_index}{name}#$order[$previous]">[previous]</A>) ;
    }
    else {
      print PAGE qq( <A HREF="#$order[$previous]">[Previous]</A>) ;
      print BIGPAGE qq( <A HREF="big$order[$previous].html">[PREVIOUS]</A>) ;
      print BIGPAGE qq( <A HREF="$pages{$this_page_index}{name}#$order[$previous]">[previous]</A>) ;
    } 
  }
  if (defined($used{$picture}) ) {print "*********Reusing $picture!  **************\n" ;}
#  else {$used{$picture} = $picture_number ; }   # check for this below! 
  print PAGE qq( <A HREF="big$picture.html">[BIG]</A> ) ;
  print BIGPAGE qq( <A HREF="$pages{$this_page_index}{name}#$picture">[small]</A> ) ;
  
  if (defined($order[$picture_number]) and defined($pages{$order[$picture_number]})) { #the next picture changes page 
      print PAGE qq( <A HREF="$pages{$order[$picture_number]}{name}#start">[Next]</A>) ;
      print BIGPAGE qq( <A HREF="$pages{$order[$picture_number]}{name}#start">[next]</A>) ;
      print BIGPAGE qq( <A HREF="big$order[$picture_number].html">[NEXT]</A>) ;
    }
  elsif (defined($order[$picture_number])) {
    print PAGE qq( <A HREF="#$order[$picture_number]">[Next]</A> ) ;
      print BIGPAGE qq( <A HREF="$pages{$this_page_index}{name}#$order[$picture_number]">[next]</A> ) ;
      print BIGPAGE qq( <A HREF="big$order[$picture_number].html">[NEXT]</A>) ;
  } 
  else { print "Last picture, no next one! We processed $picture_number. \n";}

    if (defined($pages{$picture})) {  #we just changed pages 
    print BIGPAGE qq| <HR> $pages{$picture}{start}  \n<hr> | ;
    
    }


  print BIGPAGE qq(<P> $imgs{$picture} <P>) ;  
  print BIGPAGE qq( <IMG SRC="I$picture.jpg" ALT="$picture" $size_large > <P> ) ; 

  if ($picture_number>1) { #we have a previous picture 
    $previous = $picture_number - 2 ; 
    if (defined($pages{$picture})) {  #we just changed pages 
      print BIGPAGE qq( <A HREF="big$order[$previous].html">[PREVIOUS]</A> ) ;
      print BIGPAGE qq( <A HREF="$pages{$last_page_index}{name}#$order[$previous]">[previous]</A>) ;
    }
    else {
      print BIGPAGE qq( <A HREF="big$order[$previous].html">[PREVIOUS]</A>) ;
      print BIGPAGE qq( <A HREF="$pages{$this_page_index}{name}#$order[$previous]">[previous]</A>) ;
    } 
  }
  if (defined($used{$picture}) ) {print "*********Reusing $picture!  **************\n" ;}
  else {$used{$picture} = $picture_number ; }
  print BIGPAGE qq( <A HREF="$pages{$this_page_index}{name}#$picture">[small]</A> ) ;
  
  if (defined($order[$picture_number]) and defined($pages{$order[$picture_number]})) { #the next picture changes page 
      print BIGPAGE qq( <A HREF="$pages{$order[$picture_number]}{name}#start">[next]</A>) ;
      print BIGPAGE qq( <A HREF="big$order[$picture_number].html">[NEXT]</A>) ;
    }
  elsif (defined($order[$picture_number])) {
      print BIGPAGE qq( <A HREF="$pages{$this_page_index}{name}#$order[$picture_number]">[next]</A> ) ;
      print BIGPAGE qq( <A HREF="big$order[$picture_number].html">[NEXT]</A>) ;
  } 


  print BIGPAGE "\n<hr>\n";
  print BIGPAGE &navigation;
  print BIGPAGE &footer;
  close BIGPAGE ; 
  
  print PAGE qq(<P> &nbsp; <p>
           $imgs{$picture} <P> </td>\n</tr>\n) ;



  }   # remember to close last one
$page++;
&closepage ; 
  close PAGE ;

print "We never used these pictures: \n" ; 
foreach $picture (sort keys %imgs) {
  unless (defined($used{$picture}) )  {print "$picture: $imgs{$picture}\n" ;}
  }
  
# make colophon

open COLOPHON , ">$pic_dir:colophon.html";
print COLOPHON qq| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
        <TITLE>Colophon</TITLE>
        <META NAME="generator" CONTENT="BBEdit 5.0">
</HEAD>
<BODY>
<H1 ALIGN="center">Colophon</H1>
Pictures were generally scanned in at 120 pixels per inch.  
<A HREF="http://www.lemkesoft.com/">Graphic Converter</A>
was used to trim the scans and produce thumbnails at 40% of scale.  
A <A HREF="http://www.dca.net/cgi-bin/cgiwrap/westmj/impress">custom-written</A> 
<A HREF="http://www.macperl.com/">mac-perl</A> script (see below) was used 
to produce ALL the pages.  Arrays and hashes in the script provided the order of the pictures 
in the tables, the
definitions of pages with beginning and ending text, wrote the navigation bars, and 
generally allowed rewriting the HTML
quickly and easily... after the script was written!

| ;

print COLOPHON "<HR>",&navigation,"<HR><PRE>\n\n\n";

open PERL , "<$pic_dir:a_site.pl" ;

while (<PERL>) {
&encode_entities($_);
print COLOPHON ;
}
 ;

print COLOPHON qq| \n\n\n</pre> <HR><HR>

Proudly brought to you by <A HREF="http://www.dca.net/cgi-bin/cgiwrap/westmj/impress">Mike West</A>.
</BODY>
</HTML>|;

close COLOPHON ;

  
print "\nDone!\n" ;

sub header {
qq(<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
	<TITLE>$pages{$picture}{title}</TITLE>
	<META NAME="generator" CONTENT="Perl">
<META name="description" content="A page in my on-line photo album of a trip to Costa Rica in February 2000, guided by Johnny Montero.">
<META name="keywords" content="Costa Rica Poas Iruzu Tortuguero Arenal Johnny Montero Rain Forest Cloud Forest">
</HEAD>
<BODY>
<A NAME="start"> </A>
<!--

Note: This HTML was generated by a perl program. If you want to change the HTML, CHANGE the program.

-->

<H2 ALIGN="center">$pages{$picture}{title}</H2>
<HR>

);
}

sub navigation {
  if (defined($navigation)) {return $navigation};
  my ($this, $no_wrap) ;
  $navigation = qq{<P align=center> } ;
  foreach $this (@order) {
    if (defined($pages{$this})) {
      $no_wrap = $pages{$this}{title} ; $no_wrap =~ s/ /\&nbsp\;/g ;
      $navigation .= qq|  [<A HREF="$pages{$this}{name}">$no_wrap</A>] | ;
      }
  }
  $navigation .= qq( <A HREF="colophon.html">[Colophon]</A> </p>) ;
   return $navigation ;
}
sub footer {
qq(
 &nbsp; <P>
  &nbsp; <P>
   &nbsp; <P>
    &nbsp; <P>
     &nbsp; <P>
      &nbsp; <P>
       &nbsp; <P>
        &nbsp; <P>
         &nbsp; <P>
          &nbsp; <P>
           &nbsp; <P>
 &nbsp; <P>
  &nbsp; <P>
   &nbsp; <P>
    &nbsp; <P>
     &nbsp; <P>
      &nbsp; <P>
       &nbsp; <P>
        &nbsp; <P>
         &nbsp; <P>
          &nbsp; <P>
           &nbsp; <P>
</BODY>
</HTML>
)
;
}

sub closepage { ## close the previous page
#      print "\nand closing the page.(at new page = '$pages{$picture}{name}' oldpage = '$pages{$this_page_index}{name}' picture = '$picture')\n" ;
      print "\nand closing the page. oldpage = '$pages{$this_page_index}{name}'\n" ;
      print PAGE qq(\n</TABLE>\n<hr>\n $pages{$this_page_index}{finish}  \n<hr>\n ) ;
    if (defined($picture) and defined($pages{$picture}{name})) {
         print PAGE qq|\n<P align=center> <A HREF="$pages{$picture}{name}#start">[Next Page: $pages{$picture}{title}]</A> <hr>\n|;
         }
      print PAGE &navigation;
      print PAGE &footer;
      $last_page_index = $this_page_index ; 
    } #finished closing the last page
 




Proudly brought to you by Mike West.