Index: /trunk/Ohana/doc/www/Configure.in
===================================================================
--- /trunk/Ohana/doc/www/Configure.in	(revision 3902)
+++ /trunk/Ohana/doc/www/Configure.in	(revision 3902)
@@ -0,0 +1,8 @@
+# place the target location here; last value is used
+# cfht values:
+ROOT = /Instruments/Elixir
+WWW  = /h/www/cfhti/Instruments/Elixir
+
+# kawelu values:
+ROOT = /eugene/idx
+WWW  = /var/www/kiawe/eugene/idx
Index: /trunk/Ohana/doc/www/Makefile
===================================================================
--- /trunk/Ohana/doc/www/Makefile	(revision 3902)
+++ /trunk/Ohana/doc/www/Makefile	(revision 3902)
@@ -0,0 +1,15 @@
+include Configure
+
+all: idx install
+
+idx: 
+	mkidx html
+
+install:
+	rsync -auvzC html/ $(WWW)
+
+clean:	
+	rm -f `find . -name "index.idx"`
+	rm -f `find . -name "*.html"`
+	rm -f `find . -name "*~"`
+	rm -f `find . -name "#*"`
Index: /trunk/Ohana/doc/www/html/Elixir-DB/detrend.htm
===================================================================
--- /trunk/Ohana/doc/www/html/Elixir-DB/detrend.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/Elixir-DB/detrend.htm	(revision 3902)
@@ -0,0 +1,84 @@
+<meta name=file  content=detrend>
+<meta name=title content=detrend.db tools>
+<meta name=page  content=detrend>
+
+<table>
+<tr><td><b><tt> detregister (filename) [elixir options] </tt></b></td></tr>
+
+<tr><td> 
+
+Register a detrend image in the detrend database.  The image
+parameters are automatically loaded from the image header, but can be
+forced with command-line options if needed.  The database consists of
+a database table and a hierarchy of directories.  The registered image
+is copied to the directory structure, assigned an appropriate name
+based on the data type, and an entry added to the database table.
+Below, the command-line options are listed. The matched keyword define
+the header keywords used to automatically identify the values.
+Keywords starting with $ represent the configuration variables which
+provide abstract names to define the real keywords.  The idiosyncratic
+header filter name is converted to the Elixir internal filter name
+based on the filter name table $FILTER_LIST.
+
+<table>
+<tr><th> option               </th><th> equivalent keyword </th><th> description </th></tr>
+<tr><td> -time (start) (stop) </td><td> TV_START, TV_STOP  </td><td>
+<tr><td> -label (label)	      </td><td>	N/A		   </td><td>
+<tr><td> -ID (ID)	      </td><td>	N/A		   </td><td>
+<tr><td> -order (N)	      </td><td>	N/A		   </td><td>
+<tr><td> -type (type)	      </td><td>	$IMAGETYPE-KEYWORD </td><td>
+<tr><td> -ccd (ccdID)	      </td><td>	$CCDNUM-KEYWORD    </td><td>
+<tr><td> -exptime (seconds)   </td><td>	$EXPTIME-KEYWORD   </td><td>
+<tr><td> -filter (name)       </td><td>	$FILTER-KEYWORD	   </td><td>
+</table>
+</tr></td> 
+
+<tr><td><b><tt> detsearch [search options] [elixir options] </tt></b></td></tr>
+
+<tr><td> 
+
+Examine the contents of the detrend database, with options to filter
+the output.  
+
+<table>
+<tr><th colspan=2> options which limit the image selection </th></tr>
+<tr><td> -label (label)	       </td><td> select images by label </td><td>
+<tr><td> -ID (ID)	       </td><td> select images by ID    </td><td>
+<tr><td> -order (N)	       </td><td> select images by order </td><td>
+<tr><td> -type (type)	       </td><td> select images by type (FLAT, etc) </td><td>
+<tr><td> -mode (mode)	       </td><td> select images by mode (MEF, etc)  </td><td>
+<tr><td> -ccd (ccdID)	       </td><td> select images by CCD ID </td><td>
+<tr><td> -exptime (seconds)    </td><td> select images by exposure time </td><td>
+<tr><td> -filter (name)        </td><td> select images by filter </td><td>
+<tr><td> -time (time)          </td><td> select images for given point in time </td><td>
+<tr><td> -trange (start) (stop)</td><td> select images for given time range  </td><td>
+<tr><td> -entry (entry)        </td><td> select images by entry number </td><td>
+<tr><td> -match (number)       </td><td> select images by match number </td><td>
+<tr><td> -name (name)          </td><td> select images by name </td><td>
+<tr><td> -mosaic (filename)    </td><td> select images appropriate to given mosaic </td><td>                
+<tr><td> -image (file) (ccd) (mode)</td><td> select images appropriate to given CCD image </td><td>
+
+<tr><th colspan=2> options which modify the output format </th></tr>
+<tr><td> -tstop                </td><td> print stop time, not start time </td><td>
+<tr><td> -treg                 </td><td> print registration time, not start time </td><td>
+<tr><td> -ve                   </td><td> print SUCCESS / FAILURE on exit </td><td>
+<tr><td> -quiet                </td><td> do not print SUCCESS / FAILURE on exit </td><td>
+<tr><td> -fits (output)        </td><td> write ASCII FITS table (appropriate for CFHT-LS) </td><td>
+<tr><td> -binfits(output)      </td><td> write binary FITS table (can be used as database table) </td><td>
+<tr><td> -chipname             </td><td> provide chip-specific name for MEF entry (ie flat.fits[ccd00]) </td><td>
+
+<tr><th colspan=2> options which modify the behavior </th></tr>
+<tr><td> -select               </td><td> select 'best' detrend image, include complete path </td><td>
+<tr><td> -recipe               </td><td> select all detrend images in recipe for this filter </td><td>
+<tr><td> -h, --help            </td><td> list help information </td><td>
+<tr><td> -criteria             </td><td> list input criteria, not database entries </td><td>
+
+<tr><th colspan=2> options which modify the database table </th></tr>
+<tr><td> -delete, -del         </td><td> delete the selected images </td><td>
+<tr><td> -altpath add          </td><td> add selected images to altpath </td><td>
+<tr><td> -altpath del          </td><td> remove selected images from altpath </td><td>
+<tr><td> -altpath update       </td><td> update altpath value based on file existence </td><td>
+<tr><td> -modify               </td><td> modify selected database fields </td><td>
+</table>
+</tr></td> 
+
Index: /trunk/Ohana/doc/www/html/Elixir-DB/gastro.htm
===================================================================
--- /trunk/Ohana/doc/www/html/Elixir-DB/gastro.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/Elixir-DB/gastro.htm	(revision 3902)
@@ -0,0 +1,104 @@
+<meta name=file  content=gastro>
+<meta name=title content=gastro>
+<meta name=page  content=gastro>
+
+<p>
+The gastro program determines the astrometric transformation for an
+image based on the cmp/smp file.  This file contains both the table of
+object data and the complete image FITS header.  Using the header
+astrometric information as a starting point, gastro loads the
+reference astrometry objects appropriate for the region and determines
+the matching objects between the image and the reference.  These
+objects are used, with iteration to improve the sample, to determine
+the astrometric transformation with up to 3rd order polynomials.  
+
+<pre>
+gastro filtname.cmp
+options:
+  -h
+  -help
+  -v
+  -p (photcode)
+  -plot
+  -maglims
+  -nstars
+  -fx
+  -fy
+  -coords (ra) (dec)
+  -dump
+  -mdmp
+  -cdmp
+  -loneos
+
+gastro configuration variables:
+OFFSET_RADIUS     - max allowed offset in gcenter
+MIN_MATCHES       - min number of matched stars for linear fit
+MINIMUM_RADIUS    - target matching radius in gfit iterations
+MAX_ERROR         - maximum allowed error in solution
+MAX_NONLINEAR     - maximum angle between axes
+MAX_PRECISE       - unused?
+DEFAULT_RADIUS    - unused?
+
+ROUGH_ASTROMETRY  - source of initial astrometry terms
+
+CCD_PC1_1         - initial guess pc1_1
+CCD_PC2_2         - initial guess pc2_2
+CCD_PC1_2         - initial guess pc1_2
+CCD_PC2_1         - initial guess pc2_1
+ASEC_PIX          - initial guess arcsec / pix
+
+POLAR_ALIGNMENT   - provide polar alignment of telescope mount?
+POLAR_AXIS_RA     - RA of telescope polar axis
+POLAR_AXIS_DEC    - DEC of telescope polar axis
+RA_OFFSET         - RA offset
+DEC_OFFSET        - DEC offset (degenerate?)
+
+NFIELD            - select stars from region NFIELD x detector size
+NPOLYTERMS	  - number of orders to allow
+MMIN              - minimum magnitude of allowed star 
+ROT_ZERO          - zero of tested rotation range
+dROT              - rotation step size
+NROT              - number of rotation tests = 2NROT + 1
+GSCFILE           - name of HST GSC table file
+GSCDIR            - name of HST GSC data directory
+LONEOS_REGIONS    - table of location coordinates
+USNO_CDROM        - name of USNO data directory
+ASTRO_REFCAT      - reference catalog format to read
+CATDIR            - name of ptolemy database
+PHOTCODE_FILE     - table of photcodes 
+
+gastro2 configuration variables:
+OFFSET_RADIUS     - unused
+MIN_MATCHES	  - unused
+DEFAULT_RADIUS	  - unused
+MINIMUM_RADIUS	  -
+MAX_ERROR	  -
+MAX_NONLINEAR	  -
+MAX_PRECISE	  -
+CCD_PC1_1	  -
+CCD_PC2_2	  -
+CCD_PC1_2	  -
+CCD_PC2_1	  -
+ASEC_PIX	  -
+NFIELD		  -
+NPOLYTERMS	  -
+ROT_ZERO	  -
+dROT		  -
+NROT		  -
+POLAR_ALIGNMENT	  -
+GSCFILE		  -
+GSCDIR		  -
+2MASS_DIR         -
+POLAR_AXIS_RA     -
+POLAR_AXIS_DEC    -
+RA_OFFSET         -
+DEC_OFFSET        -
+LONEOS_REGIONS    - 
+USNO_CDROM        -
+ASTRO_REFCAT      - 
+CATDIR            - 
+ROUGH_ASTROMETRY  - 
+PHOTCODE_FILE     -
+GASTRO_MAX_NSTARS -
+
+</pre>
Index: /trunk/Ohana/doc/www/html/Elixir-DB/gcompare.htm
===================================================================
--- /trunk/Ohana/doc/www/html/Elixir-DB/gcompare.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/Elixir-DB/gcompare.htm	(revision 3902)
@@ -0,0 +1,21 @@
+<meta name=file  content=gcompare>
+<meta name=title content=gcompare>
+<meta name=page  content=gcompare>
+
+<p>
+The gcompare program determines compares two lists of objects with X,Y
+coordinates and prints the matched entries.  A radius of matched is
+given, and all pairs of objects between the two lists which lie within
+the given radius are printed.  The delta coordinates may also be
+optionally printer, or the unmatched objects in either the first or
+second list.  An offset for the center can be optionally applied.
+
+<pre>
+gcompare file1 Nx Ny file2 Nx Ny radius [options]
+options:
+ -d
+ -m
+ -n1
+ -n2
+ -c x y
+</pre>
Index: /trunk/Ohana/doc/www/html/Elixir-DB/imclean.htm
===================================================================
--- /trunk/Ohana/doc/www/html/Elixir-DB/imclean.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/Elixir-DB/imclean.htm	(revision 3902)
@@ -0,0 +1,24 @@
+<meta name=file  content=imclean>
+<meta name=title content=imclean>
+<meta name=page  content=imclean>
+
+<p>
+The imclean program converts the basic photometry output list from
+dophot, sextractor, or gophot, into a standard format for other Elixir
+subsystems, with both the table of object data and the complete image
+FITS header. 
+
+<pre>
+imclean filename.fits filename.obj filtname.cmp
+imclean -sex filename.fits filename.sx filename.smp
+options:
+  -h
+  -help
+  -v
+  -coords (ra) (dec)
+  -p (photcode)
+  -astrom (file)
+  -sex
+  -chad
+  -key KEYWORD VALUE
+</pre>
Index: /trunk/Ohana/doc/www/html/Elixir-DB/imreg.htm
===================================================================
--- /trunk/Ohana/doc/www/html/Elixir-DB/imreg.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/Elixir-DB/imreg.htm	(revision 3902)
@@ -0,0 +1,92 @@
+<meta name=file  content=imreg>
+<meta name=title content=imreg.db tools>
+<meta name=page  content=imreg>
+
+<h3> add information about gconfig variables used </h3>
+
+<table>
+<tr><td><b><tt> imregister (filename) [-split] [-noreg] [-v] [-needtype] [elixir options] </tt></b></td></tr>
+
+<tr><td> 
+
+Register an image in the imreg database.  The -split option tells
+imregister that a single CCD frame is one of multiple frames in a
+split image.  The -noreg option shows the processing information
+without updating the database table.  The -v turns on verbosity.  The
+-needtype requires the image type to be one of the known types to be
+registered.
+
+</tr></td> 
+
+<tr><td><b><tt> imsort (filename) [-split] [-noreg] [-v] [-needtype] [elixir options] </tt></b></td></tr>
+
+<tr><td> identical to 'imregister', but also send entries as
+appropriate to the imstats and ptolemy elixir fifos.  If -noreg is
+selected, the fifo entries are created without the imreg.db
+update. </tr></td>
+
+<tr><td><b><tt> showiminfo (filename) [-split] [-noreg] [-v] [elixir options] </tt></b></td></tr>
+
+<tr><td> list image information extracted from the header, as used to
+update imreg.  </tr></td>
+
+<tr><td><b><tt> imstatreg (fits) (stats) (sdat) [-split] [-noreg] [-v] [-needtype] [elixir options] </tt></b></td></tr>
+
+<tr><td> add image statistics (seeing, bias, sky) to the image entry
+in the imreg table.  The (fits) file need only contain the relevant
+header of the image (used to find the appropriate image in the table).
+The (stats) file consists of the values sky and bias for MEF and SPLIT
+images, while for other modes, there must be an addtional entry
+starting each line: CCD.  The meaning is undefined for SINGLE, and
+usually set to 0.  For CUBE it is the number of slices in the cube,
+while for SLICE, it is the slice entry.  </tr></td>
+
+<tr><td><b><tt> imstatreg -daemon [-v] [-status] [-kill] [-delay Nsec] [elixir options] </tt></b></td></tr>
+
+<tr><td> Start / Stop / Query the imstatreg daemon.  To facility the
+database I/O, imstatreg updates are written to a buffer table
+(imreg.reg.bfr), which is occasionally merged with the master table
+with the imstatreg daemon.The -delay option defines the frequency at
+which imstatreg -daemon updates the database table.  </tr></td>
+
+<tr><td><b><tt> imregtable (filename) [elixir options] </tt></b></td></tr>
+
+<tr><td> 
+merge the given imreg.db table with the current master table.
+</tr></td> 
+
+<tr><td><b><tt> imsearch </tt></b></td></tr>
+
+<tr><td> 
+search the imreg.db table for images, filterd by the options given in the arguments.  
+The table below lists all options to imsearch.
+
+<table>
+<tr><th colspan=2> options which limit the image selection </th></tr>
+<tr><td> [-type type]                 </td><td> limit by image type (BIAS, DARK, OBJECT, etc)         </tr></td> 
+<tr><td> [-mode mode] 		      </td><td> limit by image mode (SINGLE, SPLIT, MEF, CUBE, SLICE)	 </tr></td> 
+<tr><td> [-trange start stop/range]   </td><td> limit by date range (second argument may be an end date or a time range) </tr></td> 
+<tr><td> [-ccd name]		      </td><td> limit by CCD; use CCD ids, not sequence numbers (ccd00 not 00) </tr></td> 
+<tr><td> [-etime exptime] 	      </td><td> limit by exposure time (seconds)	 </tr></td> 
+<tr><td> [-filter name] 	      </td><td> limit by filter name	 </tr></td> 
+<tr><td> [-name string] 	      </td><td> limit by image name (matches substring of full image name) </tr></td> 
+<tr><td> [-proc t/f]		      </td><td> include only processed / unprocessed images (bias != 0)	 </tr></td> 
+<tr><td> [-dist t/f]		      </td><td> include only distributed images (table send to CADC)	 </tr></td> 
+<tr><td> </tr></td>
+				      	 	 	 
+<tr><th colspan=2> options which modify the output format </th></tr>
+<tr><td> [-treg] 		      </td><td> list the registered times, not exposure times </tr></td> 
+<tr><td> [-seq] 		      </td><td> print CCD sequence numbers, not IDs </tr></td> 
+<tr><td> [-pt] 			      </td><td> print the list in ptolemy input format </tr></td> 
+<tr><td> [-table] 		      </td><td> generate a complete ascii FITS table output </tr></td> 
+<tr><td> [-cadctable] 		      </td><td> generate the CADC raw table (one row per mosaic, includes mosaic IQ stats) </tr></td> 
+<tr><td> [-bintable]		      </td><td> generate a complete binary FITS table (can be used as new database) </tr></td> 
+
+<tr><th colspan=2> options which modify the database table </th></tr>
+<tr><td> [-delete] 		      </td><td> delete the selected images </tr></td> 
+<tr><td> [-modify (options)]	      </td><td> modify certain fields of the selected images </tr></td> 
+</table>
+
+</tr></td> 
+</table>
+
Index: /trunk/Ohana/doc/www/html/Elixir-DB/mkfringetable.txt
===================================================================
--- /trunk/Ohana/doc/www/html/Elixir-DB/mkfringetable.txt	(revision 3902)
+++ /trunk/Ohana/doc/www/html/Elixir-DB/mkfringetable.txt	(revision 3902)
@@ -0,0 +1,35 @@
+
+mkfringetable (layout) (output)
+
+'mkfringetable' generates a MEF FITS ASCII Table of fringe couples
+based on a simple template file.  The layout file defines the basic
+constraints of the fringe couple lists (filter, time range, ccds,
+etc), and identifies the files used for each CCD.  The output file is
+a MEF FITS file with one extension per CCD.  Each extension consists
+of a table with four columns: X_MIN, Y_MIN, X_MAX, Y_MAX.  An example
+layout file is given below.  The primary header unit of the FITS file
+contains the basic information of the CAMERA, FILTER, etc.  
+
+
+Example layout file:
+
+# layout file for mkfringetable
+
+FILTER   I
+CAMERA   megaprime
+TVSTART  1999/9/1
+TVSTOP   2010/1/1
+NCCD     12
+CCD00    00  CFH12K-I-CCD00-FringeCoord.reg
+CCD01    01  CFH12K-I-CCD01-FringeCoord.reg
+CCD02    02  CFH12K-I-CCD02-FringeCoord.reg
+CCD03    03  CFH12K-I-CCD03-FringeCoord.reg
+CCD04    04  CFH12K-I-CCD04-FringeCoord.reg
+CCD05    05  CFH12K-I-CCD05-FringeCoord.reg
+CCD06    06  CFH12K-I-CCD06-FringeCoord.reg
+CCD07    07  CFH12K-I-CCD07-FringeCoord.reg
+CCD08    08  CFH12K-I-CCD08-FringeCoord.reg
+CCD09    09  CFH12K-I-CCD09-FringeCoord.reg
+CCD10    10  CFH12K-I-CCD10-FringeCoord.reg
+CCD11    11  CFH12K-I-CCD11-FringeCoord.reg
+
Index: /trunk/Ohana/doc/www/html/Elixir-DB/photcode.htm
===================================================================
--- /trunk/Ohana/doc/www/html/Elixir-DB/photcode.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/Elixir-DB/photcode.htm	(revision 3902)
@@ -0,0 +1,5 @@
+<meta name=file  content=photcode>
+<meta name=title content=photcode>
+<meta name=page  content=photcode>
+
+Sorry!  The page you requested is not yet available.
Index: /trunk/Ohana/doc/www/html/Elixir-System/mkdetrend-perl.htm
===================================================================
--- /trunk/Ohana/doc/www/html/Elixir-System/mkdetrend-perl.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/Elixir-System/mkdetrend-perl.htm	(revision 3902)
@@ -0,0 +1,2 @@
+
+Sorry!  The page you requested is not yet available.
Index: /trunk/Ohana/doc/www/html/Elixir-System/mkfringe-perl.htm
===================================================================
--- /trunk/Ohana/doc/www/html/Elixir-System/mkfringe-perl.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/Elixir-System/mkfringe-perl.htm	(revision 3902)
@@ -0,0 +1,2 @@
+
+Sorry!  The page you requested is not yet available.
Index: /trunk/Ohana/doc/www/html/Elixir-System/postrun.htm
===================================================================
--- /trunk/Ohana/doc/www/html/Elixir-System/postrun.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/Elixir-System/postrun.htm	(revision 3902)
@@ -0,0 +1,58 @@
+<meta name=file  content=postrun>
+<meta name=title content=Elixir Postrun Systems>
+<meta name=page  content=Elixir Postrun Systems>
+
+The Elixir postrun system (<tt>elixir.postrun</tt>) manages the
+end-of-run processing of the calibration and science data.  The
+command <tt>elixir.postrun</tt> manages the stages of the processing.
+The elixir.postrun commands are as follows: <br><br>
+
+<tt>
+<table>
+<tr><td>elixir.postrun state               </td><td> check the current postrun status </td></tr>
+<tr><td>elixir.postrun update              </td><td> update the status, start the next stage </td></tr>
+<tr><td>elixir.postrun set (entry) (value) </td><td> set the state for a specific entry </td></tr>
+<tr><td>elixir.postrun (entry)             </td><td> run a specific entry </td></tr>
+</table>
+</tt>
+
+<p>
+The Elixir postrun system consists of a series of processing stages,
+illustrated by the command <tt> elixir.postrun state </tt>: <br><br>
+
+<tt>
+<table>
+<tr><td> imstats   </td><td> process the unprocessed entries in the imstats database </td></tr>
+<tr><td> mkdetrend </td><td> run the mkdetrend system to generate the detrend data </td></tr>
+<tr><td> mkfringe  </td><td> run the mkfringe system to generate the fringe data </td></tr>
+<tr><td> ptolemy   </td><td> run the science images through the ptolemy system </td></tr>
+<tr><td> standards </td><td> process the standard stars and generate zero-point information </td></tr>
+<tr><td> validate  </td><td> perform the image validation stages </td></tr>
+</table>
+</tt>
+
+<p>
+These stages must be performed in sequence, and the postrun system
+automatically enforces the sequencing.  At the beginning of a run,
+each of these stages are in the state 'init'.  At any stage, the
+command <tt>elixir.postrun update</tt> will attempt to identify the
+state of each of the processing stages, and run the first which is
+ready in the init state.  While stages are running, elixir.postrun
+will set their state to 'running', and as the stages finish, they are
+set to the value 'done'.  
+
+<p> In fact, the description above is an ideal, but in practice, the
+elixir.postrun script does not quite follow these rules.  For example,
+elixir.postrun will not run the mkdetrend or mkfringe systems; these
+must be run manually with the mkdetrend and mkfringe commands.  In
+addition, the mkfringe and ptolemy systems are required to be run in
+sequence by elixir.postrun, but these do not really require this
+sequencing: ptolemy can be run independently of mkfringe since ptolemy
+does not require the fringe frames.  
+
+<p> Furthermore, the error checking in the elixir.postrun system is
+not very well refined, and manual intervention is occasionally needed.
+It is possible, therefore, to set the state to appropriate values as
+needed with the elixir.postrun set (entry) (value) command.  Also, the
+elixir.postrun (entry) command can be used to run the specific stage
+manually.
Index: /trunk/Ohana/doc/www/html/developer/download.htm
===================================================================
--- /trunk/Ohana/doc/www/html/developer/download.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/developer/download.htm	(revision 3902)
@@ -0,0 +1,30 @@
+<meta name=file  content=download>
+<meta name=title content=Download Ohana>
+<meta name=page  content=download>
+
+<p>
+This page lists Ohana distributions which are available as complete
+tar packages.  There are different distributions representing
+different subsets of the Ohana collection of software.  The Mana
+distribution provides the libraries and components needed to compile
+the <em>mana</em> and <em>dvo</em> programs and their associated
+tools.  The Elixir distribution provides the complete set of Ohana
+tools used by the Elixir system at CFHT.  For <em>dvo</em> or the
+Elixir distribution, you will also need the Elixir configuration
+package.  Other library requirements for the complete Elixir include:
+
+<ul>
+<li> libjpeg 
+<li> libpng
+<li> the readline library
+<li> zlib
+<li> apache
+<li> flips (v.2)
+<li> sextractor
+<li> Xvnc
+</ul>
+
+<ul>
+<li><a href=download/mana-1.0.tgz>mana-1.0.tgz </a>
+<li><a href=download/elixir-ohana-1.2.tgz>elixir-ohana-1.2.tgz </a>
+<li><a href=download/elixir-config-1.2.tgz>elixir-config-1.2.tgz </a>
Index: /trunk/Ohana/doc/www/html/developer/includes.htm
===================================================================
--- /trunk/Ohana/doc/www/html/developer/includes.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/developer/includes.htm	(revision 3902)
@@ -0,0 +1,5 @@
+<meta name=file  content=includes>
+<meta name=title content=includes>
+<meta name=page  content=includes>
+
+Sorry!  The page you requested is not yet available.
Index: /trunk/Ohana/doc/www/html/developer/install.htm
===================================================================
--- /trunk/Ohana/doc/www/html/developer/install.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/developer/install.htm	(revision 3902)
@@ -0,0 +1,78 @@
+<meta name=file  content=install>
+<meta name=title content=Installling Ohana>
+<meta name=page  content=install>
+
+<p>
+The Elixir system consists of two main software packages: Ohana (main
+developer Eugene Magnier) and Flips (main developer Jean-Charles
+Cuillandre).  The Elixir system combines these two packages, along
+with other external software products, into a complete system
+providing many utilities and functions for image processing at CFHT
+and elsewhere.  This document describes how to install the Ohana
+portion of the Elixir system.  Ohana may be installed from CVS or from
+a distributed tar ball.  Within the Elixir development community, the
+Ohana source tree may be checked out of the Elixir CVS tree.  Ohana is
+also distributed as a tar ball to users outside of the Elixir
+development community.
+
+<p>
+1) Installing Ohana from source tar ball: <br><br>
+
+  un-gzip and untar:   <br><br>
+
+    <tt> > gunzip -c ohana.tgz | tar xvf - </tt></br></br>
+
+  enter the ohana top-level directory: <br><br>
+
+    <tt> > cd ohana</tt><br><br>
+
+  construct the input Configure file [1]: <br><br>
+
+    <tt> > configure</tt><br><br>
+
+  this step will note the binary installation path.  This should be
+  added to your PATH.  Next, compile the software: <br><br>
+
+    <tt> > make</tt><br><br>
+
+  install the software <br><br>
+
+    <tt> > make install</tt><br><br>
+
+<p>
+2) Installing Ohana from CVS (Developer's version): <br><br>
+
+  check out the ohana source tree: <br><br>
+
+    <tt> > setenv CVSROOT poma:/data/elixir2/srcdir/cvs</tt><br><br>
+    <tt> > cvs co ohana</tt><br><br>
+
+  enter the ohana top-level directory: <br><br>
+
+    <tt> > cd ohana</tt><br><br>
+
+  construct the input Configure file [1]: <br><br>
+
+    <tt> > configure</tt><br><br>
+
+  this step will note the binary installation path.  This should be
+  added to your PATH.  Next, compile the software: <br><br>
+
+    <tt> > make</tt><br><br>
+
+  install the software <br><br>
+
+    <tt> > make install</tt><br><br>
+
+<hr>
+<h3> Notes </h3>
+
+<p>
+[1] Ohana is configured for multiple architecture development, which
+is convenient for end users as well.  The libraries, include files,
+and programs, are all installed in directories with the architecture
+type appended: bin/linux, bin/sol, lib/linux, etc.  To take advantage
+of this multiple architecture organization when compiling, end users
+should arrange for the environment variable ARCH to be set based on
+the machine architecture, and for the PATH to depend on ARCH, rather
+than setting it to a fixed quantity.  
Index: /trunk/Ohana/doc/www/html/developer/kapa.htm
===================================================================
--- /trunk/Ohana/doc/www/html/developer/kapa.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/developer/kapa.htm	(revision 3902)
@@ -0,0 +1,5 @@
+<meta name=file  content=kapa>
+<meta name=title content=kapa>
+<meta name=page  content=kapa>
+
+Sorry!  The page you requested is not yet available.
Index: /trunk/Ohana/doc/www/html/developer/kii.htm
===================================================================
--- /trunk/Ohana/doc/www/html/developer/kii.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/developer/kii.htm	(revision 3902)
@@ -0,0 +1,5 @@
+<meta name=file  content=kii>
+<meta name=title content=kii>
+<meta name=page  content=kii>
+
+Sorry!  The page you requested is not yet available.
Index: /trunk/Ohana/doc/www/html/developer/libfits.htm
===================================================================
--- /trunk/Ohana/doc/www/html/developer/libfits.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/developer/libfits.htm	(revision 3902)
@@ -0,0 +1,5 @@
+<meta name=file  content=libfits>
+<meta name=title content=libfits>
+<meta name=page  content=libfits>
+
+Sorry!  The page you requested is not yet available.
Index: /trunk/Ohana/doc/www/html/developer/libohana.htm
===================================================================
--- /trunk/Ohana/doc/www/html/developer/libohana.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/developer/libohana.htm	(revision 3902)
@@ -0,0 +1,5 @@
+<meta name=file  content=libohana>
+<meta name=title content=libohana>
+<meta name=page  content=libohana>
+
+Sorry!  The page you requested is not yet available.
Index: /trunk/Ohana/doc/www/html/home.htm
===================================================================
--- /trunk/Ohana/doc/www/html/home.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/home.htm	(revision 3902)
@@ -0,0 +1,59 @@
+<meta name=file  content=home>
+<meta name=title content=Ohana User's Guide>
+<meta name=page  content=Ohana>
+
+<p>
+Ohana is the collection of programs written by Eugene Magnier which
+form a major portion of the Elixir software.  These pages document the
+user interface to the various Ohana programs.
+
+<p>
+Within the Ohana software system, there are several types of programs
+and program groups.  There are basic, independent C programs, groups
+of related C programs which address a common Elixir system, C programs
+which run as daemons, and C programs which provide an interactive
+command language environment.  There are also a number of perl, csh,
+and tcl scripts.  
+
+<p>
+The top-level of the Ohana software tree includes the Makefile, a
+system-dependent configuration file, and the directories src, bin,
+lib, and include.  Within the bin, lib, and include directories, there
+are subdirectories by computer architecture.  These allow a
+segregation of the architecture dependent binary files, and provide
+some flexibility for working will various types of hardware.  The
+Makefiles require the environment variable ARCH to be set to make
+complilation choices and to place the binaries in their appropriate
+locations.  The ohana user may choose to include this directory in
+their path, in which case they should define the variable in their
+resource files (.cshrc / .bashrc / etc) using the sample given in
+getarch, and set the pathname to the value ohana/bin/$ARCH, which will
+then correctly expand depending on what machine the user is one. An
+alternative is to treat the ohana tree as the program development
+tree, and to export the binaries to an architecture-dependent external
+location. 
+
+<p>
+Within the src directory are all of the program and library
+source-code subdirectories.  Many of the programs are contained within
+their own unique src subdirectory, but there are a few execeptions.
+First, the perl, csh, and tcl scripts are collected together in perl,
+csh, and tcl subdirectories.  Second, there are a variety of simple,
+small C-programs in the directory misc.  Third, there is a collection
+of related C programs which provide user interfaces to the Elixir
+databases.  These are collected together in the imregister-3.0
+subdirectory.
+
+<p>
+Each of the program and library subdirectories contain their own src,
+bin, and include directories.  When the programs are compiled, the C
+files in src are compiled to .o files with names which include the
+$ARCH value: src/foo.c -> src/foo.linux.o.  The output executable is
+written to the bin directory with a name which also includes the
+binary: bin/foo.linux.  These are then installed in the appropriate
+ohana/bin/ARCH directories with 'make install'.  In the case of the
+program directories which include multiple C programs, the make file
+takes commands of the form 'make program', 'make program.install',
+'make program.clean', etc, which perform the requested operation on
+the specific program.  The generic commands 'make' and 'make install'
+will operate on the complete collection of programs.
Index: /trunk/Ohana/doc/www/html/index.htm
===================================================================
--- /trunk/Ohana/doc/www/html/index.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/index.htm	(revision 3902)
@@ -0,0 +1,59 @@
+<meta name=file  content=home>
+<meta name=title content=Ohana User's Guide>
+<meta name=page  content=Ohana>
+
+<p>
+Ohana is the collection of programs written by Eugene Magnier which
+form a major portion of the Elixir software.  These pages document the
+user interface to the various Ohana programs.
+
+<p>
+Within the Ohana software system, there are several types of programs
+and program groups.  There are basic, independent C programs, groups
+of related C programs which address a common Elixir system, C programs
+which run as daemons, and C programs which provide an interactive
+command language environment.  There are also a number of perl, csh,
+and tcl scripts.  
+
+<p>
+The top-level of the Ohana software tree includes the Makefile, a
+system-dependent configuration file, and the directories src, bin,
+lib, and include.  Within the bin, lib, and include directories, there
+are subdirectories by computer architecture.  These allow a
+segregation of the architecture dependent binary files, and provide
+some flexibility for working will various types of hardware.  The
+Makefiles require the environment variable ARCH to be set to make
+complilation choices and to place the binaries in their appropriate
+locations.  The ohana user may choose to include this directory in
+their path, in which case they should define the variable in their
+resource files (.cshrc / .bashrc / etc) using the sample given in
+getarch, and set the pathname to the value ohana/bin/$ARCH, which will
+then correctly expand depending on what machine the user is one. An
+alternative is to treat the ohana tree as the program development
+tree, and to export the binaries to an architecture-dependent external
+location. 
+
+<p>
+Within the src directory are all of the program and library
+source-code subdirectories.  Many of the programs are contained within
+their own unique src subdirectory, but there are a few execeptions.
+First, the perl, csh, and tcl scripts are collected together in perl,
+csh, and tcl subdirectories.  Second, there are a variety of simple,
+small C-programs in the directory misc.  Third, there is a collection
+of related C programs which provide user interfaces to the Elixir
+databases.  These are collected together in the imregister-3.0
+subdirectory.
+
+<p>
+Each of the program and library subdirectories contain their own src,
+bin, and include directories.  When the programs are compiled, the C
+files in src are compiled to .o files with names which include the
+$ARCH value: src/foo.c -> src/foo.linux.o.  The output executable is
+written to the bin directory with a name which also includes the
+binary: bin/foo.linux.  These are then installed in the appropriate
+ohana/bin/ARCH directories with 'make install'.  In the case of the
+program directories which include multiple C programs, the make file
+takes commands of the form 'make program', 'make program.install',
+'make program.clean', etc, which perform the requested operation on
+the specific program.  The generic commands 'make' and 'make install'
+will operate on the complete collection of programs.
Index: /trunk/Ohana/doc/www/html/template.css
===================================================================
--- /trunk/Ohana/doc/www/html/template.css	(revision 3902)
+++ /trunk/Ohana/doc/www/html/template.css	(revision 3902)
@@ -0,0 +1,75 @@
+
+/* heading styles */
+H1   		{ color: #000000; font-size: xx-large; }
+H2		{ color: #000000; font-size: x-large;  }
+H3		{ color: #000000; font-size: large;    }
+H4		{ color: #000000; font-size: normal;   }
+H5		{ color: #000000; font-size: small;    }
+
+span.title      { font-size: 200% }
+span.line       { color: #ff0000 }
+
+/* document-specific styles come next */
+
+a:link, a:visited, a:active { text-decoration: underline; font-weight: bold; color: #000080 }
+
+body  { bgcolor: #d0d0e0; background-color: #c0c0e0; padding: 0px; margin: 0px }
+table.outline { 
+	text-align: left; 
+	font-size: small; 
+	font-weight: normal; 
+	background: #ffffff; 
+	border: 5px solid #0850c0; 
+	padding: 0px; 
+}
+
+table.toparea { border-width: 0px}
+
+a.menutop  { text-decoration: none; color: #ffffff; font-weight: bold }
+a.menulink { text-decoration: none; font-weight: normal; color: #000000}
+a.menusele { text-decoration: none; font-weight: normal; color: #ff0000}
+
+td.menutop  { text-align: left; background: #000000; font-size: small; color: #ffffff; padding: 2px; }
+td.menulink { text-align: left; background: #ffffff; font-size: small; color: #000000; padding: 2px; font-weight: normal; text-indent: 8px; }
+td.menumiss { text-align: left; background: #e0e0e0; font-size: small; color: #000000; padding: 2px; text-indent: 8px; }
+td.menusel  { text-align: left; background: #00ffff; font-size: small; color: #ff0000; padding: 2px; font-weight: normal; text-indent: 8px; }
+
+a.ln { text-decoration: none; font-weight: normal; color: #000000}
+a.dl { text-decoration: none; font-weight: normal; color: #000000}
+a.sl { text-decoration: none; font-weight: normal; color: #ff0000}
+
+td.dir0 { background: #b0b0b0; color: #000000; padding: 2px; text-indent: 0px;  }
+td.dir1 { background: #c0c0c0; color: #000000; padding: 2px; text-indent: 8px;  }
+td.dir2 { background: #d0d0d0; color: #000000; padding: 2px; text-indent: 16px; }
+td.dir3 { background: #e0e0e0; color: #000000; padding: 2px; text-indent: 24px; }
+
+td.dsl0 { background: #b0b0b0; color: #ff0000; padding: 2px; text-indent: 0px;  }
+td.dsl1 { background: #c0c0c0; color: #ff0000; padding: 2px; text-indent: 8px;  }
+td.dsl2 { background: #d0d0d0; color: #ff0000; padding: 2px; text-indent: 16px; }
+td.dsl3 { background: #e0e0e0; color: #ff0000; padding: 2px; text-indent: 24px; }
+
+td.doc0 { background: #9090f0; color: #000000; padding: 2px; text-indent: 0px;  }
+td.doc1 { background: #a0a0f0; color: #000000; padding: 2px; text-indent: 8px;  }
+td.doc2 { background: #b0b0f0; color: #000000; padding: 2px; text-indent: 16px; }
+td.doc3 { background: #c0c0f0; color: #000000; padding: 2px; text-indent: 24px; }
+
+td.sel0 { background: #9090f0; color: #ff0000; padding: 2px; text-indent: 0px;  }
+td.sel1 { background: #a0a0f0; color: #ff0000; padding: 2px; text-indent: 8px;  }
+td.sel2 { background: #b0b0f0; color: #ff0000; padding: 2px; text-indent: 16px; }
+td.sel3 { background: #c0c0f0; color: #ff0000; padding: 2px; text-indent: 24px; }
+
+td.title { background-color: #ffffff; padding: 5px; font-size: x-large; text-align: left; vertical-align: top}
+td.body  { background-color: #ffffff; padding: 5px; font-size: normal;  text-align: left; vertical-align: top }
+
+a.submenu { text-decoration: underline; font-weight: bold; color: #ffffff}
+a.sublist { text-decoration: none; font-weight: bold; color: #0000ff}
+a.subplot { text-decoration: underline; font-weight: bold; color: #000000}
+
+td.subtitle  { background: #a02020; font-size: large; font-weight: bold; color: #ffffff; padding: 2px }
+td.submenu   { background: #000000; text-align: center; font-size: small; font-weight: bold; color: #ffffff; padding: 2px }
+td.subsel    { background: #b0b0b0; text-align: center; font-size: small; font-weight: bold; color: #000000; padding: 2px }
+
+table.pretty    { background: #ffffff; border: 1px solid #0000ff; padding: 0px; cellspacing: 0px; }
+table.pretty td { border: 1px solid #0000ff; padding: 3px; text-align: left}
+table.pretty th { border: 1px solid #0000ff; padding: 3px; text-align: left}
+table.pretty caption { font-weight: bold; }
Index: /trunk/Ohana/doc/www/html/template.htm
===================================================================
--- /trunk/Ohana/doc/www/html/template.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/html/template.htm	(revision 3902)
@@ -0,0 +1,42 @@
+<html>
+<head>
+<title>
+<meta name=page>
+</title>
+</head>
+
+<link rel="STYLESHEET" HREF="ROOT/template.css">
+<!-- link rel="STYLESHEET" HREF="template.css" -->
+
+<body>
+
+<table class=toparea cellspacing=10><tr><td valign=top>
+<!-- Index -->
+<table width=188px class=outline cellspacing=0>
+<tr><td><a href=ROOT/home.html>
+<IMG border=0 width=188px SRC="ROOT/icons/logo.png"></a></td></tr>
+<tr><td class=menutop>  <a class=menutop href=ROOT/home.html> Ohana Home                                         </a></td></tr>
+<tr><td class=menutop>  <a class=menutop href=ROOT/..> Elixir Home                                               </a></td></tr>
+<tr><td class=menutop>  <a class=menutop href=/> CFHT Home                                                        </a></td></tr>
+
+<meta name=index file=index.idx>
+
+</table> <br>
+
+</td><td width=100% valign=top> 
+
+<!-- Main Content -->
+<table width=100% class=outline>
+<tr><td class=title>
+<meta name=title>
+</td></tr>
+
+<!-- Body of Content -->
+<tr><td class=body>
+<meta name=body>
+</td></tr>
+</table>
+
+</td></tr></table>
+</body>
+</html>
Index: /trunk/Ohana/doc/www/mkhtml
===================================================================
--- /trunk/Ohana/doc/www/mkhtml	(revision 3902)
+++ /trunk/Ohana/doc/www/mkhtml	(revision 3902)
@@ -0,0 +1,182 @@
+#!/usr/bin/env perl
+
+$template = "template.htm";
+if ($ARGV[0] eq "-template") { 
+    shift @ARGV;
+    $template = $ARGV[0]; 
+    shift @ARGV; 
+}
+
+if (@ARGV != 3) { die "USAGE: mkhtml [-template template] (root) (src) (html)\n"; }
+
+$root     = $ARGV[0];
+$root     =~ s|/*$||; # strip trailing /'s to clean path
+
+$input    = $ARGV[1];
+$output   = $ARGV[2];
+$config   = "Configure";
+
+# print STDERR "template: $template\n";
+
+# load variables from Configure (eg, ROOT, etc)
+# these are interpolated except in the content section
+open (FILE, $config);
+@input = <FILE>;
+close (FILE);
+foreach $line (@input) {
+    ($var, $eq, $value) = split (" ", $line);
+    $$var = $value;
+}
+
+# load data from template
+open (FILE, $template);
+@template = <FILE>;
+close (FILE);
+
+# load data from input file
+open (FILE, $input);
+@input = <FILE>;
+close (FILE);
+
+# default metadata values:
+$title = &rootname ($input);
+if ($title eq "index") { $title = &basename (&dirname ($input)); }
+
+$page  = &rootname ($input);
+if ($page  eq "index") { $page  = &basename (&dirname ($input)); }
+
+$path  = &dirname ($input);
+
+$ext   = &extname ($input);
+
+# file is the entry in the index listing
+$file  = $output;
+if ($file =~ m|index.html|) { $file = &dirname ($output); }
+$file  =~ s|^$root|ROOT|;
+
+# apply ROOT variable to content (this comes from Configure)
+# foreach $line (@input) { while ($line =~ m|\$ROOT|) { $line =~ s|\$ROOT|$ROOT|; } }
+
+# search for the metadata lines in input file
+while (@input) {
+    $line = shift @input;
+    if ($line =~ /^\s*$/) { next; }
+    if ($line =~ /<meta\s+name=title\s+content=/) {
+	($title) = $line =~ /<meta\s+name=title\s+content=(.*)>/;
+	next;
+    }
+    if ($line =~ /<meta\s+name=page\s+content=/) {
+	($page) = $line =~ /<meta\s+name=page\s+content=(.*)>/;
+	next;
+    }
+    unshift @input, $line;
+    last;
+}
+
+# create the output file
+open (OUT, ">$output");
+
+$found = $menu = 0;
+foreach $line (@template) {
+    
+    chop $line;
+    while ($line =~ m|ROOT|) { $line =~ s|ROOT|$ROOT|; }
+    
+    # interpolate over basic metadata entries
+    if ($line =~ m|<meta\s+name=page>|) {
+	print OUT "$page\n";
+	next;
+    }
+    if ($line =~ m|<meta\s+name=title>|) {
+	print OUT "$title\n";
+	next;
+    }
+    if ($line =~ m|<meta\s+name=body>|) {
+	# add in parsing of <p> tags, etc in here
+	&dumpinput;
+	next;
+    }
+
+    # parse the index file
+    if ($line =~ m|<meta\s+name=index\s+file=|) {
+	($index) = $line =~ m|<meta\s+name=index\s+file=(.*)>|;
+	$index = "$path/$index";
+	open (INDEX, $index);
+	@index = <INDEX>;
+	# need to find and tag this file 
+	foreach $index (@index) {
+	    if ($index =~ m|href=$file>|) {
+		$index =~ s|class=doc|class=sel|;
+		$index =~ s|class=dir|class=dsl|;
+		$index =~ s|class=dl|class=sl|;
+	    }
+	    # interpolate ROOT
+	    while ($index =~ m|ROOT|) { $index =~ s|ROOT|$ROOT|; }
+	}
+
+	close (INDEX);
+	print OUT @index;
+	next;
+    }
+    print OUT "$line\n";
+}
+    
+close (OUT);
+exit 0;
+
+sub dumpinput {
+
+    if ($ext eq "txt") {
+	print OUT "<pre>\n";
+    }
+    print OUT "@input";
+    if ($ext eq "txt") {
+	print OUT "</pre>\n";
+    }
+}
+
+# behaves just like system basename function (returns last portion of path)
+sub basename {
+
+    my ($file) = $_[0];
+    my ($base, @words);
+
+    @words = split ("/", $file);
+    $base = $words[-1];
+    return $base;
+}
+
+
+# behaves just like system dirname function (strips last portion of path)
+sub dirname {
+
+    my ($file) = $_[0];
+    my ($base, @words);
+
+    @words = split ("/", $file);
+    if (@words == 1) { return "."; }
+
+    pop @words;
+    $file = join ('/', @words);
+    return $file;
+}
+
+# behaves just like system basename function (returns last portion of path)
+sub extname {
+    my ($file) = &basename ($_[0]);
+    my($ext) = $file =~ m|\S*\.(\S*)$|;
+    return $ext;
+}
+
+# behaves just like system basename function (returns last portion of path)
+sub rootname {
+    my ($file) = &basename ($_[0]);
+    my($ext) = $file =~ m|(\S*)\.\S*$|;
+    return $ext;
+}
+
+# input metadata lines:
+# <meta name="file"  content="test">
+# <meta name="title" content="a test title">
+# <meta name="page"  content="test">
+
Index: /trunk/Ohana/doc/www/mkidx
===================================================================
--- /trunk/Ohana/doc/www/mkidx	(revision 3902)
+++ /trunk/Ohana/doc/www/mkidx	(revision 3902)
@@ -0,0 +1,184 @@
+#!/usr/bin/env perl
+
+use strict;
+
+if (@ARGV != 1) { die "USAGE: mkidx (directory)\n"; }
+
+# input is the name of a directory and current level
+# outputs are: directory list, document list, index file for directory
+# menu for that directory
+
+# parse input info
+my($path);
+$path  = $ARGV[0];
+$path  =~ s|/*$||; # strip trailing /'s to clean path
+
+local($mkidx::root) = $path;
+
+&mksubidx ($path, 0, 0, "template.htm");
+exit 0;
+
+sub mksubidx {
+    # USAGE: mksubidx (path) (entry) (template) (index)
+    my($path)  	  = shift @_;
+    my($level) 	  = shift @_;
+    my($entry)    = shift @_;
+    my($template) = shift @_;
+    my(@updex)    = @_;
+
+    my($i);
+    my($line);
+    my(@list);
+    my($file, $root, $link, $ext);
+    my(@dirs)  = ();
+    my(@docs)  = ();
+    my(@txts)  = ();
+    my(@index) = ();
+
+    # if this directory contains a template file, reset entry and level
+    # supply the template file to mkhtml here and below
+    if (-e "$path/template.htm") {
+	@updex = ();
+	$level = 0;
+	$entry = 0;
+	$template = "$path/template.htm";
+    }
+    # print STDERR "idx: $template\n";
+
+    # put leading portion of updex here
+    for ($i = 0; $i < $entry; $i++) {
+	push @index, $updex[$i];
+    }
+
+    # find all dirs in this directory
+    @list = <$path/*>;
+    foreach $file (@list) {
+	if (! -d $file) { next; }
+	$root = &basename ($file);
+	$link = $file;
+	$link =~ s|^$mkidx::root|ROOT|;
+
+	# list special directories here
+	if ($root eq "CVS") { next; }
+	if (-e "$file/noindex.idx") { next; }
+
+	push @dirs, $file;
+
+	$line = sprintf "<tr><td class=dir%d> <a class=dl %-30s -%20s </a></td></tr>", $level, "href=$link>", $root;
+	push @index, $line;
+    }
+
+    # find all docs (htm, txt) in this directory
+    @list = (<$path/*.htm>,<$path/*.txt>);
+    foreach $file (@list) {
+	if (! -f $file) { next; }
+
+	$ext = &extname ($file);
+	$root = &rootname ($file);
+
+	$link = $file;
+	$link =~ s|.$ext$|.html|;
+	$link =~ s|^$mkidx::root|ROOT|;
+
+	# list special files here
+	if ($root eq "index") { next; }
+	if ($root eq "template") { next; }
+
+	# print STDERR "ext: $ext, root: $root\n";
+
+	push @docs, $file;
+
+	# simple case: no extra information:
+	$line = sprintf "<tr><td class=doc%d> <a class=dl %-30s  %20s </a></td></tr>", $level, "href=$link>", $root;
+	push @index, $line;
+    }
+
+    # add trailing portion of updex here
+    for ($i = $entry; $i < @updex; $i++) {
+	push @index, $updex[$i];
+    }
+
+    for ($i = 0; $i < @dirs; $i++) {
+	&mksubidx ($dirs[$i], $level + 1, $i + $entry + 1, $template, @index);
+    }
+
+    # output index for this directory
+    open (FILE, ">$path/index.idx");
+    foreach $line (@index) {
+	print FILE "$line\n";
+    }
+    close (FILE);
+
+    # create html for docs in this directory
+    foreach $file (@docs, "$path/index.htm") {
+	$ext  = &extname ($file);
+	# print STDERR "ext: $ext\n";
+	# $root  = &rootname ($file);
+	# print STDERR "root: $root\n";
+	$link = $file;
+	$link =~ s|.$ext$|.html|;
+	system "mkhtml -template $template $mkidx::root $file $link";
+    }
+    return;
+}
+
+# behaves just like system basename function (returns last portion of path)
+sub basename {
+
+    my ($file) = $_[0];
+    my ($base, @words);
+
+    @words = split ("/", $file);
+    $base = $words[-1];
+    return $base;
+}
+
+# behaves just like system basename function (returns last portion of path)
+sub extname {
+    my ($file) = &basename ($_[0]);
+    my($ext) = $file =~ m|\S*\.(\S*)$|;
+    return $ext;
+}
+
+# behaves just like system basename function (returns last portion of path)
+sub rootname {
+    my ($file) = &basename ($_[0]);
+    my($ext) = $file =~ m|(\S*)\.\S*$|;
+    return $ext;
+}
+
+# behaves just like system dirname function (strips last portion of path)
+sub dirname {
+
+    my ($file) = $_[0];
+    my ($base, @words);
+
+    @words = split ("/", $file);
+    if (@words == 1) { return "."; }
+
+    pop @words;
+    $file = join ('/', @words);
+    return $file;
+}
+
+###
+#    # find all txt files in this directory
+#    @list = <$path/*.txt>;
+#    foreach $file (@list) {
+#	if (! -f $file) { next; }
+#
+#	$ext = &extname ($file);
+#
+#	$root = &basename ($file);
+#	$root =~ s|.txt$||;
+#	$link = $file;
+#	$link =~ s|.txt$|.html|;
+#	$link =~ s|^$mkidx::root|ROOT|;
+#
+#	push @txts, $file;
+#
+#	# simple case: no extra information:
+#	$line = sprintf "<tr><td class=doc%d> <a class=dl %-30s  %20s </a></td></tr>", $level, "href=$link>", $root;
+#	push @index, $line;
+#    }
+
Index: /trunk/Ohana/doc/www/ohana.css
===================================================================
--- /trunk/Ohana/doc/www/ohana.css	(revision 3902)
+++ /trunk/Ohana/doc/www/ohana.css	(revision 3902)
@@ -0,0 +1,44 @@
+
+/* heading styles */
+H1   		{ color: #000000; font-size: xx-large; }
+H2		{ color: #000000; font-size: x-large;  }
+H3		{ color: #000000; font-size: large;    }
+H4		{ color: #000000; font-size: normal;   }
+H5		{ color: #000000; font-size: small;    }
+
+span.title      { font-size: 200% }
+span.line       { color: #ff0000 }
+
+/* document-specific styles come next */
+
+a:link, a:visited, a:active { text-decoration: underline; font-weight: bold; color: #000080 }
+
+body  { bgcolor: #20d0e0; background-color: #20d0e0; padding: 0px; margin: 0px }
+table.outline { background: #ffffff; border: 5px solid #0850c0; padding: 0px; }
+
+table.toparea { border-width: 0px}
+
+a.menutop  { text-decoration: none; color: #ffffff; font-weight: bold }
+a.menulink { text-decoration: none; font-weight: normal; color: #000000}
+
+td.menutop  { text-align: left; background: #000000; font-size: small; color: #ffffff; padding: 2px; }
+td.menuhead { text-align: left; background: #b0b0b0; font-size: small; color: #000080; padding: 2px; font-weight: bold; }
+td.menulink { text-align: left; background: #ffffff; font-size: small; color: #000000; padding: 2px; font-weight: normal; text-indent: 8px; }
+td.menumiss { text-align: left; background: #e0e0e0; font-size: small; color: #000000; padding: 2px; text-indent: 8px; }
+td.menusel  { text-align: left; background: #ffffff; font-size: small; color: #ff0000; padding: 2px; font-weight: normal; text-indent: 8px; }
+
+td.title { background-color: #ffffff; padding: 5px; font-size: x-large; text-align: left; vertical-align: top}
+td.body  { background-color: #ffffff; padding: 5px; font-size: normal;  text-align: left; vertical-align: top }
+
+a.submenu { text-decoration: underline; font-weight: bold; color: #ffffff}
+a.sublist { text-decoration: none; font-weight: bold; color: #0000ff}
+a.subplot { text-decoration: underline; font-weight: bold; color: #000000}
+
+td.subtitle  { background: #0754ba; font-size: large; font-weight: bold; color: #ffffff; padding: 2px }
+td.submenu   { background: #000000; text-align: center; font-size: small; font-weight: bold; color: #ffffff; padding: 2px }
+td.subsel    { background: #b0b0b0; text-align: center; font-size: small; font-weight: bold; color: #000000; padding: 2px }
+
+table.pretty    { background: #ffffff; border: 1px solid #0000ff; padding: 0px; cellspacing: 0px; }
+table.pretty td { border: 1px solid #0000ff; padding: 3px; text-align: left}
+table.pretty th { border: 1px solid #0000ff; padding: 3px; text-align: left}
+table.pretty caption { font-weight: bold; }
Index: /trunk/Ohana/doc/www/ohana.src
===================================================================
--- /trunk/Ohana/doc/www/ohana.src	(revision 3902)
+++ /trunk/Ohana/doc/www/ohana.src	(revision 3902)
@@ -0,0 +1,72 @@
+<html>
+<head> 
+<!-- Page Title -->
+</head>
+<link rel="STYLESHEET" HREF="$HREF/ohana.css">
+<body>
+
+<table class=toparea cellspacing=10><tr><td valign=top>
+
+<!-- Elixir Selection Menu Begin -->
+<table width=188px class=outline cellspacing=0>
+<tr><td><a href=$HREF/home.html><IMG border=0 width=188px SRC="$HREF/icons/logo.png"></a></td></tr>
+<tr><td class=menutop>  <a class=menutop href=$HREF/home.html> Ohana Home                                         </a></td></tr>
+<tr><td class=menutop>  <a class=menutop href=$HREF/..> Elixir Home                                               </a></td></tr>
+<tr><td class=menutop>  <a class=menutop href=/> CFHT Home                                                        </a></td></tr>
+
+<tr><td class=menuhead> User's Guides                                                                                 </td></tr>
+<tr><td class=menuhead> Top-Level Systems                                                                             </td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/opihi.html>                        Opihi shell               </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/dvo.html>                          DVO examples              </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/mana.html>                         Mana command              </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/dvo-cmds.html>                     DVO commands              </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/dimm.html>                         DIMM commands             </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/mkdetrend.html>                    mkdetrend                 </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/mkfringe.html>                     mkfringe                  </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/gcontrol.html>                     gcontrol (elixir)         </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/nightd.html>                       nightd                    </a></td></tr>
+
+<tr><td class=menuhead> Components                                                                                    </td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/imreg.html>                        imreg                     </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/detrend.html>                      detrend                   </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/imclean.html>                      imclean                   </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/gastro.html>                       gastro                    </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/gcompare.html>                     gcompare                  </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/photcode.html>                     photcode                  </a></td></tr>
+
+<tr><td class=menuhead> Perl Scripts                                                                                  </td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/mkdetrend.html>                    mkdetrend components      </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/mkfringe.html>                     mkfringe components       </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/postrun.html>                      elixir.postrun            </a></td></tr>
+
+<tr><td class=menuhead> Programmer's Reference                                                                        </td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/install.html>                      installing                </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/download.html>                     download                  </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/kapa.html>                         kapa                      </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/kii.html>                          kii                       </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/includes.html>                     include                   </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/libfits.html>                      libfits                   </a></td></tr>
+<tr><td class=menulink> <a class=menulink href=$HREF/libohana.html>                     libohana                  </a></td></tr>
+
+<tr><td></td></tr>
+</table>
+<!-- Elixir Selection Menu End -->
+
+</td><td width=100% valign=top> 
+
+<!-- Main Content -->
+<table width=100% class=outline>
+<tr><td class=title>
+<!-- Title --> 
+</td></tr>
+
+<tr><td class=body>
+<!-- Body Begin -->
+
+<!-- Body End -->
+</td></tr>
+</table>
+
+</td></tr></table>
+</body>
+</html>
Index: /trunk/Ohana/doc/www/sample.htm
===================================================================
--- /trunk/Ohana/doc/www/sample.htm	(revision 3902)
+++ /trunk/Ohana/doc/www/sample.htm	(revision 3902)
@@ -0,0 +1,18 @@
+<meta name=file  content=home>
+<meta name=title content=The Elixir System>
+<meta name=page  content=Elixir>
+
+<p>
+The Elixir Project at CFHT has the goal of enabling the optimal use of
+data by our observers.  The current target of the Elixir project is
+data from large mosaic cameras.  We call the project `Elixir' after
+the fabled goal of the ancient alchemists: the Elixir which could
+restore youth or turn lead into gold.  The Elixir project seeks to
+restore youth to archived data and turn weighty mass of unmined data
+collected at CFHT into nuggets of gold.
+
+<p>
+Elixir is not a single program or package; rather it is a collection
+of programs, databases, and other tools related to the processing and
+evaluation of the telescope data.  This document provides a starting
+point for a variety of documentation related to the Elixir project.
