]> Pileus Git - ~andy/aweather-web/blob - html.ct
Bump copyright date
[~andy/aweather-web] / html.ct
1 <% #include "html.h" %>
2
3 <% /* Global functions */ %>
4 <% void print_header(void) { %>
5 Content-Type: text/html; charset=UTF-8
6
7 <% } %>
8
9 <% void print_nav(const page_t *page, const page_t *cur) { %>
10         <% const char *class = page == cur ? " class=\"cur\"" : ""; %>
11         <a href="<%= page->link %>"<%= class %>><%= page->name %></a>
12 <% } %>
13
14 <% void print_screen(char *name) { %>
15         <a href="screens/<%= name %>.png">
16                 <img src="screens/<%= name %>_s.jpg" alt="<%= name %>" class="screen" />
17         </a>
18 <% } %>
19
20 <% void print_page(const page_t *page) { %>
21 <?xml version="1.0" encoding="UTF-8"?>
22 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
23 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
24         <head>
25                 <title>AWeather<% if (page->name) printf(" - %s", page->name); %></title>
26                 <link rel="shortcut icon" href="images/aweather.ico" />
27                 <link href="data/global.css" rel="stylesheet" type="text/css" />
28                 <script type="text/javascript" src="data/global.js"></script>
29                 <meta http-equiv="X-UA-Compatible" content="IE=9" />
30                 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
31                 <meta name="keywords" content="weather, radar, nexrad, level-ii, virtual globe, grits, rsl" />
32                 <% if (page->desc) { %>
33                 <meta name="description" content="<%= page->desc %>" />
34                 <% } %>
35                 <meta name="google-site-verification" content="-SZkTpNRWHrpESTGNZ8Pshnz4zKbwfKv54NoavUKK_Y" />
36                 <meta name="msvalidate.01" content="CB7C94BBCD12714FDFF3D22415B1888A" />
37         </head>
38         <body>
39                 <div class="top">
40                         <a href="."><img class="logo" src="images/logo.png" alt="AWeather" /></a>
41                         <h1 class="title"><a href=".">AWeather</a></h1>
42                         <h1 class="subtitle"><a href="..">pileus.org</a></h1>
43                         <h2 class="nav">
44                                 <% for (int i = 0; header[i].link; i++) print_nav(&header[i], page); %>
45                                 <span class="sep"></span>
46                                 <% for (int i = 0; other[i].link;  i++) print_nav(&other[i],  page); %>
47                         </h2>
48                 </div>
49                 <div class="content">
50                         <!--
51                                 <p class="msg">This site is currently under construction</p>
52                                 <p class="msg" style="font-size:8pt; font-weight:normal;">
53                                   If I had an animated GIF of a guy with a shovel, I would put it here</p>
54                         -->
55                         <% page->print(); %>
56                         <div style="clear:both;"></div>
57                 </div>
58                 <p class="footer">
59                         Copyright © 2011-2013 Andy Spencer
60                         <% for (int i = 0; footer[i].link; i++) { %>
61                                 | <% print_nav(&footer[i], page); %>
62                         <% } %>
63                 </p>
64         </body>
65 </html>
66 <% } %>
67
68 <% /* Normal Pages */ %>
69 <% void print_about(void) { %>
70         <p class="intro">
71                 AWeather is a free/open source application which has been
72                 designed to integrate and visualize high-quality meteorological
73                 data using an interactive Virtual Globe interface suitable for
74                 a wide range of users including weather enthusiasts, academics,
75                 and professionals.
76
77                 It is designed to provide more information than is typically
78                 available from weather widgets and simple desktop applications.
79                 At the same time, it strives to be simpler and easier to use
80                 than existing meteorological software packages such as GEMPAK
81                 and IDV.
82
83                 Currently AWeather only displays data provided by the United
84                 States National Weather Service.
85         </p>
86         <hr />
87
88         <h2>Features</h2>
89         <div class="col">
90                 <h3>Working</h3>
91                 <ul>
92                         <li>High quality data sources<ul>
93                                 <li>Level-II archives</li>
94                                 <li>Conus NEXRAD imagery</li>
95                                 <li>Volume display of dBZ iso surfaces</li>
96                                 <li>Storm based and county based<br/>
97                                     warning/watch/advisory displays</li>
98                         </ul></li>
99                         <li>Virtual Globe base rendering<ul>
100                                 <li>Including terrain, satellite, and map imagery</li>
101                         </ul></li>
102                         <li>GPS tracking using GPSd (Linux only)</li>
103                         <li>Real-time and offline mode</li>
104                         <li>Auto-updating</li>
105                         <li>Fullscreen mode</li>
106                 </ul>
107         </div>
108         <div class="col">
109                 <h3>Planned</h3>
110                 <ul>
111                         <li>Additional data sources<ul>
112                                 <li>Surface data (temp., humidity, etc)</li>
113                         </ul></li>
114                         <li>Derived NEXRAD data<ul>
115                                 <li>Storm relative motion</li>
116                                 <li>Compost reflective</li>
117                                 <li>Echo tops</li>
118                         </ul></li>
119                         <li>Vertical cross sections</li>
120                         <li>Spotter network intergration</li>
121                         <li>Animation</li>
122                 </ul>
123         </div>
124
125         <div style="clear:both;"></div>
126         <h2>Licencing</h2>
127         <p>AWeather is free software licensed under the terms of the
128            <a href="http://www.gnu.org/licenses/gpl.html">GNU GPL</a>.
129            As such, it can be used by any individuals or organizations
130            without any license fees or royalties.</p>
131 <% } %>
132
133 <% void print_news(void) { %>
134         <!-- It's not really spring anymore :/ -->
135         <!-- <p class="quote">Now that it's spring again, progress on AWeather is continuing.</p> -->
136         <dl class="news">
137                 <dt>2013-01-28</dt>
138                 <dd>
139                         AWeather 0.8 released: <ul>
140                                 <li>Adds a compass rose to show (and reset) view rotations</li>
141                                 <li>Make radar labels clickable</li>
142                                 <li>Many performance and stability improvements</li>
143                         </ul>
144                 </dd>
145
146                 <dt>2012-12-11</dt>
147                 <dd>
148                         New Website!<ul>
149                                 <li>The Rose-Hulman Linux Users Group website
150                                     has been unavailable for some time so we have
151                                     moved on to a new and hopefully more stable server.
152                                     A mirror of the old RHLUG website is available at
153                                     <a href="http://rhlug.pileus.org/wiki/Main_Page">http://rhlug.pileus.org/</a></li>
154                                 <li>Due to the move, some of the site
155                                     infrastructure such as bug tracer and the
156                                     development wiki are unavailable
157                                 <li>These issues should be resolved shortly</li>
158                         </ul>
159                         New Mailing list!<ul>
160                                 <li>There is now an official mailing list for AWeather and other pileus.org projects as well:<br />
161                                     <a href="<%= MAIL_LIST %>"><%= MAIL_LIST %></a></li>
162                                 <li>An astoundingly empty archive is also available:<br />
163                                     <a href="<%= MAIL_ARCH %>"><%= MAIL_ARCH %></a></li>
164                         </ul>
165                 </dd>
166
167                 <dt>2012-02-16</dt>
168                 <dd>
169                         AWeather 0.7 released: <ul>
170                                 <li>Added a GPS plugin using
171                                     <a href="http://www.catb.org/gpsd/">GPSd</a><ul>
172                                     <li>Written by Adam Boggs and based on the
173                                         <a href="http://www.aircrafter.org/boggs/stormchasing/BrainStorm/">BrainStorm</a>
174                                         storm chasing tool</li>
175                                     <li>Linux only, or maybe Mac or Windows
176                                         if you're very very brave</li>
177                                 </ul></li>
178                                 <li>Detailed (but opaque) maps in the map plugin</li>
179                                 <li>Automatically save window size and position</li>
180                                 <li>Add toggle buttons for county-based and storm-based alerts</li>
181                                 <li>Miscellaneous bug fixes, including some long-standing rendering artifacts</li>
182                         </ul>
183                 </dd>
184
185                 <dt>2012-01-10</dt>
186                 <dd>
187                         AWeather 0.6.3 released: <ul>
188                                 <li>Added support for Mac OS X</li>
189                                 <li>Added an much improved <a href="manual">User Guide</a>,
190                                     written by Jason Holmes</li>
191                                 <li>Miscellaneous bug fixes</li>
192                         </ul>
193                         <span style="font-size: smaller; font-style: italic;">
194                                 (p.s. AWeather 0.6.2 doesn't exist, you never
195                                 heard of it, and neither have I)</span>
196                 </dd>
197
198                 <dt>2011-11-25</dt>
199                 <dd>
200                         AWeather 0.6.1 released: <ul>
201                                 <li>Added a Radar menu to quickly jump to a NEXRAD/WSR-88D site</li>
202                                 <li>Fixed a bunch of 64-bit bugs</li>
203                         </ul>
204                 </dd>
205
206                 <dt>2011-11-03</dt>
207                 <dd>
208                         AWeather 0.6 released: <ul>
209                                 <li>Added "Alerts" plugin using the
210                                     <a href="http://alerts.weather.gov/">NWS CAP</a> feed</li>
211                                 <li>Updated GTK+ libraries for Windows</li>
212                                 <li>Behind the scenes, mouse support in Grits
213                                     has been much improved</li>
214                         </ul>
215                         This release was a little bit faster than previous releases.
216                         Hopefully additional improvements to the alerts plugin
217                         can be made incrementally during the 0.x.x releases.
218                 </dd>
219
220                 <dt>2011-09-12</dt>
221                 <dd>
222                         AWeather 0.5.2 released: <ul>
223                                 <li>Added new desktop icons</li>
224                                 <li>Miscellaneous bug fixes</li>
225                         </ul>
226                         Improved organization of the <a href="<%= WIKI_INDEX %>">Wiki</a>
227                 </dd>
228
229                 <dt>2011-08-25</dt>
230                 <dd>
231                         AWeather 0.5.1 released: <ul>
232                                 <li>Bugfix release</li>
233                                 <li>Updated sat/map/elev to provide better data</li>
234                                 <li>First release with <a href="<%= DEBIAN_HOME %>">Debian</a>,
235                                                    and <a href="<%= UBUNTU_HOME %>">Ubuntu</a> packages</li>
236                         </ul>
237                 </dd>
238         </dl>
239         <p class="note">See also: <a href="oldnews">Older news</a>,
240                                   <a href="<%= GW_AWEATHER %>">gitweb</a></p>
241 <% } %>
242
243 <% void print_oldnews(void) { %>
244         &lt; <a href="news">News</a>
245         <dl class="news">
246                 <dt>2011-06-19</dt>
247                 <dd>
248                         AWeather 0.5 released: <ul>
249                                 <li>Support for volume rendering (isosurfaces)</li>
250                                 <li>Automatic updating</li>
251                                 <li>Fullscreen mode</li>
252                                 <li>Dropped GtkGLExt</li>
253                         </ul>
254                         Forked RSL:<ul>
255                                 <li>Added additional radars</li>
256                                 <li>Fixed lots of bugs</li>
257                                 <li>General code cleanup</li>
258                                 <li>Available from <a href="files/">files</a> directory
259                                     and <a href="<%= GW_RSL %>">git</a></li>
260                         </ul>
261                         <b>Update:</b> AWeather 0.5 is also compatible with the
262                         newly released RSL v1.41
263                 </dd>
264
265                 <dt>2011-06-13</dt>
266                 <dd>Started work on this new website. Lots of progress in AWeather as well:<ul>
267                         <li>Merged support for isosurfaces to the main branch (Finally!)</li>
268                         <li>Added an option to automatically refresh after a timeout</li>
269                         <li>New fullscreen mode</li>
270                 </ul></dd>
271
272                 <dt>2010-05-17</dt>
273                 <dd>AWeather 0.4.1:<ul>
274                         <li>Win32 fixes and improved debug support</li>
275                         <li>Fix bug with daylight savings time</li>
276                         <li>Function to clear old cache entries</li>
277                 </ul></dd>
278
279                 <dt>2010-05-14</dt>
280                 <dd>AWeather 0.4:<ul>
281                         <li>Conus radar images</li>
282                         <li>Multiple radars support</li>
283                         <li>Gentoo, Ubuntu, MS Windows and source packages are available</li>
284                 </ul></dd>
285
286                 <dt>2009-11-09</dt>
287                 <dd>AWeather 0.3.0 released, based on libgis but still rather
288                     buggy.</dd>
289
290                 <dt>2009-10-24</dt>
291                 <dd>AWeather 0.2.3 (maintenance release).<br/>
292                     Added a Application menu entry and a few build/runtime fixes.</dd>
293
294                 <dt>2009-09-02</dt>
295                 <dd>The source repository has been migrated to Git. A lot of
296                     progress is being made on libgis, which is now able to display
297                     a virtual globe using data from NASA servers.</dd>
298         </dl>
299 <% } %>
300
301 <% void print_manual(void) { %>
302         <div class="asciidoc">
303                 <% print_file("manual.inc"); %>
304         </div>
305 <% } %>
306
307 <% void print_screenshots(void) { %>
308         <p>
309                 AWeather provides a consistent user interface that allows the
310                 user to zoom in from a high level view of the entire Earth down
311                 to regional and mesoscale views.
312         </p>
313
314         <ul class="gallery">
315                 <li>
316                         <% print_screen("synop"); %>
317                         High level view using Grits
318                 </li>
319                 <li>
320                         <% print_screen("region"); %>
321                         Regional view over the midwest
322                 </li>
323                 <li>
324                         <% print_screen("meso"); %>
325                         Mesoscale view of a tornadic system
326                 </li>
327                 <li>
328                         <% print_screen("iso"); %>
329                         Close up showing a 52.5 dBZ isosurface
330                 </li>
331                 <li>
332                         <% print_screen("alert"); %>
333                         Current severe weather alerts for the CONUS
334                 </li>
335         </ul>
336 <% } %>
337
338 <% void print_download(void) { %>
339         <h2>Stable releases</h2>
340         <p class="note">
341                 While AWeather won't be considered stable until version 1.0,
342                 these are as close to stable as you can get until then
343         </p>
344         <ul>
345                 <li class="linux"><dl class="inline">
346                         <dt>Source code</dt>
347                         <dd>
348                                 <a href="files/aweather-<%= VERSION %>.tar.gz">aweather-<%= VERSION %>.tar.gz</a>,
349                                 <a href="../grits/files/grits-<%= VERSION_GRITS %>.tar.gz">grits-<%= VERSION_GRITS %>.tar.gz</a>,
350                                 <a href="files/rsl-1.40.tar.gz">rsl-1.40.tar.gz</a>
351                         </dd>
352
353                         <dt class="shown">Binaries</dt>
354                         <dd class="shown"><a href="javascript:show()">Show..</a></dd>
355
356                         <dt class="hidden">Gentoo</dt>
357                         <dd class="hidden"><span class="code">emerge sci-geosciences/aweather</span>
358                                 from the <a href="<%= GENTOO_HOME %>">Sunrise</a> overlay</dd>
359
360                         <dt class="hidden">Debian</dt>
361                         <dd class="hidden"><span class="code">apt-get install aweather</span>
362                                 from <a href="<%= DEBIAN_HOME %>">Debian</a> sid</dd>
363
364                         <dt class="hidden">Ubuntu</dt>
365                         <dd class="hidden"><span class="code">apt-get install aweather</span>
366                                 from <a href="<%= UBUNTU_HOME %>">Ubuntu</a> Oneiric,
367                                 or the <a href="<%= UBUNTU_PPA %>">AWeather PPA</a></dd>
368
369                         <dt class="hidden">Slackware</dt>
370                         <dd class="hidden">Included in <a href="<%= SLACKY_HOME %>">Slacky</a> 13.37</dd>
371
372                         <dt class="hidden">Arch</dt>
373                         <dd class="hidden">Available from the <a href="<%= ARCH_HOME %>">Arch User Repository</a></dd>
374
375                         <dt class="hidden">Mandriva</dt>
376                         <dd class="hidden">Available from Mandriva 2011</dd>
377                 </dl></li>
378                 <li class="windows"><dl class="inline">
379                         <dt>Windows</dt>
380                         <dd><a href="files/aweather-<%= VERSION_WIN %>-gtk.exe">aweather-<%= VERSION_WIN %>-gtk.exe</a>
381                                 (Use this unless you know what you're doing)</dd>
382
383                         <dt>Without GTK</dt>
384                         <dd><a href="files/aweather-<%= VERSION_WIN %>.exe">aweather-<%= VERSION_WIN %>.exe</a></dd>
385                 </dl></li>
386                 <li class="macos" style="padding-top: .8em; padding-bottom: .8em"><dl class="inline">
387                         <dt>Mac OS X</dt>
388                         <dd><a href="files/aweather-<%= VERSION_MAC %>.dmg">aweather-<%= VERSION_MAC %>.dmg</a>
389                                 (Requires 10.6 or newer)</dd>
390                 </dl></li>
391         </ul>
392
393         <h2>Unstable releases</h2>
394         <p class="note">Pre-releases, betas, and other hazardous software</p>
395         <div style="margin-left: 30px;">
396                 <p>Check out the <a href="files">files</a> directory for any potential updates</p>
397                 <p>Pre-releases are labeled with a -p0 and are mainly built for testing the Windows and Mac packages</p>
398         </div>
399
400         <h2>Development code</h2>
401         <p class="note">
402                 Development code is available from Git
403                 (and gitweb:
404                  <a href="<%= GW_AWEATHER %>">AWeather</a>,
405                  <a href="<%= GW_GRITS    %>">Grits</a>,
406                  <a href="<%= GW_RSL      %>">RSL</a>)
407         </p>
408         <div style="margin-left: 30px;">
409                 <div class="code">git clone <%= GIT_AWEATHER %></div>
410                 <div class="code">git clone <%= GIT_GRITS    %></div>
411                 <div class="code">git clone <%= GIT_RSL      %></div>
412         </div>
413         <p class="note left" style="margin-top: 1.5em;">
414                 Repositories for packaging and this website
415                 (and gitweb:
416                  <a href="<%= GW_PKG %>">Packaging</a>,
417                  <a href="<%= GW_WEB %>">Website</a>)
418         </p>
419         <div style="margin-left: 30px;">
420                 <div class="code">git clone <%= GIT_PKG %></div>
421                 <div class="code">git clone <%= GIT_WEB %></div>
422         </div>
423 <% } %>
424
425 <% void print_development(void) { %>
426         <!-- Open source mumbo jumbo.. -->
427
428         <p class="note" style="clear: both;">
429                 The AWeather <a href="<%= WIKI_INDEX %>">development wiki</a>
430                 is the main resource for development material.
431         </p>
432
433         <h2>Bug report and feature requests</h2>
434         <div style="margin-left: 30px;">
435                 <p><a href="<%= BUG_LIST %>">List of current issues</a></p>
436                 <p><a href="<%= BUG_NEW  %>">Add a new issue</a></p>
437         </div>
438
439         <h2>How to contribute?</h2>
440         <ul>
441                 <li>Locate or host Meteorological and Geospatial data feeds</li>
442                 <li>Maintain a Mac OS, Windows, or Linux installer</li>
443                 <li>Test AWeather and submit bug reports</li>
444                 <li>Make better logo!</li>
445         </ul>
446
447         <h2>Architecture Overview</h2>
448         <ul>
449                 <li>Built on top of GObject and GTK+</li>
450                 <li>Uses the <a href="grits">Grits</a> "Virtual Globe" library<ul>
451                         <li>Handles most of the graphics work using OpenGL for rendering</li>
452                         <li>Provides some other generic functionality, such as data access</li>
453                         <li>Also provides the plugins API used by AWeather</li>
454                 </ul></li>
455                 <li>AWeather itself is a front-end for Grits along with a
456                     bundle of weather related plugins</li>
457         </ul>
458
459         <h2>Building AWeather</h2>
460         <p class="note">See the <a href="<%= WIKI_INSTALL %>">install</a>
461                 wiki page for more details</p>
462         <ul>
463                 <li>AWeather has direct dependencies on Grits, RSL, among other things</li>
464                 <li>Currently building and running AWeather requires the
465                     exact same version of Grits to be installed<br />
466                     (This may change in the near future as the software stabilizes)</li>
467                 <li>The <a href="download">Downloads</a> page has information
468                     on accessing the AWeather source code repositories</li>
469         </ul>
470 <% } %>
471
472 <% void print_grits(void) { %>
473         <p>
474                 Grits is a Virtual Globe library developed along side AWeather,
475                 but desigend to be usable by other program as well.
476
477                 It is differentiated from other Virtual Globes such as Google
478                 Earth, NASA World Wind, and KDE Marble in that it is developed
479                 primairily as a library that is used by other programs, such as
480                 AWeather, rather than providing it's own user interface.
481         </p>
482
483         <ul class="gallery">
484                 <li>
485                         <% print_screen("grits"); %>
486                         Grits without any plugins
487
488                 </li>
489                 <li>
490                         <% print_screen("plugins"); %>
491                         Satellite and Environment plugins
492                 </li>
493                 <li>
494                         <% print_screen("terrain"); %>
495                         Elevation plugin showing a mountain
496                 </li>
497         </ul>
498 <% } %>
499
500 <% void print_rsl(void) { %>
501         <h2>Radar Software Library</h2>
502         AWeather has at times needed a custom version of the
503         <a href="<%= RSL_WEB %>">TRMM Radar Software Library</a>
504         for accessing Level-II radar files. However, most of the changes have
505         since been incorporated into RSL Version 1.41, which can also be used
506         with AWeather. Some remaining changes exist though and are mostly
507         related to code organization and compiler warnings.
508
509         <h2>Download</h2>
510         <div class="col">
511                 <h3>NASA/TRMM version</h3>
512                 <ul>
513                         <li><a href="<%= RSL_WEB %>">TRMM RSL Website</a></li>
514                         <li><a href="<%= RSL_FTP RSL_TAR %>"><%= RSL_TAR %></a></li>
515                 </ul>
516         </div>
517         <div class="col">
518                 <h3>AWeather's version</h3>
519                 <ul>
520                         <li><a href="files/rsl-1.40.tar.gz">rsl-1.40.tar.gz</a></li>
521                         <li><a href="<%= GW_RSL %>">Gitweb</a></li>
522                         <li><div class="code">git clone <%= GIT_RSL %></div></li>
523                 </ul>
524         </div>
525 <% } %>
526
527 <% /* Footer Pages */ %>
528 <% void print_contact(void) { %>
529         <h1>Contact</h1>
530         <p class="note">Questions? Comments? Trouble compiling AWeather?</p>
531         <dl class="inline small">
532                 <dt>Lists</dt>
533                 <dd><a href="<%= MAIL_LIST %>">Mailing list</a> |
534                     <a href="<%= MAIL_ARCH %>">Archived messages</a></dd>
535                 <dt>Bugs</dt>
536                 <dd><a href="<%= BUG_LIST %>">Issue Tracker</a> (sign in to add a new issue)</dd>
537                 <dt>IRC</dt>
538                 <dd>#pileus@irc.freenode.net</dd>
539         </dl>
540 <% } %>
541
542 <% /* Special Pages */ %>
543 <% void print_index(void) { %>
544         <p class="intro">
545                 AWeather is a free real-time weather data viewer designed for weather enthusiasts.
546                 AWeather is not a weather widget/dockapp that displays a pre-computed forecast.
547                 It is designed to be an easy to use program that integrates a
548                 variety of meteorological data in simple unified interface;
549                 see the <a href="about">about</a> page for more details.
550         </p>
551         <hr />
552         <div style="float: left">
553                 <h2 style="margin-top: 0;">Features:</h2>
554                 <ul style="float: left;">
555                         <li>Detailed Level-II NEXRAD radar<ul>
556                                 <li>3D volume rendering</li>
557                                 <li>Dual-pole support</li>
558                         </ul></li>
559                         <li>Online and offline modes<ul>
560                                 <li>Data caching</li>
561                                 <li>Automatic updating</li>
562                         </ul></li>
563                         <li>Warning/Watch/Advisory display</li>
564                         <li>GPS tracking and logging</li>
565                         <li>Surface and map overlays</li>
566                         <li>Terrain rendering</li>
567                 </ul>
568         </div>
569         <div style="float: left; margin-left: 20px;">
570                 <% print_screen("stormbased"); %>
571                 <div style="text-align: center; margin-right: 25px;">
572                         AWeather showing storm based warnings<br />
573                         on top of Level-II radar imagery
574                 </div>
575         </div>
576         <a href="download" class="download" style="float: right;">
577                 <span>AWeather</span>
578                 <span>Download Version <%= VERSION %></span>
579                 <img src="images/dl-arrow.png" alt="Download" />
580         </a>
581         <p style="text-align: center;"><%= VERSION_DESC %></p>
582 <% } %>
583
584 <% void print_notfound(void) { %>
585         <h1>Error 404 - Page Not found!</h1>
586         <br />
587         <p>This page does not exist!
588         <p>If Andy screwed up, feel free to <a href="contact">tell him</a>,
589            otherwise, go away</p>
590 <% } %>
591
592 <% void print_sitemap(const page_t **pages) { %>
593 <?xml version='1.0' encoding='UTF-8'?>
594 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
595         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
596         xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
597                             http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
598         <% for (int i = 0; pages[i];         i++) { %>
599         <% for (int j = 0; pages[i][j].link; j++) { %>
600         <% if  (pages[i][j].prio >= 0) { %>
601         <url>
602                 <loc><%% "%s%s", PREFIX, pages[i][j].link %></loc>
603                 <priority><%% "%3.1f", pages[i][j].prio %></priority>
604         </url>
605         <% } } } %>
606 </urlset>
607 <% } %>