[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> <P><P><a href="big$picture.html"><IMG SRC="I$picture) , qq(s.jpg" ALT="$picture" $size_small ></A> </td> <td valign = "top"> <P> <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> <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/ /\ \;/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( <P> <P> <P> <P> <P> <P> <P> <P> <P> <P> <P> <P> <P> <P> <P> <P> <P> <P> <P> <P> <P> <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