Index: trunk/Documentation/idldoc/.idlwave_catalog
===================================================================
--- trunk/Documentation/idldoc/.idlwave_catalog	(revision 68)
+++ 	(revision )
@@ -1,27 +1,0 @@
-;;
-;; IDLWAVE catalog for library saxo
-;; Automatically Generated -- do not edit.
-;; Created by idlwave_catalog on Tue Jan 24 17:06:19 2006
-;;
-(setq idlwave-library-catalog-libname "saxo")
-(setq idlwave-library-catalog-routines
- '(("cleanup_widgets" pro nil (lib "cleanup_widgets.pro" nil "saxo") "%s, top" (nil))
-   ("handle_events" pro nil (lib "handle_events.pro" nil "saxo") "%s, event" (nil))
-   ("SourceRoot" fun nil (lib "sourceroot.pro" nil "saxo") "Result = %s" (nil))
-   ("get_value" fun "xidldoc" (lib "xidldoc.pro" nil "saxo") "Result = Obj ->[%s::]%s(uname)" (nil))
-   ("set_value" pro "xidldoc" (lib "xidldoc.pro" nil "saxo") "Obj ->[%s::]%s, uname, value" (nil))
-   ("run" pro "xidldoc" (lib "xidldoc.pro" nil "saxo") "Obj ->[%s::]%s" (nil))
-   ("handle_events" pro "xidldoc" (lib "xidldoc.pro" nil "saxo") "Obj ->[%s::]%s, event" (nil))
-   ("cleanup_widgets" pro "xidldoc" (lib "xidldoc.pro" nil "saxo") "Obj ->[%s::]%s, top" (nil))
-   ("start_xmanager" pro "xidldoc" (lib "xidldoc.pro" nil "saxo") "Obj ->[%s::]%s" (nil))
-   ("display" pro "xidldoc" (lib "xidldoc.pro" nil "saxo") "Obj ->[%s::]%s" (nil))
-   ("realize" pro "xidldoc" (lib "xidldoc.pro" nil "saxo") "Obj ->[%s::]%s" (nil))
-   ("center_ui" pro "xidldoc" (lib "xidldoc.pro" nil "saxo") "Obj ->[%s::]%s" (nil))
-   ("make_input_row" pro "xidldoc" (lib "xidldoc.pro" nil "saxo") "Obj ->[%s::]%s, parent, label, text" (nil ("no_button")))
-   ("select_font" fun "xidldoc" (lib "xidldoc.pro" nil "saxo") "Result = Obj ->[%s::]%s" (nil ("big") ("bold")))
-   ("build_widgets" pro "xidldoc" (lib "xidldoc.pro" nil "saxo") "Obj ->[%s::]%s" (nil))
-   ("destruct" pro "xidldoc" (lib "xidldoc.pro" nil "saxo") "Obj ->[%s::]%s" (nil))
-   ("cleanup" pro "xidldoc" (lib "xidldoc.pro" nil "saxo") "Obj ->[%s::]%s" (nil))
-   ("init" fun "xidldoc" (lib "xidldoc.pro" nil "saxo") "Result = Obj ->[%s::]%s" (nil ("header_image")))
-   ("xidldoc__define" pro nil (lib "xidldoc.pro" nil "saxo") "%s" (nil))
-   ("xidldoc" pro nil (lib "xidldoc.pro" nil "saxo") "%s" (nil ("no_image")))))
Index: trunk/Documentation/idldoc/cleanup_widgets.pro
===================================================================
--- trunk/Documentation/idldoc/cleanup_widgets.pro	(revision 68)
+++ 	(revision )
@@ -1,16 +1,0 @@
-;2345678901234567890123456789012345678901234567890123456789012345678901234567890
-
-;+
-; Cleanup handler for an object-widget program.  Calls the "cleanup_widgets"
-; method of the object-widget program.  The object reference for the program
-; must be stored in the TLB's UVALUE.
-;
-; @param top {in}{required}{type=widget ID} widget identifier of the top-level
-;        base
-;-
-pro cleanup_widgets, top
-    compile_opt idl2
-
-    widget_control, top, get_uvalue=self
-    self->cleanup_widgets, top
-end
Index: trunk/Documentation/idldoc/docs/idldoc-dev-help.html
===================================================================
--- trunk/Documentation/idldoc/docs/idldoc-dev-help.html	(revision 69)
+++ trunk/Documentation/idldoc/docs/idldoc-dev-help.html	(revision 69)
@@ -0,0 +1,1343 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- Template needs structure with the following fields:
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       idldoc_syntax_filename : file containing IDLdoc output for the idldoc routine
+       navbar_filename : filename of navbar template
+       footer : filename of footer file to include
+       tagline_filename : filename of tagline template
+     Plus stuff needed by the templates: navbar, tagline
+-->
+
+<!-- Generated by IDLdoc 2.0 on Sat Mar 11 21:40:01 2006 -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>IDLdoc Developer's Help (IDLdoc project documentation)</title>
+
+    
+    <style type="text/css" media="all">
+         
+/* CSS for all files which appear in the "main" viewing area: overview,
+   directory overviews, warnings, index, search, pro files, source
+   code, help, and etc files. */
+
+/* Link styles --------------------------------------------------------------- */
+
+a { text-decoration: none; }
+
+a:link, a:visited { 
+  color: #660000; 
+  border-bottom: 1px dotted #C0C0F0;   
+}
+
+a:hover, a:focus { 
+  color: #993333; 
+  background: #FFFFCC; 
+  border-bottom: 1px dotted #303099; 
+}
+
+
+/* Main styles --------------------------------------------------------------- */
+
+body {
+  margin: 0;
+  padding: 0;
+  font-size: 10pt;
+  font-family: Verdana, Helvetica, Arial, sans-serif;
+  background-color: #FFFFFF;
+}
+
+p {
+  margin-top: 0.5em;
+  margin-bottom: 0;
+}
+
+#container { margin: 1em; }
+
+code.section { white-space: pre; }
+
+pre.snippet {
+  margin-left: 5%;
+  background: #F0F0F0;
+  border: 1px dashed #999999;
+  width: 43em;
+  padding: 0.5em 0.5em 0.5em 0.5em;
+  white-space: pre;
+}
+
+/* Navbar styles ------------------------------------------------------------- */
+
+#navbar_title {
+  color: #000033;
+  background-color: #F0F0FF;
+  font-family: Arial, Helvetica, sans-serif;
+  padding: 20px 30px;
+  border-bottom: 1px solid #000033;
+}
+
+#navbar_title * {
+  margin: 0;
+  padding: 0;
+}
+
+#navbar_title h1 {
+  letter-spacing: 0.1em;
+  font-variant: small-caps;
+  font-size: 250%;
+  text-indent: -1em;
+  padding-left: 1em; 
+}
+
+#navbar_title h2 {
+  font-size: 110%;
+  font-weight: normal;
+  color: #333399;
+}
+
+#main_navbar table {
+  width: 100%;
+  border-bottom: 1px solid #666699;
+}
+
+#main_navbar td {
+  background: #CCCCFF;
+  font-size: 80%;
+  font-weight: bold;
+  font-family: Arial, Helvetica, sans-serif;
+  border-top: 3px solid #CCCCFF;
+  border-bottom: 3px solid #CCCCFF;
+  padding-left: 6px;
+  padding-right: 6px;
+  margin: 0;
+}
+
+#main_navbar td#selected {
+  background: #CCCCFF;
+  font-size: 80%;
+  font-weight: bold;
+  font-family: Arial, Helvetica, sans-serif;
+  border-top: 3px solid #333399;
+  border-bottom: 3px solid #CCCCFF;
+  padding-left: 6px;
+  padding-right: 6px;
+  margin: 0;
+}
+
+#main_navbar td#flexible {
+  width: 100%;
+  text-align: right;
+  padding-right: 1em;
+  background: #CCCCFF;
+  font-size: 70%;
+  font-weight: normal;
+  font-family: Arial, Helvetica, sans-serif;
+  text-transform: uppercase;
+  border-top: 3px solid #CCCCFF;
+  border-bottom: 3px solid #CCCCFF;
+}
+
+#main_navbar a:link, #main_navbar a:visited { color: #660000; border: 0; }
+
+#main_navbar a:hover, #main_navbar a:focus {
+  color: #FFFF66;
+  background: #CCCCFF;
+  border-bottom: 1px none #606099; 
+  border: 0;
+}
+
+#secondary_navbar {
+  font-size: 80%;
+  font-weight: normal;
+  font-family: Arial, Helvetica, sans-serif;
+  margin-top: 4px;
+  margin-left: 20px;
+  white-space: nowrap;
+}
+
+
+/* Tagline and footer styles ------------------------------------------------- */
+
+div#tagline {
+  margin-top: 6px;
+  border-top: 1px dotted lightsteelblue;
+  padding-top: 6px;
+  font-size: 66%;
+  font-style: italic;
+}
+
+div#footer {
+  margin-top: 6px;
+  border-top: 1px dotted lightsteelblue;
+  padding-top: 6px;
+  font-size: 66%;
+  font-style: italic;
+}
+
+/* Basic data presenation styles -------------------------------------------- */
+
+.index_letter { 
+  font-size: 300%;
+  font-weight: bold;
+  color: #000066; 
+  margin: 0.5em 0 0 -0.1em;
+}
+
+h1, h2, h3, h4 {
+  font-weight: normal;
+  color: #3333CC;
+}
+
+h1 {
+  padding-top: 0.75em;
+  font-size: 160%;
+}
+
+h2 {
+  padding-top: 1em;
+  font-size: 120%;
+  }
+
+h3 {
+  padding-top: 0.75em;
+  margin-bottom: 0.25em;
+  font-size: 100%;
+}
+
+h4 {
+  padding: 0;
+  margin: 0.5em 0 0 0;
+  font-size: 80%;
+}
+
+table.basic {
+  empty-cells: show;
+  margin: 1.5em 1em 0 1em;
+  border: 1px dotted #CFCFFF;
+  font-size: 80%;
+}
+
+table.basic th {
+  background-color: #F0F0FF;
+  font-weight: bold;
+  text-align: left;
+  padding: 4px 1em 4px 4px;
+  border-bottom: 1px dotted #666699;
+}
+
+table.basic td {
+  vertical-align: top;
+  padding: 4px 1em 4px 4px;
+}
+
+dd {
+  margin-bottom: 0.25em;
+  font-size: 80%;
+}
+
+
+/* Warnings styles ----------------------------------------------------------- */
+
+
+#todo dl, #bugs dl { 
+  margin: 0 0 0 1.5em;
+  font-size: 80%;
+}
+
+#todo dd, #bugs dd { 
+  margin-left: 3em; 
+  font-size: 100%;
+}
+
+#undoc table, #obsolete table, #statistics table {
+  width: 80%;
+  margin-left: 2em;
+}
+
+#undoc td, #obsolete td, #statistics td { 
+  padding: 0 0 0 0;
+  font-size: 80%;
+  white-space: nowrap;
+}
+
+#undoc td.docroutine, #obsolete td.obsroutine, #statistics td.statroutine { width: 50%; }
+
+#undoc td.docstat, #statistics td.stat { 
+  width: 50%;
+  text-align: right;
+}
+
+#undoc td.partialdoc, #statistics td.caution { color: #CC6600; }
+
+#undoc td.notdoc, #statistics td.warning { color: #993333; }
+
+/* File + routine styles ----------------------------------------------------- */
+
+h1.directory { 
+  padding: 1em 0 0 0;
+  margin: 0;
+  font-size: 66%;
+}
+
+h1.directory a { border-bottom: 0; }
+
+h2.pro_file { 
+  padding: 0;
+  margin: 0;
+  font-size: 140%;
+}
+
+div#file_attr {
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+div#file_attr dt {
+  font-size: 80%;
+  font-weight: bold;
+}
+
+div#file_attr dd {
+  font-size: 80%;
+}
+
+div#class_diagram { 
+  padding: 1em 0 1em 0; 
+  white-space: pre;
+  font-family: 'Courier New';
+}
+
+table#sav_attr { 
+  font-size: 90%; 
+  margin: 1em; 
+  padding: 1em 1em 1em 1em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+table#sav_attr th { text-align: left; }
+
+table#sav_attr td { vertical-align: top; padding-right: 2em; }
+
+table#sav_attr td.value { width: 20em; padding-right: 0em; font-style: italic; }
+
+p.sav_warning { margin-left: 4em; font-family: 80%; }
+
+table.variables { 
+  font-family: 'Courier New', monospace; 
+  font-size: 80%; 
+  text-indent: -2em; 
+  padding-left: 2em; 
+}
+
+table.variables td.image { width: 64px; }
+
+div#file_comments { 
+  margin: 2em;
+  font-size: 80%;
+}
+
+
+div.field_summary {
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #FFFFF0;
+  border: 1px dotted #C0C000;
+}
+
+div#routine_summary {  
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F0F0FF;
+  border: 1px dotted #9999FF;
+}
+
+div.field_summary h2, div#routine_summary h2 { 
+  padding: 0.5em 0 0 0;
+  margin: 0;
+}
+
+div.field_summary table, div.field_summary p { 
+  margin: 1em 1em;
+}
+
+div.field_summary td.name { 
+  vertical-align: top;
+  padding-bottom: 0.25em;
+  color: #3333CC;
+}
+
+div.field_summary span.field_type {  
+  font-weight: normal;
+  font-size: 80%;
+  color: black;
+}
+
+div.field_summary td.comments { 
+  vertical-align: top;
+  padding-left: 2em;
+  font-size: 80%;
+}
+
+p.commaList { 
+  margin: 1em 1em 1em 1em;
+}
+
+span.warning { 
+  color: #CC6633;
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+}
+
+span.categories { 
+  color: #006633;
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+}
+
+span.undoc { 
+  color: #FF6633;
+  font-weight: bold;
+  font-size: 80%;
+  text-transform: uppercase;
+}
+
+span.attr { 
+  color: #006633;
+  font-weight: bold;
+  font-size: 80%;
+  text-transform: uppercase;
+}
+
+span.value { 
+  color: #006633;
+  font-weight: normal;
+  text-transform: none;
+}
+
+a.top { 
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+  float: right;
+}
+
+span.result { 
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-style: italic;
+  font-size: 80%;
+}
+
+div#routine_summary p, div.routine_details p.header { 
+  padding-top: 0.5em;
+  margin-left: 1.5em;
+  text-indent: -1.5em;
+  font-family: 'Courier New', monospace;
+}
+
+div.routine_details {  
+  padding: 0.5em 1em 0.5em 1em;
+  margin: 1em;
+  border: 1px dotted #CCCCCC;
+}
+
+div.routine_details h2 {  
+  padding-top: 0;
+  margin-top: 0;
+}
+
+div.routine_details div.value { 
+  margin: 0 1em 0 1em;
+  font-size: 80%;
+}
+
+div.routine_details div.comments { 
+  font-size: 80%;
+  margin: 0.75em 1em 1em 1em;
+}
+
+div.routine_details div.preformat { 
+  white-space: pre;
+}
+
+table.statistics { 
+  font-size: 80%;
+  margin-left: 1em;
+}
+
+table.statistics td { 
+  padding: 0 2em 0 0;
+}
+
+/* Overview styles ----------------------------------------------------------- */
+
+div.overview { 
+  width: 100%;
+  margin-top: 1em;
+  clear: both;
+}
+
+div.overview table {
+  empty-cells: show;
+  font-size: 90%;
+  margin: 1em 1em 1em 1em;
+  padding: 1em 0.5em 1em 0.5em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+div.overview td {
+  padding: 3px 1em 3px 1em;
+}
+
+div.overview td.dir {
+  width: 1%;
+  vertical-align: top;
+  text-align: right;
+  padding-right: 1em;
+}
+
+
+/* Navigation list styles for tree structures -------------------------------- */
+
+#tree {
+  text-align: left;
+  font-size: 90%;
+  margin: 0.75em 0 0.75em 0;
+  padding: 0;
+}
+
+#tree ul {
+  text-align: left;
+  margin: 0;
+  padding: 0;
+}
+
+#tree li {
+  margin: 0 0 0 15px;
+  padding: 0;
+  list-style-type: none;
+}
+
+#tree .symbols {
+  float: left;
+  width: 12px;
+  height: 1em;
+  padding-left: 4px;
+  background-position: 0 100%;
+  background-repeat: no-repeat;
+}
+
+/* Search styles ------------------------------------------------------------- */
+
+input.writein { 
+  padding-left: 0.5em;
+  border: 1px solid #CCCCCC;
+  font-family: 'Courier New';
+  background: #FFFFF3;
+}
+
+#search form { 
+  margin-left: 2em;
+}
+
+#search table { 
+  margin: 1em 1em 0 2em;
+  padding: 1em 2em 1em 2em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+#search tr { 
+  text-align: center;
+}
+
+#search td { 
+  font-size: 80%; 
+  text-align: left;
+}
+
+#search td * { 
+  vertical-align: middle;
+}
+
+#search p { 
+  font-size: 66%;
+  margin: 0 3em 2em 3em;
+}
+
+/* Help styles --------------------------------------------------------------- */
+
+div.toc { 
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F0F0FF;
+  border: 1px dotted #9999FF;  
+  width: 19em;
+}
+
+div.right { 
+  float: right;
+  width: 22em;
+}
+
+ol.toc { 
+  list-style-type: upper-roman;
+}
+
+ol.toc ol { 
+  padding-left: 3em;
+  margin-left: 0;
+  list-style-type: lower-alpha;
+}
+
+dl.variables dt { font-size: 80%; }
+dl.variables dd { margin-bottom: 0.5em; }
+
+    </style>	
+    <style type="text/css" media="print">
+         #navbar_title { 
+  background-color: #FFFFFF;  
+}
+
+#main_navbar td {
+  background: #FFFFFF;
+  border-top: 0.25em solid #FFFFFF;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#main_navbar td#selected {
+  background: #FFFFFF;
+  border-top: 0.25em solid #333399;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#main_navbar td#flexible {
+  background: #FFFFFF;
+  border-top: 0.25em solid #FFFFFF;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#secondary_navbar {
+  display: none;
+}
+
+    </style>
+    
+
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="IDLdoc Developer's Help (IDLdoc project documentation)";
+      }
+    </script>
+  </head>
+
+
+  <body onload="setTitle();">
+
+    <div id="navbar_title">
+  <h1>IDLdoc project documentation</h1>
+  <h2>"The IDL code documentation project documentation"</h2>
+</div>
+
+
+
+    <div id="container">
+
+      <h1>IDLdoc developer's guide</h1>
+
+      <p>This guide discusses how to mark up IDL pro code in order to
+      insert more information into IDLdoc's output.</p>
+
+      <p>Comments on the routine and file level are placed between
+      ";+" and ";-" lines before a routine in IDL source code. Content
+      between these lines is copied verbatim into the IDLdoc output
+      for the routine it appears before with the exception of the
+      @-preceded "tags" listed in tables below. Once an @ appears in
+      the comments, IDLdoc processes all remaining lines of the
+      comments as tags. To place a non-tag defining "@" in your
+      comments, escape it with a "\", as in
+      "email_address\@rsinc.com".</p>
+
+      <p>In the following example, the @author tag is used to indicate
+      an author of the code. The second "@" is escaped to allow its
+      literal use in the email address:</p>
+
+	<pre class="snippet">; @author Michael Galloy, mgalloy\@rsinc.com</pre>
+
+      <h2>Routine level comments</h2>
+
+      <p>There are many tags which describe an individual
+      routine. Each tag name appears after an "@" sign as the first
+      non-whitespace character after the ;. The tags are described
+      below.</p>
+
+      <table class="basic" cellspacing="0">
+	<tr>
+	  <th>Tag</th>
+	  <th>Description</th>
+	</tr>
+	<tr>
+	  <td>abstract</td>
+	  <td>
+	    Presence of the this tag indicates this method is
+	    abstract. This is intended for use with methods of a class
+	    which are not intended to be called, but are only provided
+	    as documenting an interface that a subclass will override.
+	  </td>
+	</tr>
+	<tr>
+	  <td>author</td>
+	  <td>
+	    Text following this tag appears in a list of attributes
+	    of the routine marked as "Author."
+	  </td>
+	</tr>
+	<tr>
+	  <td>bugs</td>
+	  <td>
+	    Text that follows this tag is copied into a bug
+	    attribute of the routine and placed in a library wide
+	    listing which documents known failings of routines.
+	  </td>
+	</tr>
+	<tr>
+	  <td>categories</td>
+	  <td>
+	    Text following this tag is used as a comma separated list
+	    of categories of the routine. The syntax is:
+
+	    <pre class="snippet">; @categories math, input/output</pre>
+
+	    Category names are case-sensitive and may contain any
+	    characters except commas (though whitespace at the
+	    beginning and end will be removed).
+	  </td>
+	</tr>
+	<tr>
+	  <td>copyright</td>
+	  <td>
+	    Text following this tag appears in a list of attributes
+	    of the routine marked as "Copyright."
+	  </td>
+	</tr>
+	<tr>
+	  <td>customer_id</td>
+	  <td>
+	    Text following this tag appears in a list of attributes
+	    of the routine marked as "Customer ID."
+	  </td>
+	</tr>
+	<tr>
+	  <td>examples</td>
+	  <td>
+	    Text following this tag is copied into an examples
+	    attribute of the routine; it is intended to have
+	    example code of using the routine.
+	  </td>
+	</tr>
+	<tr>
+	  <td>field</td>
+	  <td>
+	    For routines in files that end in "__define", this
+	    provides documentation of a member variable of a
+	    class/structure. The syntax is
+	
+	    <pre class="snippet">; @field field_name comment</pre>
+	
+	    where "field" matches one of the structure field names
+	    of the structure type/class being defined.
+	  </td>
+	</tr>
+	<tr>
+	  <td>hidden</td>
+	  <td>
+	    Presence of this tag hides this routine in IDLdoc
+	    output.
+	  </td>
+	</tr>
+	<tr>
+	  <td>history</td>
+	  <td>
+	    Text following this tag is copied into a history
+	    attribute of the routine; it is intended to have a
+	    history of the creators and modifiers of the source
+	    code of the routine.
+	  </td>
+	</tr>
+	<tr>
+	  <td>inherits</td>
+	  <td>
+	    Obsolete. Intended to provide the parent class of the
+	    documented class, but this is automatically handled by
+	    IDLdoc now (as long as class definitions are in files
+	    that end "__define").
+	  </td>
+	</tr>
+	<tr>
+	  <td>keyword</td>
+	  <td>
+	    This tag documents a single keyword parameter to the
+	    routine. This syntax is
+	
+	    <pre class="snippet">; @keyword keyword_name attributes comment</pre>
+	
+	    Attributes further describe keyword and detailed in
+	    the section below. The comment may be an text and is
+	    copied into the IDLdoc output.
+	  </td>
+	</tr>
+	<tr>
+	  <td>obsolete</td>
+	  <td>
+	    Presence of this tag marks the routine as obsolete.
+	  </td>
+	</tr>
+	<tr>
+	  <td>param</td>
+	  <td>
+	    This tag documents a single keyword parameter to the
+	    routine. This syntax is
+	
+	    <pre class="snippet">; @param keyword_name attributes comment</pre>
+	
+	    Attributes further describe keyword and detailed in
+	    the section below. The comment may be an text and is
+	    copied into the IDLdoc output.
+	  </td>
+	</tr>
+	<tr>
+	  <td>pre</td>
+	  <td>
+	    Text following this tag will be copied to a pre
+	    attribute of the routine; it is intended to give
+	    conditions the routine assumes to be true before it
+	    runs.
+	  </td>
+	</tr>
+	<tr>
+	  <td>post</td>
+	  <td>
+	    Text following this tag will be copied to a post
+	    attribute of the routine; it is intended to give
+	    conditions the routine assumes to be true after it
+	    runs.
+	  </td>
+	</tr>
+	<tr>
+	  <td>private</td>
+	  <td>
+	    Presence of this tag will hide this routine in IDLdoc
+	    output if IDLdoc is run in "user" mode.
+	  </td>
+	</tr>
+	<tr>
+	  <td>requires</td>
+	  <td>
+	    Text following this tag is copied into the "Requires"
+	    attribute of the routine; it is intended to provide
+	    the version of IDL required to run the routine. For
+	    example,
+	
+	    <pre class="snippet">; @requires IDL 6.2</pre>
+	
+	    will simply cause "IDL 6.2" to appear in the
+	    "Requires" attribute.
+	  </td>
+	</tr>
+	<tr>
+	  <td>restrictions</td>
+	  <td>
+	    Text following this tag is copied into the
+	    "Restrictions" attribute of the routine; it is
+	    intended to provide any restrictions on the use of the
+	    routine.
+	  </td>
+	</tr>
+	<tr>
+	  <td>returns</td>
+	  <td>
+	    Text following this tag is copied into the "Returns"
+	    attribute of the routine; it is intended to provide
+	    information about return value of a function.
+	  </td>
+	</tr>
+	<tr>
+	  <td>todo</td>
+	  <td>
+	    This tag places an item in a library-wide list of todo
+	    items. The text following the tag is copied into this list
+	    along with the routine it appears in it.
+	  </td>
+	</tr>
+	<tr>
+	  <td>uses</td>
+	  <td>
+	    Text following this tag is placed in a uses attribute of
+	    the routine; it is intended to list routines that this
+	    routine calls.
+	  </td>
+	</tr>
+	<tr>
+	  <td>version</td>
+	  <td>
+	    Text following this tag is placed in a version attribute
+	    of the routine; it is intended to give a version
+	    name/number of the routine.
+	  </td>
+	</tr>
+      </table>
+
+      <p>For each positional parameters or keyword tag additional
+      attributes may be added in curly braces. For example,</p>
+	
+      <pre class="snippet">; @param x {in}{required}{type=lonarr} x-axis data</pre>
+	
+      <p>The attributes are described below.</p>
+
+      <table class="basic" cellspacing="0">
+	<tr>
+	  <th>Attribute</th>
+	  <th>Description</th>
+	</tr>
+	<tr>
+	  <td>default</td>
+	  <td>
+	    This atrribute defines the default value of the
+	    parameter. Any string may be entered and is echoed in the
+	    IDLdoc output.
+	  </td>
+	</tr>
+	<tr>
+	  <td>hidden</td>
+	  <td>
+	    This attribute hides this parameter in IDLdoc output.
+	  </td>
+	</tr>
+	<tr>
+	  <td>in</td>
+	  <td>
+	    This attribute marks the parameter as an input to the
+	    routine.
+	  </td>
+	</tr>
+	<tr>
+	  <td>optional</td>
+	  <td>
+	    This attribute marks the parameter as optional; the
+	    routine does not always need this parameter, although
+	    there might be cases where the parameter is required
+	    (depending on the presence and value of other parameters).
+	  </td>
+	</tr>
+	<tr>
+	  <td>out</td>
+	  <td>
+	    This attribute marks the parameter as an output to the
+	    routine. This routine expects a named variable to be
+	    passed to this parameter (if passed at all).
+	  </td>
+	</tr>
+	<tr>
+	  <td>private</td>
+	  <td>
+	    This attribute hides this parameter in IDLdoc output when
+	    IDLdoc is run in "user" mode and marking it as "private"
+	    when run in "developer" mode.
+	  </td>
+	</tr>
+	<tr>
+	  <td>required</td>
+	  <td>
+	    This attribute marks the parameter as required.
+	  </td>
+	</tr>
+	<tr>
+	  <td>type</td>
+	  <td>
+	    This atrribute defines the data type of the
+	    parameter. Any string may be entered and is echoed in
+	    the IDLdoc output. The special type "boolean" will cause
+	    the calling syntax in IDLdoc output to use the IDL
+	    online help syntax of prepending a "/" to the parameter
+	    name.
+	  </td>
+	</tr>
+      </table>
+
+      <h2>File level comments</h2>
+
+      <p>Some tags may appear in the comments for any routine in a
+      file because they document attributes of the file. These tags
+      are described below.</p>
+
+      <table class="basic" cellspacing="0">
+	<tr>
+	  <th>Tag</th>
+	  <th>Description</th>
+	</tr>
+	<tr>
+	  <td>file_comments</td>
+	  <td>
+	    Text following the tag is copied to the top of the file
+	    in the IDLdoc output i.e. it is a comment on the file
+	    and not the routine it appears in. If there are multiple
+	    file_comments tags in the file, the comments will be
+	    concatenated in the order they are present in the file.
+	  </td>
+	</tr>
+	<tr>
+	  <td>hidden_file</td>
+	  <td>
+	    Presence of this tag indicates this entire file should
+	    be hidden in IDLdoc output.
+	  </td>
+	</tr>
+	<tr>
+	  <td>private_file</td>
+	  <td>
+	    Presence of this tag indicates this entire file should
+	    be hidden in IDLdoc output if IDLdoc is run in "user"
+	    mode, but shown when run in "developer" mode (the
+	    default).
+	  </td>
+	</tr>
+      </table>
+
+      <h2>Examples</h2>
+
+      For example, here's a sample class definition routine:
+
+      <pre class="snippet">;+
+; Define the instance variables of the array_list.
+;
+; @file_comments An array_list is an object representing a variable
+;                length list of scalar elements of any single type.
+;                Array_lists support adding elements at the end of
+;                the vector only, but any element may be removed from
+;                the array_list. An iterator is provided for
+;                efficient and easy looping throught the elements of
+;                the array_list.
+;
+; @field data pointer to an array
+; @field cur_size the current size of the data in the array
+; @field max_size the maximum size of the data in the current array
+; @field type type code (as in SIZE function) for the elements in the
+;        array_list
+; @field sample_struct pointer to a structure if the type is
+;        "structure"
+; @field iterators IDL_Container for the iterators of this array_list
+;
+; @requires IDL 6.0
+;
+; @author Michael D. Galloy
+; @history Created September 26, 2003
+; @copyright RSI, 2003
+;-
+pro array_list__define
+    compile_opt idl2
+
+    define = { array_list, $
+        data:ptr_new(), $
+        cur_size:0L, $
+        max_size:0L, $
+        type:0L, $
+        sample_struct:ptr_new(), $
+        iterators:obj_new() $
+        }
+end</pre>	
+
+      Another example routine, this time a simple function with a positional parameter and keyword:
+
+      <pre class="snippet">;+
+; Returns [b, a] for a linear function y = a * x + b that sends
+; inRange[0] -> range[0] and inRange[1] -> range[1].
+;
+; @returns dblarr(2)
+; @param inRange {in}{required}{type=2 element numeric array} input
+;        range
+; @keyword range {in}{optional}{type=dblarr(2)}{default=[0.D, 1.D]}
+;          output range
+; @categories math, object graphics
+;-
+function linear_function, inRange, range=outRange
+    compile_opt idl2
+
+    i_outRange = n_elements(outRange) eq 0 $
+        ? [0.D, 1.D] $
+        : double(outRange)
+
+    scale = [i_outRange[0] * inRange[1] - i_outRange[1] * inRange[0], $
+        i_outRange[1] - i_outRange[0]] / (inRange[1] - inRange[0])
+    return, scale
+end</pre>
+
+      One more example, this time a function method with an output keyword.
+
+      <pre class="snippet">;+
+; Finds the value associated with the given key.
+;
+; @returns the value of the associated key or -1L if not found
+; @param key {in}{type=key type} key to look up
+; @keyword found {out}{optional}{type=boolean} true if value found for
+;          given key
+;-
+function hash_table::get, key, found=found</pre>
+
+      <h2>Directory overviews</h2>
+
+      <p>The "dir-overview" file in each directory of the library is
+      copied into the directory overview file. Much of the content of
+      the overview file is obtained from the PRO code files in the
+      directory, but this allows header content as an overview of the
+      all the files in the directory to be inserted at the top of the
+      directory overview file.</p>
+
+
+      <h2>Library overview</h2>
+
+      <p>The library overview file is a single file which is inserted
+      into the opening page of the IDLdoc output. This file is copied
+      verbatim into the IDLdoc output except for the following tag
+      which allows for comments on the contents of the directories
+      found in the library.</p>
+
+      <table class="basic" cellspacing="0">
+	<tr>
+	  <th>Tag</th>
+	  <th>Description</th>
+	</tr>
+	<tr>
+	  <td>dir</td>
+	  <td>
+	    The text following this tag is the relative path
+	    (web-style, always with a /) to a directory in the
+	    library and a comment which is copied into a table in
+	    the opening page of the IDLdoc output.
+	
+	    <pre class="snippet">; @dir algorithms/math mathematical routines</pre>
+	  </td>
+	</tr>
+      </table>
+
+      <h2>Syntax of IDLdoc routine</h2>
+
+      <p>Below is the IDLdoc generated documentation for the IDLdoc main routine.</p>
+
+      	<div class="routine_details" id="_idldoc">
+
+	  <h2><a class="top" href="#container">top</a>idldoc</h2>
+	
+	  <p class="header">
+	    idldoc, <a href="#_idldoc_keyword_root">root</a>=<span class="result">string</span>[, <a href="#_idldoc_keyword_output">output</a>=<span class="result">string</span>][, <a href="#_idldoc_keyword_overview">overview</a>=<span class="result">string</span>][, <a href="#_idldoc_keyword_footer">footer</a>=<span class="result">string</span>][, <a href="#_idldoc_keyword_log_file">log_file</a>=<span class="result">string</span>][, /<a href="#_idldoc_keyword_user">user</a>][, /<a href="#_idldoc_keyword_quiet">quiet</a>][, /<a href="#_idldoc_keyword_silent">silent</a>][, /<a href="#_idldoc_keyword_embed">embed</a>][, /<a href="#_idldoc_keyword_nonavbar">nonavbar</a>][, <a href="#_idldoc_keyword_title">title</a>=<span class="result">string</span>][, <a href="#_idldoc_keyword_subtitle">subtitle</a>=<span class="result">string</span>][, /<a href="#_idldoc_keyword_statistics">statistics</a>][, <a href="#_idldoc_keyword_n_warnings">n_warnings</a>=<span class="result">variable</span>][, /<a href="#_idldoc_keyword_browse_routines">browse_routines</a>][, /<a href="#_idldoc_keyword_preformat">preformat</a>][, /<a href="#_idldoc_keyword_assistant">assistant</a>]</p>
+	
+	  <div class="comments">Calling routine for IDLdoc.</div>
+
+	    <h3>Keywords</h3>
+	    
+	    <h4 id="_idldoc_keyword_root">root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+  	      <span class="attr">required</span>
+	      <span class="attr">type:</span> <span class="value">string</span>
+	    </h4>
+	
+	    <div class="comments"> root directory for IDLdoc's
+            recursive search for .pro files.  IDLdoc will find any
+            files with the '.pro' suffix and include them in its file
+            listings.  Only directories with '.pro' files in them are
+            included in the directory listings.</div>
+	    
+	    <h4 id="_idldoc_keyword_output">output&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">string</span>
+	      <span class="attr">default:</span> <span class="value">same as root</span>
+	    </h4>
+	
+	    <div class="comments">
+            directory in which to create the HTML output and possible
+	    subdirectories</div>
+	    
+	    <h4 id="_idldoc_keyword_overview">overview&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">string</span>
+	    </h4>
+	
+	    <div class="comments"> filepath to a file containing the
+	    summary of the package information about each directory in
+	    the package.</div>
+	    
+	    <h4 id="_idldoc_keyword_footer">footer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">string</span>
+	    </h4>
+	
+	    <div class="comments"> filename for a footer to be placed
+	    at the bottom of files; this file can contain any valid
+	    HTML</div>
+	    
+	    <h4 id="_idldoc_keyword_log_file">log_file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">string</span>
+	    </h4>
+	
+	    <div class="comments"> set to a filename of a file to
+            contain the error messages generated by the IDLdoc run;
+            useful for automated runs of IDLdoc</div>
+	    
+	    <h4 id="_idldoc_keyword_user">user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> set to create a listing appropriate
+            for <em>users</em> of the given library hierarchy; the
+            default is to create documentation suited to developers.
+            If set private routines are not shown in the
+            documentation.</div>
+	    
+	    <h4 id="_idldoc_keyword_quiet">quiet&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> if set, print only
+	    warnings</div>
+	    
+	    <h4 id="_idldoc_keyword_silent">silent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> if set, print no
+	    messages</div>
+	    
+	    <h4 id="_idldoc_keyword_embed">embed&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> if set, embeds style sheet in each
+            HTML document; if this is not set, each HTML file will be
+            looking for the cascading style sheet idldoc.css in the
+            directory specified for the ROOT keyword</div>
+	    
+	    <h4 id="_idldoc_keyword_nonavbar">nonavbar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> set to exclude the
+	    navigation bar at the top of each page</div>
+	    
+	    <h4 id="_idldoc_keyword_title">title&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">string</span>
+	      <span class="attr">default:</span> <span class="value">Research Systems</span>
+	    </h4>
+	
+	    <div class="comments"> title of
+	    the library</div>
+	    
+	    <h4 id="_idldoc_keyword_subtitle">subtitle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">string</span>
+	      <span class="attr">default:</span> <span class="value">IDL version</span>
+	    </h4>
+	
+	    <div class="comments"> subtitle of
+	    the library</div>
+	    
+	    <h4 id="_idldoc_keyword_statistics">statistics&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> set to calculate several
+	    McCabe statistics for each routine</div>
+	    
+	    <h4 id="_idldoc_keyword_n_warnings">n_warnings&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">out</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">integer</span>
+	    </h4>
+	
+	    <div class="comments"> set to a named variable to
+	    contain the total number of warnings issued during the run</div>
+	    
+	    <h4 id="_idldoc_keyword_browse_routines">browse_routines&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> set to include a frame
+	    to browse through the routines of the current file</div>
+	    
+	    <h4 id="_idldoc_keyword_preformat">preformat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> set to produce output that
+	    will look like it does in the code files (line for line)</div>
+	    
+	    <h4 id="_idldoc_keyword_assistant">assistant&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> set to produce output for the
+	    IDL assistant help system instead of optimized for a web browser
+	    </div>
+	    	 
+	  <h3>Examples</h3><div class="value"> To run IDLdoc, try:
+	    <center><code>idldoc, root='C:\mycode'</code></center>
+	    where C:\mycode is the root of a directory tree containing IDL
+	    .pro files.
+	    </div>
+
+	  <h3>Version history</h3>
+
+	  <h4>Author</h4><div class="value"> Michael D. Galloy</div>
+	  
+	  <h4>Copyright</h4><div class="value"> RSI, 2002</div>
+	  
+	  <h3>Other attributes</h3>
+	  
+	  <h4>Requires IDL version</h4><div class="value"> IDL 6.0</div>
+	
+	</div>
+	
+
+
+      
+
+      <div id="tagline">Produced by IDLdoc 2.0 on Sat Mar 11 21:40:01 2006.</div>
+
+    </div>
+
+  </body>
+</html>
Index: trunk/Documentation/idldoc/docs/idldoc-dev-help2.html
===================================================================
--- trunk/Documentation/idldoc/docs/idldoc-dev-help2.html	(revision 69)
+++ trunk/Documentation/idldoc/docs/idldoc-dev-help2.html	(revision 69)
@@ -0,0 +1,1053 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- Template needs structure with the following fields:
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       idldoc_syntax_filename : file containing IDLdoc output for the idldoc routine
+       navbar_filename : filename of navbar template
+       footer : filename of footer file to include
+       tagline_filename : filename of tagline template
+     Plus stuff needed by the templates: navbar, tagline
+-->
+
+<!-- Generated by IDLdoc 2.0 on Sat Mar 11 21:40:01 2006 -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>IDLdoc Developer's Help (IDLdoc project documentation)</title>
+
+    
+    <style type="text/css" media="all">
+         
+/* CSS for all files which appear in the "main" viewing area: overview,
+   directory overviews, warnings, index, search, pro files, source
+   code, help, and etc files. */
+
+/* Link styles --------------------------------------------------------------- */
+
+a { text-decoration: none; }
+
+a:link, a:visited { 
+  color: #660000; 
+  border-bottom: 1px dotted #C0C0F0;   
+}
+
+a:hover, a:focus { 
+  color: #993333; 
+  background: #FFFFCC; 
+  border-bottom: 1px dotted #303099; 
+}
+
+
+/* Main styles --------------------------------------------------------------- */
+
+body {
+  margin: 0;
+  padding: 0;
+  font-size: 10pt;
+  font-family: Verdana, Helvetica, Arial, sans-serif;
+  background-color: #FFFFFF;
+}
+
+p {
+  margin-top: 0.5em;
+  margin-bottom: 0;
+}
+
+#container { margin: 1em; }
+
+code.section { white-space: pre; }
+
+pre.snippet {
+  margin-left: 5%;
+  background: #F0F0F0;
+  border: 1px dashed #999999;
+  width: 43em;
+  padding: 0.5em 0.5em 0.5em 0.5em;
+  white-space: pre;
+}
+
+/* Navbar styles ------------------------------------------------------------- */
+
+#navbar_title {
+  color: #000033;
+  background-color: #F0F0FF;
+  font-family: Arial, Helvetica, sans-serif;
+  padding: 20px 30px;
+  border-bottom: 1px solid #000033;
+}
+
+#navbar_title * {
+  margin: 0;
+  padding: 0;
+}
+
+#navbar_title h1 {
+  letter-spacing: 0.1em;
+  font-variant: small-caps;
+  font-size: 250%;
+  text-indent: -1em;
+  padding-left: 1em; 
+}
+
+#navbar_title h2 {
+  font-size: 110%;
+  font-weight: normal;
+  color: #333399;
+}
+
+#main_navbar table {
+  width: 100%;
+  border-bottom: 1px solid #666699;
+}
+
+#main_navbar td {
+  background: #CCCCFF;
+  font-size: 80%;
+  font-weight: bold;
+  font-family: Arial, Helvetica, sans-serif;
+  border-top: 3px solid #CCCCFF;
+  border-bottom: 3px solid #CCCCFF;
+  padding-left: 6px;
+  padding-right: 6px;
+  margin: 0;
+}
+
+#main_navbar td#selected {
+  background: #CCCCFF;
+  font-size: 80%;
+  font-weight: bold;
+  font-family: Arial, Helvetica, sans-serif;
+  border-top: 3px solid #333399;
+  border-bottom: 3px solid #CCCCFF;
+  padding-left: 6px;
+  padding-right: 6px;
+  margin: 0;
+}
+
+#main_navbar td#flexible {
+  width: 100%;
+  text-align: right;
+  padding-right: 1em;
+  background: #CCCCFF;
+  font-size: 70%;
+  font-weight: normal;
+  font-family: Arial, Helvetica, sans-serif;
+  text-transform: uppercase;
+  border-top: 3px solid #CCCCFF;
+  border-bottom: 3px solid #CCCCFF;
+}
+
+#main_navbar a:link, #main_navbar a:visited { color: #660000; border: 0; }
+
+#main_navbar a:hover, #main_navbar a:focus {
+  color: #FFFF66;
+  background: #CCCCFF;
+  border-bottom: 1px none #606099; 
+  border: 0;
+}
+
+#secondary_navbar {
+  font-size: 80%;
+  font-weight: normal;
+  font-family: Arial, Helvetica, sans-serif;
+  margin-top: 4px;
+  margin-left: 20px;
+  white-space: nowrap;
+}
+
+
+/* Tagline and footer styles ------------------------------------------------- */
+
+div#tagline {
+  margin-top: 6px;
+  border-top: 1px dotted lightsteelblue;
+  padding-top: 6px;
+  font-size: 66%;
+  font-style: italic;
+}
+
+div#footer {
+  margin-top: 6px;
+  border-top: 1px dotted lightsteelblue;
+  padding-top: 6px;
+  font-size: 66%;
+  font-style: italic;
+}
+
+/* Basic data presenation styles -------------------------------------------- */
+
+.index_letter { 
+  font-size: 300%;
+  font-weight: bold;
+  color: #000066; 
+  margin: 0.5em 0 0 -0.1em;
+}
+
+h1, h2, h3, h4 {
+  font-weight: normal;
+  color: #3333CC;
+}
+
+h1 {
+  padding-top: 0.75em;
+  font-size: 160%;
+}
+
+h2 {
+  padding-top: 1em;
+  font-size: 120%;
+  }
+
+h3 {
+  padding-top: 0.75em;
+  margin-bottom: 0.25em;
+  font-size: 100%;
+}
+
+h4 {
+  padding: 0;
+  margin: 0.5em 0 0 0;
+  font-size: 80%;
+}
+
+table.basic {
+  empty-cells: show;
+  margin: 1.5em 1em 0 1em;
+  border: 1px dotted #CFCFFF;
+  font-size: 80%;
+}
+
+table.basic th {
+  background-color: #F0F0FF;
+  font-weight: bold;
+  text-align: left;
+  padding: 4px 1em 4px 4px;
+  border-bottom: 1px dotted #666699;
+}
+
+table.basic td {
+  vertical-align: top;
+  padding: 4px 1em 4px 4px;
+}
+
+dd {
+  margin-bottom: 0.25em;
+  font-size: 80%;
+}
+
+
+/* Warnings styles ----------------------------------------------------------- */
+
+
+#todo dl, #bugs dl { 
+  margin: 0 0 0 1.5em;
+  font-size: 80%;
+}
+
+#todo dd, #bugs dd { 
+  margin-left: 3em; 
+  font-size: 100%;
+}
+
+#undoc table, #obsolete table, #statistics table {
+  width: 80%;
+  margin-left: 2em;
+}
+
+#undoc td, #obsolete td, #statistics td { 
+  padding: 0 0 0 0;
+  font-size: 80%;
+  white-space: nowrap;
+}
+
+#undoc td.docroutine, #obsolete td.obsroutine, #statistics td.statroutine { width: 50%; }
+
+#undoc td.docstat, #statistics td.stat { 
+  width: 50%;
+  text-align: right;
+}
+
+#undoc td.partialdoc, #statistics td.caution { color: #CC6600; }
+
+#undoc td.notdoc, #statistics td.warning { color: #993333; }
+
+/* File + routine styles ----------------------------------------------------- */
+
+h1.directory { 
+  padding: 1em 0 0 0;
+  margin: 0;
+  font-size: 66%;
+}
+
+h1.directory a { border-bottom: 0; }
+
+h2.pro_file { 
+  padding: 0;
+  margin: 0;
+  font-size: 140%;
+}
+
+div#file_attr {
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+div#file_attr dt {
+  font-size: 80%;
+  font-weight: bold;
+}
+
+div#file_attr dd {
+  font-size: 80%;
+}
+
+div#class_diagram { 
+  padding: 1em 0 1em 0; 
+  white-space: pre;
+  font-family: 'Courier New';
+}
+
+table#sav_attr { 
+  font-size: 90%; 
+  margin: 1em; 
+  padding: 1em 1em 1em 1em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+table#sav_attr th { text-align: left; }
+
+table#sav_attr td { vertical-align: top; padding-right: 2em; }
+
+table#sav_attr td.value { width: 20em; padding-right: 0em; font-style: italic; }
+
+p.sav_warning { margin-left: 4em; font-family: 80%; }
+
+table.variables { 
+  font-family: 'Courier New', monospace; 
+  font-size: 80%; 
+  text-indent: -2em; 
+  padding-left: 2em; 
+}
+
+table.variables td.image { width: 64px; }
+
+div#file_comments { 
+  margin: 2em;
+  font-size: 80%;
+}
+
+
+div.field_summary {
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #FFFFF0;
+  border: 1px dotted #C0C000;
+}
+
+div#routine_summary {  
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F0F0FF;
+  border: 1px dotted #9999FF;
+}
+
+div.field_summary h2, div#routine_summary h2 { 
+  padding: 0.5em 0 0 0;
+  margin: 0;
+}
+
+div.field_summary table, div.field_summary p { 
+  margin: 1em 1em;
+}
+
+div.field_summary td.name { 
+  vertical-align: top;
+  padding-bottom: 0.25em;
+  color: #3333CC;
+}
+
+div.field_summary span.field_type {  
+  font-weight: normal;
+  font-size: 80%;
+  color: black;
+}
+
+div.field_summary td.comments { 
+  vertical-align: top;
+  padding-left: 2em;
+  font-size: 80%;
+}
+
+p.commaList { 
+  margin: 1em 1em 1em 1em;
+}
+
+span.warning { 
+  color: #CC6633;
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+}
+
+span.categories { 
+  color: #006633;
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+}
+
+span.undoc { 
+  color: #FF6633;
+  font-weight: bold;
+  font-size: 80%;
+  text-transform: uppercase;
+}
+
+span.attr { 
+  color: #006633;
+  font-weight: bold;
+  font-size: 80%;
+  text-transform: uppercase;
+}
+
+span.value { 
+  color: #006633;
+  font-weight: normal;
+  text-transform: none;
+}
+
+a.top { 
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+  float: right;
+}
+
+span.result { 
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-style: italic;
+  font-size: 80%;
+}
+
+div#routine_summary p, div.routine_details p.header { 
+  padding-top: 0.5em;
+  margin-left: 1.5em;
+  text-indent: -1.5em;
+  font-family: 'Courier New', monospace;
+}
+
+div.routine_details {  
+  padding: 0.5em 1em 0.5em 1em;
+  margin: 1em;
+  border: 1px dotted #CCCCCC;
+}
+
+div.routine_details h2 {  
+  padding-top: 0;
+  margin-top: 0;
+}
+
+div.routine_details div.value { 
+  margin: 0 1em 0 1em;
+  font-size: 80%;
+}
+
+div.routine_details div.comments { 
+  font-size: 80%;
+  margin: 0.75em 1em 1em 1em;
+}
+
+div.routine_details div.preformat { 
+  white-space: pre;
+}
+
+table.statistics { 
+  font-size: 80%;
+  margin-left: 1em;
+}
+
+table.statistics td { 
+  padding: 0 2em 0 0;
+}
+
+/* Overview styles ----------------------------------------------------------- */
+
+div.overview { 
+  width: 100%;
+  margin-top: 1em;
+  clear: both;
+}
+
+div.overview table {
+  empty-cells: show;
+  font-size: 90%;
+  margin: 1em 1em 1em 1em;
+  padding: 1em 0.5em 1em 0.5em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+div.overview td {
+  padding: 3px 1em 3px 1em;
+}
+
+div.overview td.dir {
+  width: 1%;
+  vertical-align: top;
+  text-align: right;
+  padding-right: 1em;
+}
+
+
+/* Navigation list styles for tree structures -------------------------------- */
+
+#tree {
+  text-align: left;
+  font-size: 90%;
+  margin: 0.75em 0 0.75em 0;
+  padding: 0;
+}
+
+#tree ul {
+  text-align: left;
+  margin: 0;
+  padding: 0;
+}
+
+#tree li {
+  margin: 0 0 0 15px;
+  padding: 0;
+  list-style-type: none;
+}
+
+#tree .symbols {
+  float: left;
+  width: 12px;
+  height: 1em;
+  padding-left: 4px;
+  background-position: 0 100%;
+  background-repeat: no-repeat;
+}
+
+/* Search styles ------------------------------------------------------------- */
+
+input.writein { 
+  padding-left: 0.5em;
+  border: 1px solid #CCCCCC;
+  font-family: 'Courier New';
+  background: #FFFFF3;
+}
+
+#search form { 
+  margin-left: 2em;
+}
+
+#search table { 
+  margin: 1em 1em 0 2em;
+  padding: 1em 2em 1em 2em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+#search tr { 
+  text-align: center;
+}
+
+#search td { 
+  font-size: 80%; 
+  text-align: left;
+}
+
+#search td * { 
+  vertical-align: middle;
+}
+
+#search p { 
+  font-size: 66%;
+  margin: 0 3em 2em 3em;
+}
+
+/* Help styles --------------------------------------------------------------- */
+
+div.toc { 
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F0F0FF;
+  border: 1px dotted #9999FF;  
+  width: 19em;
+}
+
+div.right { 
+  float: right;
+  width: 22em;
+}
+
+ol.toc { 
+  list-style-type: upper-roman;
+}
+
+ol.toc ol { 
+  padding-left: 3em;
+  margin-left: 0;
+  list-style-type: lower-alpha;
+}
+
+dl.variables dt { font-size: 80%; }
+dl.variables dd { margin-bottom: 0.5em; }
+
+    </style>	
+    <style type="text/css" media="print">
+         #navbar_title { 
+  background-color: #FFFFFF;  
+}
+
+#main_navbar td {
+  background: #FFFFFF;
+  border-top: 0.25em solid #FFFFFF;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#main_navbar td#selected {
+  background: #FFFFFF;
+  border-top: 0.25em solid #333399;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#main_navbar td#flexible {
+  background: #FFFFFF;
+  border-top: 0.25em solid #FFFFFF;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#secondary_navbar {
+  display: none;
+}
+
+    </style>
+    
+
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="IDLdoc Developer's Help (IDLdoc project documentation)";
+      }
+    </script>
+  </head>
+
+
+  <body onload="setTitle();">
+
+    <div id="navbar_title">
+  <h1>IDLdoc project documentation</h1>
+  <h2>"The IDL code documentation project documentation"</h2>
+</div>
+
+
+
+    <div id="container">
+
+      <h1>Modifying IDLdoc's output</h1>
+
+      <p>This guide discusses how to modify the output from IDLdoc by
+      modifying the template files (*.tt) that are provided with
+      IDLdoc. Currently, only the templates directly documenting *.pro
+      files (pro-file.tt), templates included by pro-file.tt
+      (navbar.tt and tagline.tt) and objects implementing the template
+      interface used by pro-file.tt (IDLdocRoutine and IDLdocParam)
+      are documented for user customization. The plans is to release
+      the documentation for other templates as they become more stable
+      in future releases of IDLdoc.</p>
+
+      <p>In general, if one of the below variables is not
+      defined/not-appropriate it will be set to '' or -1.</p>
+
+      <h2>navbar.tt</h2>
+
+      <p>This template is included by many other templates requiring
+      those templates to provide the following variables:</p>
+
+      <dl class="variables">
+	<dt>title</dt>
+	<dd>title of the IDLdoc library</dd>
+
+	<dt>subtitle</dt>
+	<dd>subtitle of the IDLdoc library</dd>
+
+	<dt>categories_href</dt>
+	<dd>relative link to the categories page</dd>
+
+	<dt>categories_selected</dt>
+	<dd>boolean on whether the current page is the categories page</dd>
+
+	<dt>dir_overview_href</dt>
+	<dd>relative link to the directory overview page</dd>
+
+	<dt>dir_overview_selected</dt>
+	<dd>boolean on whether the current page is the directory overview page</dd>
+
+	<dt>etc_selected</dt>
+	<dd>boolean on whether the current page is an "Etc" page</dd>
+
+	<dt>file_selected</dt>
+	<dd>boolean on whether the current page is documentation of a PRO or SAV file</dd>
+
+	<dt>help_href</dt>
+	<dd>relative link to the help page</dd>
+
+	<dt>help_selected</dt>
+	<dd>boolean on whether the current page is the help page</dd>
+
+	<dt>index_href</dt>
+	<dd>relative link to the full index</dd>
+
+	<dt>index_selected</dt>
+	<dd>boolean on whether the current page is the full index page</dd>
+
+	<dt>overview_href</dt>
+	<dd>relative link to the library overview page</dd>
+
+	<dt>overview_selected</dt>
+	<dd>boolean on whether the current page is the library overview page</dd>
+
+	<dt>search_href</dt>
+	<dd>relative link to the search page</dd>
+
+	<dt>search_selected</dt>
+	<dd>boolean on whether the current page is the search page</dd>
+
+	<dt>source_href</dt>
+	<dd>relative link to the source code of a PRO file</dd>
+
+	<dt>source_selected</dt>
+	<dd>boolean on whether the current page is a source code page</dd>
+
+	<dt>user</dt>
+	<dd>boolean on whether the current documentation is generated for a user (as opposed to a developer)</dd>
+
+	<dt>prev_file_href</dt>
+	<dd>relative link to the previous PRO or SAV file page</dd>
+
+	<dt>next_file_href</dt>
+	<dd>relative link the next PRO or SAV file page</dd>
+
+	<dt>view_single_page_href</dt>
+	<dd>link to the current page</dd>
+
+	<dt>view_frames_href</dt>
+	<dd>link to the library index.html page</dd>
+
+	<dt>summary_fields_href</dt>
+	<dd>internal link to the fields summary; '' if no fields</dd>
+
+	<dt>summary_routine_href</dt>
+	<dd>internal link to the routine summary, '' if only one routine</dd>
+
+	<dt>details_routine_href</dt>
+	<dd>internal link to the start of the routine details</dd>
+      </dl>
+
+      <h2>tagline.tt</h2>
+
+      <p>This template is included by many other templates requiring
+      those templates to provide the following variables:</p>
+
+      <dl class="variables">
+	<dt>version</dt>
+	<dd>IDLdoc version as a string</dd>
+
+	<dt>date</dt>
+	<dd>string containing date of file creation</dd>
+      </dl>
+
+
+      <h2>pro-file.tt</h2>
+
+      <p>This file produces the output for the documentation of IDL
+      source code files. Variables provided to this template are all
+      those required by the navbar.tt and tagline.tt templates and
+      those listed below:</p>
+
+      <dl class="variables">
+	<dt>has_fields</dt>
+	<dd>base filename</dd>
+
+	<dt>is_class</dt>
+	<dd>boolean on whether this file corresponds to a class definition (and class variable is present)</dd>
+
+	<dt>class</dt>
+	<dd>IDLdocClass object</dd>
+
+	<dt>fields</dt>
+	<dd>base filename</dd>
+
+	<dt>pro_file</dt>
+	<dd>base filename</dd>
+
+	<dt>pro_dir</dt>
+	<dd>directory for file</dd>
+
+	<dt>root</dt>
+	<dd>relative path to the root of the library</dd>
+
+	<dt>last_modified</dt>
+	<dd>date last modified as a string</dd>
+
+	<dt>file_comments</dt>
+	<dd>file level comments</dd>
+
+	<dt>nroutines</dt>
+	<dd>number of IDLdocRoutine objects in routines array</dd>
+
+	<dt>routines</dt>
+	<dd>array of IDLdocRoutine objects; see below for variables in
+	these objects</dd>
+
+	<dt>nonavbar</dt>
+	<dd>set to 1 to indicate no navbar, otherwise set to 0</dd>
+
+	<dt>navbar_filename</dt>
+	<dd>filename of navbar template; appropriate for
+	INCLUDE_TEMPLATE directive</dd>
+
+	<dt>embed</dt>
+	<dd>0 for link to CSS, 1 for embed CSS</dd>
+
+	<dt>css_location</dt>
+	<dd>if embed then string filename of CSS file location, o/w
+	href to CSS file; for all media types</dd>
+
+	<dt>print_css_location</dt>
+	<dd>if embed then string filename of CSS file location, o/w
+	href to CSS file; for printing only</dd>
+
+	<dt>footer</dt>
+	<dd>filename of user-created footer to insert; appropriate for
+	the INCLUDE directive</dd>
+
+	<dt>separator</dt>
+	<dd>correct path separator, / or \ depending on Unix or
+	Windows system</dd>
+
+	<dt>tagline_filename</dt>
+	<dd>name of template for the bottom of the file; appropriate
+	for the INCLUDE_TEMPLATE directive</dd>
+      </dl>
+
+
+      <h3>IDLdocRoutine objects in pro-file.tt</h3>
+
+      <dl class="variables">
+	<dt>routine_name</dt>
+	<dd>string name of the routine</dd>
+
+	<dt>routine_url</dt>
+	<dd>internal url to the start of the routine details</dd>
+
+	<dt>is_func</dt>
+	<dd>boolean on whether the routine is a function</dd>
+
+	<dt>obsolete</dt>
+	<dd>boolean on whether the routine is marked obsolete</dd>
+
+	<dt>abstract</dt>
+	<dd>boolean on whether the routine is abstract (i.e. not implemented)</dd>
+
+	<dt>private</dt>
+	<dd>boolean on whether the routine is private (i.e. not visible in USER mode)</dd>
+
+	<dt>categories_present</dt>
+	<dd>boolean on whether the routine is marked with categories</dd>
+
+	<dt>categories</dt>
+	<dd>string array of list of categories as listed in the source</dd>
+
+	<dt>ntotalparams</dt>
+	<dd>total number of positional parameters and keywords</dd>
+
+	<dt>nparams</dt>
+	<dd>number of positional parameters</dd>
+
+	<dt>params</dt>
+	<dd>array of IDLdocParam objects</dd>
+
+	<dt>nkeywords</dt>
+	<dd>number of keywords</dd>
+
+	<dt>keywords</dt>
+	<dd>array of IDLdocParam objects</dd>
+
+	<dt>short_comment</dt>
+	<dd>first sentence of the routine comments</dd>
+
+	<dt>statistics</dt>
+	<dd>boolean on whether the McCabe complexity statistics have been calculated</dd>
+
+	<dt>mccabe_cyclic</dt>
+	<dd>McCabe Cyclic complexity (computed)</dd>
+
+	<dt>mccabe_essential</dt>
+	<dd>McCabe Essential complexity (computed)</dd>
+
+	<dt>mccabe_mod_design</dt>
+	<dd>McCabe Modular Design complexity (computed)</dd>
+
+	<dt>routine_comments</dt>
+	<dd>string array of comments for the routine</dd>
+
+	<dt>preformat</dt>
+	<dd>true if the comments are to be stripped from the source code and placed in the output with the same line breaks and formatting as the source code</dd>
+
+	<dt>returns_present</dt>
+	<dd>boolean on whether the returns tag is present</dd>
+
+	<dt>returns</dt>
+	<dd>documents the return value of a function</dd>
+
+	<dt>examples_present</dt>
+	<dd>boolean on whether the examples tag is present</dd>
+
+	<dt>examples</dt>
+	<dd>string array of example code using the routine</dd>
+
+	<dt>author_present</dt>
+	<dd>boolean on whether the author tag is present</dd>
+
+	<dt>author</dt>
+	<dd>author(s) of the routine</dd>
+
+	<dt>version_present</dt>
+	<dd>boolean on whether the version tag is present</dd>
+
+	<dt>version</dt>
+	<dd>version of the routine</dd>
+
+	<dt>history_present</dt>
+	<dd>boolean on whether the history tag is present</dd>
+
+	<dt>history</dt>
+	<dd>string array of history of the routine</dd>
+
+	<dt>copyright_present</dt>
+	<dd>boolean on whether the copyright tag is present</dd>
+
+	<dt>copyright</dt>
+	<dd>string array of copyright information about the routine</dd>
+
+	<dt>obsolete_comments_present</dt>
+	<dd>boolean on whether the obsolete tag is present</dd>
+
+	<dt>obsolete_comments</dt>
+	<dd>comments following the obsolete tag and further explaining the status of the routine (and alternatives)</dd>
+
+	<dt>bugs_present</dt>
+	<dd>boolean on whether the bugs tag is present</dd>
+
+	<dt>bugs</dt>
+	<dd>string array describing known issues with the routine</dd>
+
+	<dt>todo_present</dt>
+	<dd>boolean on whether the todo tag is present</dd>
+
+	<dt>todo</dt>
+	<dd>string array of items that still need to be done for the routine</dd>
+
+	<dt>restrictions_present</dt>
+	<dd>boolean on whether the restrictions tag is present</dd>
+
+	<dt>restrictions</dt>
+	<dd>restrictions on the use of the routine</dd>
+
+	<dt>inherits_present</dt>
+	<dd>boolean on whether the inherits tag is present</dd>
+
+	<dt>inherits</dt>
+	<dd>desribes other classes the class inherits from (this is not needed any longer)</dd>
+
+	<dt>requires_present</dt>
+	<dd>boolean on whether the requires tag is present</dd>
+
+	<dt>requires</dt>
+	<dd>which IDL verion is necessary to run this routine</dd>
+
+	<dt>uses_present</dt>
+	<dd>boolean on whether the uses tag is present</dd>
+
+	<dt>uses</dt>
+	<dd>which routines this routine calls</dd>
+
+	<dt>common_blocks_present</dt>
+	<dd>boolean on whether the common block information is present</dd>
+
+	<dt>common_blocks</dt>
+	<dd>names of common blocks used by routine</dd>
+
+	<dt>precondition_present</dt>
+	<dd>boolean on whether the routine is marked with a precondition tag</dd>
+
+	<dt>precondition</dt>
+	<dd>condition that should be satisfied before the routine is executed</dd>
+
+	<dt>postcondition_present</dt>
+	<dd>boolean on whether the routine is marked with a postcondition tag</dd>
+
+	<dt>postcondition</dt>
+	<dd>condition that should be satisfied after the routine is executed</dd>
+
+      </dl>
+
+
+      <h3>IDLdocParam objects in pro-file.tt</h3>
+
+      <dl class="variables">
+	<dt>name</dt>
+	<dd>name of the parameter</dd>
+
+	<dt>in</dt>
+	<dd>true if parameter is an input to the routine</dd>
+
+	<dt>out</dt>
+	<dd>true if the parameter is an output to the routine</dd>
+
+	<dt>optional</dt>
+	<dd>true if parameter is optional</dd>
+
+	<dt>required</dt>
+	<dd>true if parameter is required</dd>
+
+	<dt>private</dt>
+	<dd>hidden if parameter is supposed to be hidden from users of the routine, but visible to developers</dd>
+
+	<dt>hidden</dt>
+	<dd>true if parameter is supposed to be hidden</dd>
+
+	<dt>type</dt>
+	<dd>data type of the parameter</dd>
+
+	<dt>boolean</dt>
+	<dd>true if the param is a switch</dd>
+
+	<dt>default</dt>
+	<dd>default value of the parameter</dd>
+
+	<dt>comments</dt>
+	<dd>string array of comments for parameter</dd>
+
+	<dt>delim</dt>
+	<dd>appropriate delimiter preceeding parameter in a syntax listing of the routine (i.e. always a comma unless it's the first parameter of a function call)</dd>
+      </dl>
+
+      
+
+      <div id="tagline">Produced by IDLdoc 2.0 on Sat Mar 11 21:40:01 2006.</div>
+
+    </div>
+
+  </body>
+</html>
Index: trunk/Documentation/idldoc/docs/idldoc-help.html
===================================================================
--- trunk/Documentation/idldoc/docs/idldoc-help.html	(revision 69)
+++ trunk/Documentation/idldoc/docs/idldoc-help.html	(revision 69)
@@ -0,0 +1,816 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- Template needs structure with the following fields:
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       navbar_filename : filename of navbar template
+       footer : filename of footer file to include
+       tagline_filename : filename of tagline template
+     Plus fields needed by the templates: navbar, tagline
+-->
+
+<!-- Generated by IDLdoc 2.0 on Sat Mar 11 21:40:01 2006 -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>IDLdoc Help (IDLdoc project documentation)</title>
+
+    
+    <style type="text/css" media="all">
+         
+/* CSS for all files which appear in the "main" viewing area: overview,
+   directory overviews, warnings, index, search, pro files, source
+   code, help, and etc files. */
+
+/* Link styles --------------------------------------------------------------- */
+
+a { text-decoration: none; }
+
+a:link, a:visited { 
+  color: #660000; 
+  border-bottom: 1px dotted #C0C0F0;   
+}
+
+a:hover, a:focus { 
+  color: #993333; 
+  background: #FFFFCC; 
+  border-bottom: 1px dotted #303099; 
+}
+
+
+/* Main styles --------------------------------------------------------------- */
+
+body {
+  margin: 0;
+  padding: 0;
+  font-size: 10pt;
+  font-family: Verdana, Helvetica, Arial, sans-serif;
+  background-color: #FFFFFF;
+}
+
+p {
+  margin-top: 0.5em;
+  margin-bottom: 0;
+}
+
+#container { margin: 1em; }
+
+code.section { white-space: pre; }
+
+pre.snippet {
+  margin-left: 5%;
+  background: #F0F0F0;
+  border: 1px dashed #999999;
+  width: 43em;
+  padding: 0.5em 0.5em 0.5em 0.5em;
+  white-space: pre;
+}
+
+/* Navbar styles ------------------------------------------------------------- */
+
+#navbar_title {
+  color: #000033;
+  background-color: #F0F0FF;
+  font-family: Arial, Helvetica, sans-serif;
+  padding: 20px 30px;
+  border-bottom: 1px solid #000033;
+}
+
+#navbar_title * {
+  margin: 0;
+  padding: 0;
+}
+
+#navbar_title h1 {
+  letter-spacing: 0.1em;
+  font-variant: small-caps;
+  font-size: 250%;
+  text-indent: -1em;
+  padding-left: 1em; 
+}
+
+#navbar_title h2 {
+  font-size: 110%;
+  font-weight: normal;
+  color: #333399;
+}
+
+#main_navbar table {
+  width: 100%;
+  border-bottom: 1px solid #666699;
+}
+
+#main_navbar td {
+  background: #CCCCFF;
+  font-size: 80%;
+  font-weight: bold;
+  font-family: Arial, Helvetica, sans-serif;
+  border-top: 3px solid #CCCCFF;
+  border-bottom: 3px solid #CCCCFF;
+  padding-left: 6px;
+  padding-right: 6px;
+  margin: 0;
+}
+
+#main_navbar td#selected {
+  background: #CCCCFF;
+  font-size: 80%;
+  font-weight: bold;
+  font-family: Arial, Helvetica, sans-serif;
+  border-top: 3px solid #333399;
+  border-bottom: 3px solid #CCCCFF;
+  padding-left: 6px;
+  padding-right: 6px;
+  margin: 0;
+}
+
+#main_navbar td#flexible {
+  width: 100%;
+  text-align: right;
+  padding-right: 1em;
+  background: #CCCCFF;
+  font-size: 70%;
+  font-weight: normal;
+  font-family: Arial, Helvetica, sans-serif;
+  text-transform: uppercase;
+  border-top: 3px solid #CCCCFF;
+  border-bottom: 3px solid #CCCCFF;
+}
+
+#main_navbar a:link, #main_navbar a:visited { color: #660000; border: 0; }
+
+#main_navbar a:hover, #main_navbar a:focus {
+  color: #FFFF66;
+  background: #CCCCFF;
+  border-bottom: 1px none #606099; 
+  border: 0;
+}
+
+#secondary_navbar {
+  font-size: 80%;
+  font-weight: normal;
+  font-family: Arial, Helvetica, sans-serif;
+  margin-top: 4px;
+  margin-left: 20px;
+  white-space: nowrap;
+}
+
+
+/* Tagline and footer styles ------------------------------------------------- */
+
+div#tagline {
+  margin-top: 6px;
+  border-top: 1px dotted lightsteelblue;
+  padding-top: 6px;
+  font-size: 66%;
+  font-style: italic;
+}
+
+div#footer {
+  margin-top: 6px;
+  border-top: 1px dotted lightsteelblue;
+  padding-top: 6px;
+  font-size: 66%;
+  font-style: italic;
+}
+
+/* Basic data presenation styles -------------------------------------------- */
+
+.index_letter { 
+  font-size: 300%;
+  font-weight: bold;
+  color: #000066; 
+  margin: 0.5em 0 0 -0.1em;
+}
+
+h1, h2, h3, h4 {
+  font-weight: normal;
+  color: #3333CC;
+}
+
+h1 {
+  padding-top: 0.75em;
+  font-size: 160%;
+}
+
+h2 {
+  padding-top: 1em;
+  font-size: 120%;
+  }
+
+h3 {
+  padding-top: 0.75em;
+  margin-bottom: 0.25em;
+  font-size: 100%;
+}
+
+h4 {
+  padding: 0;
+  margin: 0.5em 0 0 0;
+  font-size: 80%;
+}
+
+table.basic {
+  empty-cells: show;
+  margin: 1.5em 1em 0 1em;
+  border: 1px dotted #CFCFFF;
+  font-size: 80%;
+}
+
+table.basic th {
+  background-color: #F0F0FF;
+  font-weight: bold;
+  text-align: left;
+  padding: 4px 1em 4px 4px;
+  border-bottom: 1px dotted #666699;
+}
+
+table.basic td {
+  vertical-align: top;
+  padding: 4px 1em 4px 4px;
+}
+
+dd {
+  margin-bottom: 0.25em;
+  font-size: 80%;
+}
+
+
+/* Warnings styles ----------------------------------------------------------- */
+
+
+#todo dl, #bugs dl { 
+  margin: 0 0 0 1.5em;
+  font-size: 80%;
+}
+
+#todo dd, #bugs dd { 
+  margin-left: 3em; 
+  font-size: 100%;
+}
+
+#undoc table, #obsolete table, #statistics table {
+  width: 80%;
+  margin-left: 2em;
+}
+
+#undoc td, #obsolete td, #statistics td { 
+  padding: 0 0 0 0;
+  font-size: 80%;
+  white-space: nowrap;
+}
+
+#undoc td.docroutine, #obsolete td.obsroutine, #statistics td.statroutine { width: 50%; }
+
+#undoc td.docstat, #statistics td.stat { 
+  width: 50%;
+  text-align: right;
+}
+
+#undoc td.partialdoc, #statistics td.caution { color: #CC6600; }
+
+#undoc td.notdoc, #statistics td.warning { color: #993333; }
+
+/* File + routine styles ----------------------------------------------------- */
+
+h1.directory { 
+  padding: 1em 0 0 0;
+  margin: 0;
+  font-size: 66%;
+}
+
+h1.directory a { border-bottom: 0; }
+
+h2.pro_file { 
+  padding: 0;
+  margin: 0;
+  font-size: 140%;
+}
+
+div#file_attr {
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+div#file_attr dt {
+  font-size: 80%;
+  font-weight: bold;
+}
+
+div#file_attr dd {
+  font-size: 80%;
+}
+
+div#class_diagram { 
+  padding: 1em 0 1em 0; 
+  white-space: pre;
+  font-family: 'Courier New';
+}
+
+table#sav_attr { 
+  font-size: 90%; 
+  margin: 1em; 
+  padding: 1em 1em 1em 1em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+table#sav_attr th { text-align: left; }
+
+table#sav_attr td { vertical-align: top; padding-right: 2em; }
+
+table#sav_attr td.value { width: 20em; padding-right: 0em; font-style: italic; }
+
+p.sav_warning { margin-left: 4em; font-family: 80%; }
+
+table.variables { 
+  font-family: 'Courier New', monospace; 
+  font-size: 80%; 
+  text-indent: -2em; 
+  padding-left: 2em; 
+}
+
+table.variables td.image { width: 64px; }
+
+div#file_comments { 
+  margin: 2em;
+  font-size: 80%;
+}
+
+
+div.field_summary {
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #FFFFF0;
+  border: 1px dotted #C0C000;
+}
+
+div#routine_summary {  
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F0F0FF;
+  border: 1px dotted #9999FF;
+}
+
+div.field_summary h2, div#routine_summary h2 { 
+  padding: 0.5em 0 0 0;
+  margin: 0;
+}
+
+div.field_summary table, div.field_summary p { 
+  margin: 1em 1em;
+}
+
+div.field_summary td.name { 
+  vertical-align: top;
+  padding-bottom: 0.25em;
+  color: #3333CC;
+}
+
+div.field_summary span.field_type {  
+  font-weight: normal;
+  font-size: 80%;
+  color: black;
+}
+
+div.field_summary td.comments { 
+  vertical-align: top;
+  padding-left: 2em;
+  font-size: 80%;
+}
+
+p.commaList { 
+  margin: 1em 1em 1em 1em;
+}
+
+span.warning { 
+  color: #CC6633;
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+}
+
+span.categories { 
+  color: #006633;
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+}
+
+span.undoc { 
+  color: #FF6633;
+  font-weight: bold;
+  font-size: 80%;
+  text-transform: uppercase;
+}
+
+span.attr { 
+  color: #006633;
+  font-weight: bold;
+  font-size: 80%;
+  text-transform: uppercase;
+}
+
+span.value { 
+  color: #006633;
+  font-weight: normal;
+  text-transform: none;
+}
+
+a.top { 
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+  float: right;
+}
+
+span.result { 
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-style: italic;
+  font-size: 80%;
+}
+
+div#routine_summary p, div.routine_details p.header { 
+  padding-top: 0.5em;
+  margin-left: 1.5em;
+  text-indent: -1.5em;
+  font-family: 'Courier New', monospace;
+}
+
+div.routine_details {  
+  padding: 0.5em 1em 0.5em 1em;
+  margin: 1em;
+  border: 1px dotted #CCCCCC;
+}
+
+div.routine_details h2 {  
+  padding-top: 0;
+  margin-top: 0;
+}
+
+div.routine_details div.value { 
+  margin: 0 1em 0 1em;
+  font-size: 80%;
+}
+
+div.routine_details div.comments { 
+  font-size: 80%;
+  margin: 0.75em 1em 1em 1em;
+}
+
+div.routine_details div.preformat { 
+  white-space: pre;
+}
+
+table.statistics { 
+  font-size: 80%;
+  margin-left: 1em;
+}
+
+table.statistics td { 
+  padding: 0 2em 0 0;
+}
+
+/* Overview styles ----------------------------------------------------------- */
+
+div.overview { 
+  width: 100%;
+  margin-top: 1em;
+  clear: both;
+}
+
+div.overview table {
+  empty-cells: show;
+  font-size: 90%;
+  margin: 1em 1em 1em 1em;
+  padding: 1em 0.5em 1em 0.5em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+div.overview td {
+  padding: 3px 1em 3px 1em;
+}
+
+div.overview td.dir {
+  width: 1%;
+  vertical-align: top;
+  text-align: right;
+  padding-right: 1em;
+}
+
+
+/* Navigation list styles for tree structures -------------------------------- */
+
+#tree {
+  text-align: left;
+  font-size: 90%;
+  margin: 0.75em 0 0.75em 0;
+  padding: 0;
+}
+
+#tree ul {
+  text-align: left;
+  margin: 0;
+  padding: 0;
+}
+
+#tree li {
+  margin: 0 0 0 15px;
+  padding: 0;
+  list-style-type: none;
+}
+
+#tree .symbols {
+  float: left;
+  width: 12px;
+  height: 1em;
+  padding-left: 4px;
+  background-position: 0 100%;
+  background-repeat: no-repeat;
+}
+
+/* Search styles ------------------------------------------------------------- */
+
+input.writein { 
+  padding-left: 0.5em;
+  border: 1px solid #CCCCCC;
+  font-family: 'Courier New';
+  background: #FFFFF3;
+}
+
+#search form { 
+  margin-left: 2em;
+}
+
+#search table { 
+  margin: 1em 1em 0 2em;
+  padding: 1em 2em 1em 2em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+#search tr { 
+  text-align: center;
+}
+
+#search td { 
+  font-size: 80%; 
+  text-align: left;
+}
+
+#search td * { 
+  vertical-align: middle;
+}
+
+#search p { 
+  font-size: 66%;
+  margin: 0 3em 2em 3em;
+}
+
+/* Help styles --------------------------------------------------------------- */
+
+div.toc { 
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F0F0FF;
+  border: 1px dotted #9999FF;  
+  width: 19em;
+}
+
+div.right { 
+  float: right;
+  width: 22em;
+}
+
+ol.toc { 
+  list-style-type: upper-roman;
+}
+
+ol.toc ol { 
+  padding-left: 3em;
+  margin-left: 0;
+  list-style-type: lower-alpha;
+}
+
+dl.variables dt { font-size: 80%; }
+dl.variables dd { margin-bottom: 0.5em; }
+
+    </style>	
+    <style type="text/css" media="print">
+         #navbar_title { 
+  background-color: #FFFFFF;  
+}
+
+#main_navbar td {
+  background: #FFFFFF;
+  border-top: 0.25em solid #FFFFFF;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#main_navbar td#selected {
+  background: #FFFFFF;
+  border-top: 0.25em solid #333399;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#main_navbar td#flexible {
+  background: #FFFFFF;
+  border-top: 0.25em solid #FFFFFF;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#secondary_navbar {
+  display: none;
+}
+
+    </style>
+    
+
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="Help (IDLdoc project documentation)";
+      }
+    </script>
+  </head>
+
+  <body onload="setTitle();">
+
+    <div id="navbar_title">
+  <h1>IDLdoc project documentation</h1>
+  <h2>"The IDL code documentation project documentation"</h2>
+</div>
+
+
+
+    <div id="container">
+
+      <div class="toc small">
+	<ol class="toc">
+	  <li><a href="idldoc-help.html">Help for users of an IDLdoc'ed library</a></li>
+	  <li><a href="idldoc-dev-help.html">Basic markup of code</a></li>
+	  <li><a href="idldoc-dev-help2.html">Modifying IDLdoc output</a></li>
+	</ol>
+      </div>
+
+      <h1>Help on IDLdoc output</h1>
+
+      <p>The following information is provides documentation in
+      interpreting the results of the output of IDLdoc. For
+      documentation on marking up IDL code to better use IDLdoc's
+      capabilities, see the <a href="idldoc-dev-help.html">developer's
+      help</a> or the <a href="idldoc-dev-help2.html">advanced developer's help</a>.</p>
+
+      <h2>File summary</h2>
+
+      <p>The file summary includes a the class hierarchy diagram for
+      files with names ending in __define, a list of various
+      attributes of the file, and a description.</p>
+
+      <h2>Field summary</h2>
+
+      <p>If the filename of PRO file ends in __define, then the fields
+      defined in the routine of the same name are listed with their
+      type and any comments provided by the developer. Following this
+      listing are separate listings for each parent class of the
+      class/structure with a list of their fields with types.</p>
+
+      <h2>Routine summary</h2>
+
+      <p>The routine summary simply provides the calling sequence for
+      each routine in the file (in the same syntax is the online help
+      for IDL) and the first sentence of the detailed description for
+      each routine in the file.</p>
+
+      <h2>Routine details</h2>
+
+      <p>The routine details sections gives a possibly longer
+      description of the routine as well as a tables of the parameters
+      and keywords accepted by the routine. Also listed are various
+      attributes of the routine.</p>
+
+      <p>All the parameters and keywords of the routine will be in
+      these tables regardless if they have been commented using IDLdoc
+      (though the developer can hide parameters and keywords if they
+      chose).</p>
+
+      <h3>Routine attributes</h3>
+
+      <p>A routine can be marked with various attributes described in
+      the below table.</p>
+
+      <table class="basic" cellspacing="0">
+        <tr>
+          <th>Attribute</th>
+          <th>Description</th>
+        </tr>
+        <tr>
+          <td><h2 style="padding-top: 0; margin-top: 0.1em;"><span class="warning">abstract</span></h2></td>
+          <td>
+	    The routine name will be italicized if the routine is
+	    marked "abstract" (meaning it is not implemented, it is
+	    provided for its interface only).  This is generally used
+	    in only object-oriented programming.
+          </td>
+        </tr>
+        <tr>
+          <td><h2 style="padding-top: 0; margin-top: 0.1em;"><span class="warning">private</span></h2></td>
+          <td>
+	    This routine is not intended to be called except by other
+	    routines in the same file. In other words it is a "helper
+	    routine". Private routines are only seen if the library is
+	    IDLdoc'ed in "developer" mode.
+          </td>
+        </tr>
+        <tr>
+          <td><h2 style="padding-top: 0; margin-top: 0.1em;"><span class="warning">obsolete</span></h2></td>
+          <td>
+	    This routine is no longer supported by the library
+	    maintainer.
+          </td>
+        </tr>
+        <tr>
+          <td><h2 style="padding-top: 0; margin-top: 0.1em;"><span class="categories">categories</span></h2></td>
+          <td>
+	    The names of any categories for the routine are listed.
+          </td>
+        </tr>
+      </table>
+
+      <h3>Parameter and keyword attributes</h3>
+
+      <p>A parameter or keyword can be marked with various attributes
+      described in the below table.</p>
+
+      <table class="basic" cellspacing="0">
+        <tr>
+          <th>Attribute</th>
+          <th>Description</th>
+        </tr>
+        <tr>
+          <td><span class="attr">in</span></td>
+          <td>
+	    Indicates that the argument is intended to be passed into
+	    the routine.
+          </td>
+        </tr>
+        <tr>
+          <td><span class="attr">out</span></td>
+          <td>
+	    Indicates that the argument is intended to be used to pass
+	    a value out of the routine. A named variable must be
+	    passed to the routine to pass a value back to the calling
+	    level.
+          </td>
+        </tr>
+        <tr>
+          <td><span class="attr">optional</span></td>
+          <td>
+	    This attribute indicates the argument is optional;
+	    optional parameters and keywords are also placed inside
+	    brackets ([]) in the routine summary.
+          </td>
+        </tr>
+        <tr>
+          <td><span class="attr">required</span></td>
+          <td>Indicates the argument is required</td>
+        </tr>
+        <tr>
+          <td><span class="attr">type</span></td>
+          <td>
+	    Type indicates the IDL type of the variable.  Can be used
+	    indicate a group of types, a specific type, an array of a
+	    certain type, etc.  Boolean keywords are indicated by a
+	    /KEYWORD_NAME in the routine summary.
+          </td>
+        </tr>
+        <tr>
+          <td><span class="attr">default</span></td>
+          <td>
+	    Default indicates the default value for an optional
+	    parameter or keyword.
+          </td>
+        </tr>
+        <tr>
+          <td><span class="attr">private</span></td>
+          <td>
+	    This parameter is not intended to be used in calls except
+	    by other routines in the same file. Private parameters are
+	    only seen if the library is IDLdoc'ed in "developer" mode.
+          </td>
+        </tr>
+      </table>
+
+      
+
+      <div id="tagline">Produced by IDLdoc 2.0 on Sat Mar 11 21:40:01 2006.</div>
+
+      </div>
+    </body>
+</html>
Index: trunk/Documentation/idldoc/docs/readme.html
===================================================================
--- trunk/Documentation/idldoc/docs/readme.html	(revision 69)
+++ trunk/Documentation/idldoc/docs/readme.html	(revision 69)
@@ -0,0 +1,687 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<!-- Template needs structure with the following fields:
+       include_filename : filename of the main content file to be included
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       navbar_filename : filename of navbar template
+       footer : filename of footer file to include
+       tagline_filename : filename of tagline template
+     Plus fields needed by the templates: navbar, tagline
+-->
+
+<!-- Generated by IDLdoc 2.0 on Sat Mar 11 21:40:04 2006 -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>Etc (IDLdoc project documentation)</title>
+
+    
+    <style type="text/css" media="all">
+         
+/* CSS for all files which appear in the "main" viewing area: overview,
+   directory overviews, warnings, index, search, pro files, source
+   code, help, and etc files. */
+
+/* Link styles --------------------------------------------------------------- */
+
+a { text-decoration: none; }
+
+a:link, a:visited { 
+  color: #660000; 
+  border-bottom: 1px dotted #C0C0F0;   
+}
+
+a:hover, a:focus { 
+  color: #993333; 
+  background: #FFFFCC; 
+  border-bottom: 1px dotted #303099; 
+}
+
+
+/* Main styles --------------------------------------------------------------- */
+
+body {
+  margin: 0;
+  padding: 0;
+  font-size: 10pt;
+  font-family: Verdana, Helvetica, Arial, sans-serif;
+  background-color: #FFFFFF;
+}
+
+p {
+  margin-top: 0.5em;
+  margin-bottom: 0;
+}
+
+#container { margin: 1em; }
+
+code.section { white-space: pre; }
+
+pre.snippet {
+  margin-left: 5%;
+  background: #F0F0F0;
+  border: 1px dashed #999999;
+  width: 43em;
+  padding: 0.5em 0.5em 0.5em 0.5em;
+  white-space: pre;
+}
+
+/* Navbar styles ------------------------------------------------------------- */
+
+#navbar_title {
+  color: #000033;
+  background-color: #F0F0FF;
+  font-family: Arial, Helvetica, sans-serif;
+  padding: 20px 30px;
+  border-bottom: 1px solid #000033;
+}
+
+#navbar_title * {
+  margin: 0;
+  padding: 0;
+}
+
+#navbar_title h1 {
+  letter-spacing: 0.1em;
+  font-variant: small-caps;
+  font-size: 250%;
+  text-indent: -1em;
+  padding-left: 1em; 
+}
+
+#navbar_title h2 {
+  font-size: 110%;
+  font-weight: normal;
+  color: #333399;
+}
+
+#main_navbar table {
+  width: 100%;
+  border-bottom: 1px solid #666699;
+}
+
+#main_navbar td {
+  background: #CCCCFF;
+  font-size: 80%;
+  font-weight: bold;
+  font-family: Arial, Helvetica, sans-serif;
+  border-top: 3px solid #CCCCFF;
+  border-bottom: 3px solid #CCCCFF;
+  padding-left: 6px;
+  padding-right: 6px;
+  margin: 0;
+}
+
+#main_navbar td#selected {
+  background: #CCCCFF;
+  font-size: 80%;
+  font-weight: bold;
+  font-family: Arial, Helvetica, sans-serif;
+  border-top: 3px solid #333399;
+  border-bottom: 3px solid #CCCCFF;
+  padding-left: 6px;
+  padding-right: 6px;
+  margin: 0;
+}
+
+#main_navbar td#flexible {
+  width: 100%;
+  text-align: right;
+  padding-right: 1em;
+  background: #CCCCFF;
+  font-size: 70%;
+  font-weight: normal;
+  font-family: Arial, Helvetica, sans-serif;
+  text-transform: uppercase;
+  border-top: 3px solid #CCCCFF;
+  border-bottom: 3px solid #CCCCFF;
+}
+
+#main_navbar a:link, #main_navbar a:visited { color: #660000; border: 0; }
+
+#main_navbar a:hover, #main_navbar a:focus {
+  color: #FFFF66;
+  background: #CCCCFF;
+  border-bottom: 1px none #606099; 
+  border: 0;
+}
+
+#secondary_navbar {
+  font-size: 80%;
+  font-weight: normal;
+  font-family: Arial, Helvetica, sans-serif;
+  margin-top: 4px;
+  margin-left: 20px;
+  white-space: nowrap;
+}
+
+
+/* Tagline and footer styles ------------------------------------------------- */
+
+div#tagline {
+  margin-top: 6px;
+  border-top: 1px dotted lightsteelblue;
+  padding-top: 6px;
+  font-size: 66%;
+  font-style: italic;
+}
+
+div#footer {
+  margin-top: 6px;
+  border-top: 1px dotted lightsteelblue;
+  padding-top: 6px;
+  font-size: 66%;
+  font-style: italic;
+}
+
+/* Basic data presenation styles -------------------------------------------- */
+
+.index_letter { 
+  font-size: 300%;
+  font-weight: bold;
+  color: #000066; 
+  margin: 0.5em 0 0 -0.1em;
+}
+
+h1, h2, h3, h4 {
+  font-weight: normal;
+  color: #3333CC;
+}
+
+h1 {
+  padding-top: 0.75em;
+  font-size: 160%;
+}
+
+h2 {
+  padding-top: 1em;
+  font-size: 120%;
+  }
+
+h3 {
+  padding-top: 0.75em;
+  margin-bottom: 0.25em;
+  font-size: 100%;
+}
+
+h4 {
+  padding: 0;
+  margin: 0.5em 0 0 0;
+  font-size: 80%;
+}
+
+table.basic {
+  empty-cells: show;
+  margin: 1.5em 1em 0 1em;
+  border: 1px dotted #CFCFFF;
+  font-size: 80%;
+}
+
+table.basic th {
+  background-color: #F0F0FF;
+  font-weight: bold;
+  text-align: left;
+  padding: 4px 1em 4px 4px;
+  border-bottom: 1px dotted #666699;
+}
+
+table.basic td {
+  vertical-align: top;
+  padding: 4px 1em 4px 4px;
+}
+
+dd {
+  margin-bottom: 0.25em;
+  font-size: 80%;
+}
+
+
+/* Warnings styles ----------------------------------------------------------- */
+
+
+#todo dl, #bugs dl { 
+  margin: 0 0 0 1.5em;
+  font-size: 80%;
+}
+
+#todo dd, #bugs dd { 
+  margin-left: 3em; 
+  font-size: 100%;
+}
+
+#undoc table, #obsolete table, #statistics table {
+  width: 80%;
+  margin-left: 2em;
+}
+
+#undoc td, #obsolete td, #statistics td { 
+  padding: 0 0 0 0;
+  font-size: 80%;
+  white-space: nowrap;
+}
+
+#undoc td.docroutine, #obsolete td.obsroutine, #statistics td.statroutine { width: 50%; }
+
+#undoc td.docstat, #statistics td.stat { 
+  width: 50%;
+  text-align: right;
+}
+
+#undoc td.partialdoc, #statistics td.caution { color: #CC6600; }
+
+#undoc td.notdoc, #statistics td.warning { color: #993333; }
+
+/* File + routine styles ----------------------------------------------------- */
+
+h1.directory { 
+  padding: 1em 0 0 0;
+  margin: 0;
+  font-size: 66%;
+}
+
+h1.directory a { border-bottom: 0; }
+
+h2.pro_file { 
+  padding: 0;
+  margin: 0;
+  font-size: 140%;
+}
+
+div#file_attr {
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+div#file_attr dt {
+  font-size: 80%;
+  font-weight: bold;
+}
+
+div#file_attr dd {
+  font-size: 80%;
+}
+
+div#class_diagram { 
+  padding: 1em 0 1em 0; 
+  white-space: pre;
+  font-family: 'Courier New';
+}
+
+table#sav_attr { 
+  font-size: 90%; 
+  margin: 1em; 
+  padding: 1em 1em 1em 1em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+table#sav_attr th { text-align: left; }
+
+table#sav_attr td { vertical-align: top; padding-right: 2em; }
+
+table#sav_attr td.value { width: 20em; padding-right: 0em; font-style: italic; }
+
+p.sav_warning { margin-left: 4em; font-family: 80%; }
+
+table.variables { 
+  font-family: 'Courier New', monospace; 
+  font-size: 80%; 
+  text-indent: -2em; 
+  padding-left: 2em; 
+}
+
+table.variables td.image { width: 64px; }
+
+div#file_comments { 
+  margin: 2em;
+  font-size: 80%;
+}
+
+
+div.field_summary {
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #FFFFF0;
+  border: 1px dotted #C0C000;
+}
+
+div#routine_summary {  
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F0F0FF;
+  border: 1px dotted #9999FF;
+}
+
+div.field_summary h2, div#routine_summary h2 { 
+  padding: 0.5em 0 0 0;
+  margin: 0;
+}
+
+div.field_summary table, div.field_summary p { 
+  margin: 1em 1em;
+}
+
+div.field_summary td.name { 
+  vertical-align: top;
+  padding-bottom: 0.25em;
+  color: #3333CC;
+}
+
+div.field_summary span.field_type {  
+  font-weight: normal;
+  font-size: 80%;
+  color: black;
+}
+
+div.field_summary td.comments { 
+  vertical-align: top;
+  padding-left: 2em;
+  font-size: 80%;
+}
+
+p.commaList { 
+  margin: 1em 1em 1em 1em;
+}
+
+span.warning { 
+  color: #CC6633;
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+}
+
+span.categories { 
+  color: #006633;
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+}
+
+span.undoc { 
+  color: #FF6633;
+  font-weight: bold;
+  font-size: 80%;
+  text-transform: uppercase;
+}
+
+span.attr { 
+  color: #006633;
+  font-weight: bold;
+  font-size: 80%;
+  text-transform: uppercase;
+}
+
+span.value { 
+  color: #006633;
+  font-weight: normal;
+  text-transform: none;
+}
+
+a.top { 
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+  float: right;
+}
+
+span.result { 
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-style: italic;
+  font-size: 80%;
+}
+
+div#routine_summary p, div.routine_details p.header { 
+  padding-top: 0.5em;
+  margin-left: 1.5em;
+  text-indent: -1.5em;
+  font-family: 'Courier New', monospace;
+}
+
+div.routine_details {  
+  padding: 0.5em 1em 0.5em 1em;
+  margin: 1em;
+  border: 1px dotted #CCCCCC;
+}
+
+div.routine_details h2 {  
+  padding-top: 0;
+  margin-top: 0;
+}
+
+div.routine_details div.value { 
+  margin: 0 1em 0 1em;
+  font-size: 80%;
+}
+
+div.routine_details div.comments { 
+  font-size: 80%;
+  margin: 0.75em 1em 1em 1em;
+}
+
+div.routine_details div.preformat { 
+  white-space: pre;
+}
+
+table.statistics { 
+  font-size: 80%;
+  margin-left: 1em;
+}
+
+table.statistics td { 
+  padding: 0 2em 0 0;
+}
+
+/* Overview styles ----------------------------------------------------------- */
+
+div.overview { 
+  width: 100%;
+  margin-top: 1em;
+  clear: both;
+}
+
+div.overview table {
+  empty-cells: show;
+  font-size: 90%;
+  margin: 1em 1em 1em 1em;
+  padding: 1em 0.5em 1em 0.5em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+div.overview td {
+  padding: 3px 1em 3px 1em;
+}
+
+div.overview td.dir {
+  width: 1%;
+  vertical-align: top;
+  text-align: right;
+  padding-right: 1em;
+}
+
+
+/* Navigation list styles for tree structures -------------------------------- */
+
+#tree {
+  text-align: left;
+  font-size: 90%;
+  margin: 0.75em 0 0.75em 0;
+  padding: 0;
+}
+
+#tree ul {
+  text-align: left;
+  margin: 0;
+  padding: 0;
+}
+
+#tree li {
+  margin: 0 0 0 15px;
+  padding: 0;
+  list-style-type: none;
+}
+
+#tree .symbols {
+  float: left;
+  width: 12px;
+  height: 1em;
+  padding-left: 4px;
+  background-position: 0 100%;
+  background-repeat: no-repeat;
+}
+
+/* Search styles ------------------------------------------------------------- */
+
+input.writein { 
+  padding-left: 0.5em;
+  border: 1px solid #CCCCCC;
+  font-family: 'Courier New';
+  background: #FFFFF3;
+}
+
+#search form { 
+  margin-left: 2em;
+}
+
+#search table { 
+  margin: 1em 1em 0 2em;
+  padding: 1em 2em 1em 2em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+#search tr { 
+  text-align: center;
+}
+
+#search td { 
+  font-size: 80%; 
+  text-align: left;
+}
+
+#search td * { 
+  vertical-align: middle;
+}
+
+#search p { 
+  font-size: 66%;
+  margin: 0 3em 2em 3em;
+}
+
+/* Help styles --------------------------------------------------------------- */
+
+div.toc { 
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F0F0FF;
+  border: 1px dotted #9999FF;  
+  width: 19em;
+}
+
+div.right { 
+  float: right;
+  width: 22em;
+}
+
+ol.toc { 
+  list-style-type: upper-roman;
+}
+
+ol.toc ol { 
+  padding-left: 3em;
+  margin-left: 0;
+  list-style-type: lower-alpha;
+}
+
+dl.variables dt { font-size: 80%; }
+dl.variables dd { margin-bottom: 0.5em; }
+
+    </style>	
+    <style type="text/css" media="print">
+         #navbar_title { 
+  background-color: #FFFFFF;  
+}
+
+#main_navbar td {
+  background: #FFFFFF;
+  border-top: 0.25em solid #FFFFFF;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#main_navbar td#selected {
+  background: #FFFFFF;
+  border-top: 0.25em solid #333399;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#main_navbar td#flexible {
+  background: #FFFFFF;
+  border-top: 0.25em solid #FFFFFF;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#secondary_navbar {
+  display: none;
+}
+
+    </style>
+    
+
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="Etc (IDLdoc project documentation)";
+      }
+    </script>
+  </head>
+
+  <body onload="setTitle();">
+
+    <div id="navbar_title">
+  <h1>IDLdoc project documentation</h1>
+  <h2>"The IDL code documentation project documentation"</h2>
+</div>
+
+
+
+    <div id="container">
+
+          <h1>Readme for IDLdoc</h1>
+    
+    <h2>Requirements</h2> 
+
+    <p>IDLdoc 2.0 requires IDL 6.0 to run. To use the output with the
+      ASSISTANT keyword, the IDL 6.2 IDL Assistant help system is
+      needed. To produce documentation for SAV files, IDL 6.1 is
+      needed.</p>
+    
+    <h2>Installation</h2>
+    <p>Unzip idldoc.zip into a directory in the !PATH for IDL. This
+    will create an IDLdoc directory with subdirectories.</p>
+
+    <h2>Using IDLdoc</h2>
+    <ul>
+      <li>For new IDLdoc users, start out with <a
+	  href="idldoc-help.html">how to read IDLdoc output</a> then learn
+	how to <a href="idldoc-dev-help.html">to mark up your own
+	  code</a>. You might also be interested in <a
+	  href="idldoc-dev-help2.html">altering IDLdoc's output</a>.</li>
+      <li>For developer's with previous experience with IDLdoc, check
+	out <a href="whats-new.html">what's new</a> in IDLdoc</li>
+    </ul>
+
+
+      
+
+      <div id="tagline">Produced by IDLdoc 2.0 on Sat Mar 11 21:40:04 2006.</div>
+	
+    </div>
+
+  </body>
+</html>
Index: trunk/Documentation/idldoc/docs/whats-new.html
===================================================================
--- trunk/Documentation/idldoc/docs/whats-new.html	(revision 69)
+++ trunk/Documentation/idldoc/docs/whats-new.html	(revision 69)
@@ -0,0 +1,675 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<!-- Template needs structure with the following fields:
+       include_filename : filename of the main content file to be included
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       navbar_filename : filename of navbar template
+       footer : filename of footer file to include
+       tagline_filename : filename of tagline template
+     Plus fields needed by the templates: navbar, tagline
+-->
+
+<!-- Generated by IDLdoc 2.0 on Sat Mar 11 21:40:04 2006 -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>Etc (IDLdoc project documentation)</title>
+
+    
+    <style type="text/css" media="all">
+         
+/* CSS for all files which appear in the "main" viewing area: overview,
+   directory overviews, warnings, index, search, pro files, source
+   code, help, and etc files. */
+
+/* Link styles --------------------------------------------------------------- */
+
+a { text-decoration: none; }
+
+a:link, a:visited { 
+  color: #660000; 
+  border-bottom: 1px dotted #C0C0F0;   
+}
+
+a:hover, a:focus { 
+  color: #993333; 
+  background: #FFFFCC; 
+  border-bottom: 1px dotted #303099; 
+}
+
+
+/* Main styles --------------------------------------------------------------- */
+
+body {
+  margin: 0;
+  padding: 0;
+  font-size: 10pt;
+  font-family: Verdana, Helvetica, Arial, sans-serif;
+  background-color: #FFFFFF;
+}
+
+p {
+  margin-top: 0.5em;
+  margin-bottom: 0;
+}
+
+#container { margin: 1em; }
+
+code.section { white-space: pre; }
+
+pre.snippet {
+  margin-left: 5%;
+  background: #F0F0F0;
+  border: 1px dashed #999999;
+  width: 43em;
+  padding: 0.5em 0.5em 0.5em 0.5em;
+  white-space: pre;
+}
+
+/* Navbar styles ------------------------------------------------------------- */
+
+#navbar_title {
+  color: #000033;
+  background-color: #F0F0FF;
+  font-family: Arial, Helvetica, sans-serif;
+  padding: 20px 30px;
+  border-bottom: 1px solid #000033;
+}
+
+#navbar_title * {
+  margin: 0;
+  padding: 0;
+}
+
+#navbar_title h1 {
+  letter-spacing: 0.1em;
+  font-variant: small-caps;
+  font-size: 250%;
+  text-indent: -1em;
+  padding-left: 1em; 
+}
+
+#navbar_title h2 {
+  font-size: 110%;
+  font-weight: normal;
+  color: #333399;
+}
+
+#main_navbar table {
+  width: 100%;
+  border-bottom: 1px solid #666699;
+}
+
+#main_navbar td {
+  background: #CCCCFF;
+  font-size: 80%;
+  font-weight: bold;
+  font-family: Arial, Helvetica, sans-serif;
+  border-top: 3px solid #CCCCFF;
+  border-bottom: 3px solid #CCCCFF;
+  padding-left: 6px;
+  padding-right: 6px;
+  margin: 0;
+}
+
+#main_navbar td#selected {
+  background: #CCCCFF;
+  font-size: 80%;
+  font-weight: bold;
+  font-family: Arial, Helvetica, sans-serif;
+  border-top: 3px solid #333399;
+  border-bottom: 3px solid #CCCCFF;
+  padding-left: 6px;
+  padding-right: 6px;
+  margin: 0;
+}
+
+#main_navbar td#flexible {
+  width: 100%;
+  text-align: right;
+  padding-right: 1em;
+  background: #CCCCFF;
+  font-size: 70%;
+  font-weight: normal;
+  font-family: Arial, Helvetica, sans-serif;
+  text-transform: uppercase;
+  border-top: 3px solid #CCCCFF;
+  border-bottom: 3px solid #CCCCFF;
+}
+
+#main_navbar a:link, #main_navbar a:visited { color: #660000; border: 0; }
+
+#main_navbar a:hover, #main_navbar a:focus {
+  color: #FFFF66;
+  background: #CCCCFF;
+  border-bottom: 1px none #606099; 
+  border: 0;
+}
+
+#secondary_navbar {
+  font-size: 80%;
+  font-weight: normal;
+  font-family: Arial, Helvetica, sans-serif;
+  margin-top: 4px;
+  margin-left: 20px;
+  white-space: nowrap;
+}
+
+
+/* Tagline and footer styles ------------------------------------------------- */
+
+div#tagline {
+  margin-top: 6px;
+  border-top: 1px dotted lightsteelblue;
+  padding-top: 6px;
+  font-size: 66%;
+  font-style: italic;
+}
+
+div#footer {
+  margin-top: 6px;
+  border-top: 1px dotted lightsteelblue;
+  padding-top: 6px;
+  font-size: 66%;
+  font-style: italic;
+}
+
+/* Basic data presenation styles -------------------------------------------- */
+
+.index_letter { 
+  font-size: 300%;
+  font-weight: bold;
+  color: #000066; 
+  margin: 0.5em 0 0 -0.1em;
+}
+
+h1, h2, h3, h4 {
+  font-weight: normal;
+  color: #3333CC;
+}
+
+h1 {
+  padding-top: 0.75em;
+  font-size: 160%;
+}
+
+h2 {
+  padding-top: 1em;
+  font-size: 120%;
+  }
+
+h3 {
+  padding-top: 0.75em;
+  margin-bottom: 0.25em;
+  font-size: 100%;
+}
+
+h4 {
+  padding: 0;
+  margin: 0.5em 0 0 0;
+  font-size: 80%;
+}
+
+table.basic {
+  empty-cells: show;
+  margin: 1.5em 1em 0 1em;
+  border: 1px dotted #CFCFFF;
+  font-size: 80%;
+}
+
+table.basic th {
+  background-color: #F0F0FF;
+  font-weight: bold;
+  text-align: left;
+  padding: 4px 1em 4px 4px;
+  border-bottom: 1px dotted #666699;
+}
+
+table.basic td {
+  vertical-align: top;
+  padding: 4px 1em 4px 4px;
+}
+
+dd {
+  margin-bottom: 0.25em;
+  font-size: 80%;
+}
+
+
+/* Warnings styles ----------------------------------------------------------- */
+
+
+#todo dl, #bugs dl { 
+  margin: 0 0 0 1.5em;
+  font-size: 80%;
+}
+
+#todo dd, #bugs dd { 
+  margin-left: 3em; 
+  font-size: 100%;
+}
+
+#undoc table, #obsolete table, #statistics table {
+  width: 80%;
+  margin-left: 2em;
+}
+
+#undoc td, #obsolete td, #statistics td { 
+  padding: 0 0 0 0;
+  font-size: 80%;
+  white-space: nowrap;
+}
+
+#undoc td.docroutine, #obsolete td.obsroutine, #statistics td.statroutine { width: 50%; }
+
+#undoc td.docstat, #statistics td.stat { 
+  width: 50%;
+  text-align: right;
+}
+
+#undoc td.partialdoc, #statistics td.caution { color: #CC6600; }
+
+#undoc td.notdoc, #statistics td.warning { color: #993333; }
+
+/* File + routine styles ----------------------------------------------------- */
+
+h1.directory { 
+  padding: 1em 0 0 0;
+  margin: 0;
+  font-size: 66%;
+}
+
+h1.directory a { border-bottom: 0; }
+
+h2.pro_file { 
+  padding: 0;
+  margin: 0;
+  font-size: 140%;
+}
+
+div#file_attr {
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+div#file_attr dt {
+  font-size: 80%;
+  font-weight: bold;
+}
+
+div#file_attr dd {
+  font-size: 80%;
+}
+
+div#class_diagram { 
+  padding: 1em 0 1em 0; 
+  white-space: pre;
+  font-family: 'Courier New';
+}
+
+table#sav_attr { 
+  font-size: 90%; 
+  margin: 1em; 
+  padding: 1em 1em 1em 1em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+table#sav_attr th { text-align: left; }
+
+table#sav_attr td { vertical-align: top; padding-right: 2em; }
+
+table#sav_attr td.value { width: 20em; padding-right: 0em; font-style: italic; }
+
+p.sav_warning { margin-left: 4em; font-family: 80%; }
+
+table.variables { 
+  font-family: 'Courier New', monospace; 
+  font-size: 80%; 
+  text-indent: -2em; 
+  padding-left: 2em; 
+}
+
+table.variables td.image { width: 64px; }
+
+div#file_comments { 
+  margin: 2em;
+  font-size: 80%;
+}
+
+
+div.field_summary {
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #FFFFF0;
+  border: 1px dotted #C0C000;
+}
+
+div#routine_summary {  
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F0F0FF;
+  border: 1px dotted #9999FF;
+}
+
+div.field_summary h2, div#routine_summary h2 { 
+  padding: 0.5em 0 0 0;
+  margin: 0;
+}
+
+div.field_summary table, div.field_summary p { 
+  margin: 1em 1em;
+}
+
+div.field_summary td.name { 
+  vertical-align: top;
+  padding-bottom: 0.25em;
+  color: #3333CC;
+}
+
+div.field_summary span.field_type {  
+  font-weight: normal;
+  font-size: 80%;
+  color: black;
+}
+
+div.field_summary td.comments { 
+  vertical-align: top;
+  padding-left: 2em;
+  font-size: 80%;
+}
+
+p.commaList { 
+  margin: 1em 1em 1em 1em;
+}
+
+span.warning { 
+  color: #CC6633;
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+}
+
+span.categories { 
+  color: #006633;
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+}
+
+span.undoc { 
+  color: #FF6633;
+  font-weight: bold;
+  font-size: 80%;
+  text-transform: uppercase;
+}
+
+span.attr { 
+  color: #006633;
+  font-weight: bold;
+  font-size: 80%;
+  text-transform: uppercase;
+}
+
+span.value { 
+  color: #006633;
+  font-weight: normal;
+  text-transform: none;
+}
+
+a.top { 
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+  float: right;
+}
+
+span.result { 
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-style: italic;
+  font-size: 80%;
+}
+
+div#routine_summary p, div.routine_details p.header { 
+  padding-top: 0.5em;
+  margin-left: 1.5em;
+  text-indent: -1.5em;
+  font-family: 'Courier New', monospace;
+}
+
+div.routine_details {  
+  padding: 0.5em 1em 0.5em 1em;
+  margin: 1em;
+  border: 1px dotted #CCCCCC;
+}
+
+div.routine_details h2 {  
+  padding-top: 0;
+  margin-top: 0;
+}
+
+div.routine_details div.value { 
+  margin: 0 1em 0 1em;
+  font-size: 80%;
+}
+
+div.routine_details div.comments { 
+  font-size: 80%;
+  margin: 0.75em 1em 1em 1em;
+}
+
+div.routine_details div.preformat { 
+  white-space: pre;
+}
+
+table.statistics { 
+  font-size: 80%;
+  margin-left: 1em;
+}
+
+table.statistics td { 
+  padding: 0 2em 0 0;
+}
+
+/* Overview styles ----------------------------------------------------------- */
+
+div.overview { 
+  width: 100%;
+  margin-top: 1em;
+  clear: both;
+}
+
+div.overview table {
+  empty-cells: show;
+  font-size: 90%;
+  margin: 1em 1em 1em 1em;
+  padding: 1em 0.5em 1em 0.5em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+div.overview td {
+  padding: 3px 1em 3px 1em;
+}
+
+div.overview td.dir {
+  width: 1%;
+  vertical-align: top;
+  text-align: right;
+  padding-right: 1em;
+}
+
+
+/* Navigation list styles for tree structures -------------------------------- */
+
+#tree {
+  text-align: left;
+  font-size: 90%;
+  margin: 0.75em 0 0.75em 0;
+  padding: 0;
+}
+
+#tree ul {
+  text-align: left;
+  margin: 0;
+  padding: 0;
+}
+
+#tree li {
+  margin: 0 0 0 15px;
+  padding: 0;
+  list-style-type: none;
+}
+
+#tree .symbols {
+  float: left;
+  width: 12px;
+  height: 1em;
+  padding-left: 4px;
+  background-position: 0 100%;
+  background-repeat: no-repeat;
+}
+
+/* Search styles ------------------------------------------------------------- */
+
+input.writein { 
+  padding-left: 0.5em;
+  border: 1px solid #CCCCCC;
+  font-family: 'Courier New';
+  background: #FFFFF3;
+}
+
+#search form { 
+  margin-left: 2em;
+}
+
+#search table { 
+  margin: 1em 1em 0 2em;
+  padding: 1em 2em 1em 2em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+#search tr { 
+  text-align: center;
+}
+
+#search td { 
+  font-size: 80%; 
+  text-align: left;
+}
+
+#search td * { 
+  vertical-align: middle;
+}
+
+#search p { 
+  font-size: 66%;
+  margin: 0 3em 2em 3em;
+}
+
+/* Help styles --------------------------------------------------------------- */
+
+div.toc { 
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F0F0FF;
+  border: 1px dotted #9999FF;  
+  width: 19em;
+}
+
+div.right { 
+  float: right;
+  width: 22em;
+}
+
+ol.toc { 
+  list-style-type: upper-roman;
+}
+
+ol.toc ol { 
+  padding-left: 3em;
+  margin-left: 0;
+  list-style-type: lower-alpha;
+}
+
+dl.variables dt { font-size: 80%; }
+dl.variables dd { margin-bottom: 0.5em; }
+
+    </style>	
+    <style type="text/css" media="print">
+         #navbar_title { 
+  background-color: #FFFFFF;  
+}
+
+#main_navbar td {
+  background: #FFFFFF;
+  border-top: 0.25em solid #FFFFFF;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#main_navbar td#selected {
+  background: #FFFFFF;
+  border-top: 0.25em solid #333399;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#main_navbar td#flexible {
+  background: #FFFFFF;
+  border-top: 0.25em solid #FFFFFF;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#secondary_navbar {
+  display: none;
+}
+
+    </style>
+    
+
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="Etc (IDLdoc project documentation)";
+      }
+    </script>
+  </head>
+
+  <body onload="setTitle();">
+
+    <div id="navbar_title">
+  <h1>IDLdoc project documentation</h1>
+  <h2>"The IDL code documentation project documentation"</h2>
+</div>
+
+
+
+    <div id="container">
+
+          <h1>What's New in IDLdoc 2.0</h1>
+    
+    <ol>
+      <li>Integrated with the new IDL 6.2 IDL Assistant help system. Use the ASSISTANT keyword to generate an .adp file for use with the ONLINE_HELP routine with the BOOK keyword.</li>
+      <li>Templated output system allows for users to change the format of the output.</li>
+      <li>Produces documentation for SAV files.</li>
+      <li>Computes complexity statistics when the STATISTICS keyword is set</li>
+      <li>Categories and customer_id tags</li>
+      <li>Updated, more complete help</li>
+      <li>LOG_FILE keyword to send error messages to a log file instead of STDOUT</li>
+    </ol>
+
+
+      
+
+      <div id="tagline">Produced by IDLdoc 2.0 on Sat Mar 11 21:40:04 2006.</div>
+	
+    </div>
+
+  </body>
+</html>
Index: trunk/Documentation/idldoc/docs/xidldoc.html
===================================================================
--- trunk/Documentation/idldoc/docs/xidldoc.html	(revision 69)
+++ trunk/Documentation/idldoc/docs/xidldoc.html	(revision 69)
@@ -0,0 +1,1718 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- Generated by IDLdoc 2.0 on Sat Mar 11 21:40:00 2006 -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>xidldoc.pro (IDLdoc project documentation)</title>
+
+    
+    <style type="text/css" media="all">
+      
+/* CSS for all files which appear in the "main" viewing area: overview,
+   directory overviews, warnings, index, search, pro files, source
+   code, help, and etc files. */
+
+/* Link styles --------------------------------------------------------------- */
+
+a { text-decoration: none; }
+
+a:link, a:visited { 
+  color: #660000; 
+  border-bottom: 1px dotted #C0C0F0;   
+}
+
+a:hover, a:focus { 
+  color: #993333; 
+  background: #FFFFCC; 
+  border-bottom: 1px dotted #303099; 
+}
+
+
+/* Main styles --------------------------------------------------------------- */
+
+body {
+  margin: 0;
+  padding: 0;
+  font-size: 10pt;
+  font-family: Verdana, Helvetica, Arial, sans-serif;
+  background-color: #FFFFFF;
+}
+
+p {
+  margin-top: 0.5em;
+  margin-bottom: 0;
+}
+
+#container { margin: 1em; }
+
+code.section { white-space: pre; }
+
+pre.snippet {
+  margin-left: 5%;
+  background: #F0F0F0;
+  border: 1px dashed #999999;
+  width: 43em;
+  padding: 0.5em 0.5em 0.5em 0.5em;
+  white-space: pre;
+}
+
+/* Navbar styles ------------------------------------------------------------- */
+
+#navbar_title {
+  color: #000033;
+  background-color: #F0F0FF;
+  font-family: Arial, Helvetica, sans-serif;
+  padding: 20px 30px;
+  border-bottom: 1px solid #000033;
+}
+
+#navbar_title * {
+  margin: 0;
+  padding: 0;
+}
+
+#navbar_title h1 {
+  letter-spacing: 0.1em;
+  font-variant: small-caps;
+  font-size: 250%;
+  text-indent: -1em;
+  padding-left: 1em; 
+}
+
+#navbar_title h2 {
+  font-size: 110%;
+  font-weight: normal;
+  color: #333399;
+}
+
+#main_navbar table {
+  width: 100%;
+  border-bottom: 1px solid #666699;
+}
+
+#main_navbar td {
+  background: #CCCCFF;
+  font-size: 80%;
+  font-weight: bold;
+  font-family: Arial, Helvetica, sans-serif;
+  border-top: 3px solid #CCCCFF;
+  border-bottom: 3px solid #CCCCFF;
+  padding-left: 6px;
+  padding-right: 6px;
+  margin: 0;
+}
+
+#main_navbar td#selected {
+  background: #CCCCFF;
+  font-size: 80%;
+  font-weight: bold;
+  font-family: Arial, Helvetica, sans-serif;
+  border-top: 3px solid #333399;
+  border-bottom: 3px solid #CCCCFF;
+  padding-left: 6px;
+  padding-right: 6px;
+  margin: 0;
+}
+
+#main_navbar td#flexible {
+  width: 100%;
+  text-align: right;
+  padding-right: 1em;
+  background: #CCCCFF;
+  font-size: 70%;
+  font-weight: normal;
+  font-family: Arial, Helvetica, sans-serif;
+  text-transform: uppercase;
+  border-top: 3px solid #CCCCFF;
+  border-bottom: 3px solid #CCCCFF;
+}
+
+#main_navbar a:link, #main_navbar a:visited { color: #660000; border: 0; }
+
+#main_navbar a:hover, #main_navbar a:focus {
+  color: #FFFF66;
+  background: #CCCCFF;
+  border-bottom: 1px none #606099; 
+  border: 0;
+}
+
+#secondary_navbar {
+  font-size: 80%;
+  font-weight: normal;
+  font-family: Arial, Helvetica, sans-serif;
+  margin-top: 4px;
+  margin-left: 20px;
+  white-space: nowrap;
+}
+
+
+/* Tagline and footer styles ------------------------------------------------- */
+
+div#tagline {
+  margin-top: 6px;
+  border-top: 1px dotted lightsteelblue;
+  padding-top: 6px;
+  font-size: 66%;
+  font-style: italic;
+}
+
+div#footer {
+  margin-top: 6px;
+  border-top: 1px dotted lightsteelblue;
+  padding-top: 6px;
+  font-size: 66%;
+  font-style: italic;
+}
+
+/* Basic data presenation styles -------------------------------------------- */
+
+.index_letter { 
+  font-size: 300%;
+  font-weight: bold;
+  color: #000066; 
+  margin: 0.5em 0 0 -0.1em;
+}
+
+h1, h2, h3, h4 {
+  font-weight: normal;
+  color: #3333CC;
+}
+
+h1 {
+  padding-top: 0.75em;
+  font-size: 160%;
+}
+
+h2 {
+  padding-top: 1em;
+  font-size: 120%;
+  }
+
+h3 {
+  padding-top: 0.75em;
+  margin-bottom: 0.25em;
+  font-size: 100%;
+}
+
+h4 {
+  padding: 0;
+  margin: 0.5em 0 0 0;
+  font-size: 80%;
+}
+
+table.basic {
+  empty-cells: show;
+  margin: 1.5em 1em 0 1em;
+  border: 1px dotted #CFCFFF;
+  font-size: 80%;
+}
+
+table.basic th {
+  background-color: #F0F0FF;
+  font-weight: bold;
+  text-align: left;
+  padding: 4px 1em 4px 4px;
+  border-bottom: 1px dotted #666699;
+}
+
+table.basic td {
+  vertical-align: top;
+  padding: 4px 1em 4px 4px;
+}
+
+dd {
+  margin-bottom: 0.25em;
+  font-size: 80%;
+}
+
+
+/* Warnings styles ----------------------------------------------------------- */
+
+
+#todo dl, #bugs dl { 
+  margin: 0 0 0 1.5em;
+  font-size: 80%;
+}
+
+#todo dd, #bugs dd { 
+  margin-left: 3em; 
+  font-size: 100%;
+}
+
+#undoc table, #obsolete table, #statistics table {
+  width: 80%;
+  margin-left: 2em;
+}
+
+#undoc td, #obsolete td, #statistics td { 
+  padding: 0 0 0 0;
+  font-size: 80%;
+  white-space: nowrap;
+}
+
+#undoc td.docroutine, #obsolete td.obsroutine, #statistics td.statroutine { width: 50%; }
+
+#undoc td.docstat, #statistics td.stat { 
+  width: 50%;
+  text-align: right;
+}
+
+#undoc td.partialdoc, #statistics td.caution { color: #CC6600; }
+
+#undoc td.notdoc, #statistics td.warning { color: #993333; }
+
+/* File + routine styles ----------------------------------------------------- */
+
+h1.directory { 
+  padding: 1em 0 0 0;
+  margin: 0;
+  font-size: 66%;
+}
+
+h1.directory a { border-bottom: 0; }
+
+h2.pro_file { 
+  padding: 0;
+  margin: 0;
+  font-size: 140%;
+}
+
+div#file_attr {
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+div#file_attr dt {
+  font-size: 80%;
+  font-weight: bold;
+}
+
+div#file_attr dd {
+  font-size: 80%;
+}
+
+div#class_diagram { 
+  padding: 1em 0 1em 0; 
+  white-space: pre;
+  font-family: 'Courier New';
+}
+
+table#sav_attr { 
+  font-size: 90%; 
+  margin: 1em; 
+  padding: 1em 1em 1em 1em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+table#sav_attr th { text-align: left; }
+
+table#sav_attr td { vertical-align: top; padding-right: 2em; }
+
+table#sav_attr td.value { width: 20em; padding-right: 0em; font-style: italic; }
+
+p.sav_warning { margin-left: 4em; font-family: 80%; }
+
+table.variables { 
+  font-family: 'Courier New', monospace; 
+  font-size: 80%; 
+  text-indent: -2em; 
+  padding-left: 2em; 
+}
+
+table.variables td.image { width: 64px; }
+
+div#file_comments { 
+  margin: 2em;
+  font-size: 80%;
+}
+
+
+div.field_summary {
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #FFFFF0;
+  border: 1px dotted #C0C000;
+}
+
+div#routine_summary {  
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F0F0FF;
+  border: 1px dotted #9999FF;
+}
+
+div.field_summary h2, div#routine_summary h2 { 
+  padding: 0.5em 0 0 0;
+  margin: 0;
+}
+
+div.field_summary table, div.field_summary p { 
+  margin: 1em 1em;
+}
+
+div.field_summary td.name { 
+  vertical-align: top;
+  padding-bottom: 0.25em;
+  color: #3333CC;
+}
+
+div.field_summary span.field_type {  
+  font-weight: normal;
+  font-size: 80%;
+  color: black;
+}
+
+div.field_summary td.comments { 
+  vertical-align: top;
+  padding-left: 2em;
+  font-size: 80%;
+}
+
+p.commaList { 
+  margin: 1em 1em 1em 1em;
+}
+
+span.warning { 
+  color: #CC6633;
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+}
+
+span.categories { 
+  color: #006633;
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+}
+
+span.undoc { 
+  color: #FF6633;
+  font-weight: bold;
+  font-size: 80%;
+  text-transform: uppercase;
+}
+
+span.attr { 
+  color: #006633;
+  font-weight: bold;
+  font-size: 80%;
+  text-transform: uppercase;
+}
+
+span.value { 
+  color: #006633;
+  font-weight: normal;
+  text-transform: none;
+}
+
+a.top { 
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+  float: right;
+}
+
+span.result { 
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-style: italic;
+  font-size: 80%;
+}
+
+div#routine_summary p, div.routine_details p.header { 
+  padding-top: 0.5em;
+  margin-left: 1.5em;
+  text-indent: -1.5em;
+  font-family: 'Courier New', monospace;
+}
+
+div.routine_details {  
+  padding: 0.5em 1em 0.5em 1em;
+  margin: 1em;
+  border: 1px dotted #CCCCCC;
+}
+
+div.routine_details h2 {  
+  padding-top: 0;
+  margin-top: 0;
+}
+
+div.routine_details div.value { 
+  margin: 0 1em 0 1em;
+  font-size: 80%;
+}
+
+div.routine_details div.comments { 
+  font-size: 80%;
+  margin: 0.75em 1em 1em 1em;
+}
+
+div.routine_details div.preformat { 
+  white-space: pre;
+}
+
+table.statistics { 
+  font-size: 80%;
+  margin-left: 1em;
+}
+
+table.statistics td { 
+  padding: 0 2em 0 0;
+}
+
+/* Overview styles ----------------------------------------------------------- */
+
+div.overview { 
+  width: 100%;
+  margin-top: 1em;
+  clear: both;
+}
+
+div.overview table {
+  empty-cells: show;
+  font-size: 90%;
+  margin: 1em 1em 1em 1em;
+  padding: 1em 0.5em 1em 0.5em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+div.overview td {
+  padding: 3px 1em 3px 1em;
+}
+
+div.overview td.dir {
+  width: 1%;
+  vertical-align: top;
+  text-align: right;
+  padding-right: 1em;
+}
+
+
+/* Navigation list styles for tree structures -------------------------------- */
+
+#tree {
+  text-align: left;
+  font-size: 90%;
+  margin: 0.75em 0 0.75em 0;
+  padding: 0;
+}
+
+#tree ul {
+  text-align: left;
+  margin: 0;
+  padding: 0;
+}
+
+#tree li {
+  margin: 0 0 0 15px;
+  padding: 0;
+  list-style-type: none;
+}
+
+#tree .symbols {
+  float: left;
+  width: 12px;
+  height: 1em;
+  padding-left: 4px;
+  background-position: 0 100%;
+  background-repeat: no-repeat;
+}
+
+/* Search styles ------------------------------------------------------------- */
+
+input.writein { 
+  padding-left: 0.5em;
+  border: 1px solid #CCCCCC;
+  font-family: 'Courier New';
+  background: #FFFFF3;
+}
+
+#search form { 
+  margin-left: 2em;
+}
+
+#search table { 
+  margin: 1em 1em 0 2em;
+  padding: 1em 2em 1em 2em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+#search tr { 
+  text-align: center;
+}
+
+#search td { 
+  font-size: 80%; 
+  text-align: left;
+}
+
+#search td * { 
+  vertical-align: middle;
+}
+
+#search p { 
+  font-size: 66%;
+  margin: 0 3em 2em 3em;
+}
+
+/* Help styles --------------------------------------------------------------- */
+
+div.toc { 
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F0F0FF;
+  border: 1px dotted #9999FF;  
+  width: 19em;
+}
+
+div.right { 
+  float: right;
+  width: 22em;
+}
+
+ol.toc { 
+  list-style-type: upper-roman;
+}
+
+ol.toc ol { 
+  padding-left: 3em;
+  margin-left: 0;
+  list-style-type: lower-alpha;
+}
+
+dl.variables dt { font-size: 80%; }
+dl.variables dd { margin-bottom: 0.5em; }
+
+    </style>
+    <style type="text/css" media="print">
+      #navbar_title { 
+  background-color: #FFFFFF;  
+}
+
+#main_navbar td {
+  background: #FFFFFF;
+  border-top: 0.25em solid #FFFFFF;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#main_navbar td#selected {
+  background: #FFFFFF;
+  border-top: 0.25em solid #333399;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#main_navbar td#flexible {
+  background: #FFFFFF;
+  border-top: 0.25em solid #FFFFFF;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#secondary_navbar {
+  display: none;
+}
+
+    </style>
+    
+
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="xidldoc.pro (IDLdoc project documentation)";
+      }
+    </script>
+  </head>
+
+  <body onload="setTitle();">
+
+    <div id="navbar_title">
+  <h1>IDLdoc project documentation</h1>
+  <h2>"The IDL code documentation project documentation"</h2>
+</div>
+
+
+
+    <div id="container">
+
+      <h1 class="directory"><a href="directory-overview.html">idldoc\xidldoc\</a></h1>
+      <h2 class="pro_file">xidldoc.pro</h2>
+
+      <div id="file_attr">
+	<dl>
+	  <dt>Last modification:</dt>
+	  <dd>Sat Mar 11 21:30:44 2006</dd>
+	</dl>
+      </div>
+
+      <div id="file_comments"> xIDLdoc is a graphical front-end for IDLdoc, the IDL
+ documentation system developed by Michael D. Galloy of RSI's Global
+ Services Group.
+
+ <p> To use xIDLdoc, IDLdoc should already be installed in a user's
+ IDL path or compiled in memory. IDLdoc messages, warnings and errors are
+ displayed in the IDL output log.
+</div>
+
+      
+
+      
+
+      
+
+      
+      <div id="routine_summary">		
+	<h2>Routine summary</h2>
+	
+	<dl>
+	  
+	  <dt><p><a href="#_xidldoc::get_value"><span class="result">result = </span>xidldoc::get_value(<span class="result">uname</span>)</a></p><dt>
+	  <dd>  Finds and returns the value of a widget (or, for a button widget,  whether it is set), given the uname of the widget.</dd>	
+	  
+	  <dt><p><a href="#_xidldoc::set_value">xidldoc::set_value<span class="result">, uname, value</span></a></p><dt>
+	  <dd>  Finds and sets the value of a widget, given the uname of the widget  and the value to set.</dd>	
+	  
+	  <dt><p><a href="#_xidldoc::run">xidldoc::run</a></p><dt>
+	  <dd>  Runs IDLdoc, given the parameters set in the xIDLdoc UI.</dd>	
+	  
+	  <dt><p><a href="#_xidldoc::handle_events">xidldoc::handle_events<span class="result">, event</span></a></p><dt>
+	  <dd>  Handles events in the xIDLdoc UI.</dd>	
+	  
+	  <dt><p><a href="#_xidldoc::cleanup_widgets">xidldoc::cleanup_widgets<span class="result">, top</span></a></p><dt>
+	  <dd>  Destroys the UI and cleans up any resources associated with it.</dd>	
+	  
+	  <dt><p><a href="#_xidldoc::start_xmanager">xidldoc::start_xmanager</a></p><dt>
+	  <dd>  Calls XMANAGER to register xIDLdoc's widget interface.</dd>	
+	  
+	  <dt><p><a href="#_xidldoc::display">xidldoc::display</a></p><dt>
+	  <dd>  Displays the header image in the draw window, if present.</dd>	
+	  
+	  <dt><p><a href="#_xidldoc::realize">xidldoc::realize</a></p><dt>
+	  <dd>  Realizes the widget hierarchy.</dd>	
+	  
+	  <dt><p><a href="#_xidldoc::center_ui">xidldoc::center_ui</a></p><dt>
+	  <dd>  Centers the UI on the display.</dd>	
+	  
+	  <dt><p><a href="#_xidldoc::make_input_row">xidldoc::make_input_row<span class="result">, parent, label, text</span>[, /no_button]</a></p><dt>
+	  <dd>  Makes a UI element consisting of a label, a text field and a  "Browse" button.</dd>	
+	  
+	  <dt><p><a href="#_xidldoc::select_font"><span class="result">result = </span>xidldoc::select_font([/big][, /bold])</a></p><dt>
+	  <dd>  Returns a string containing the name of a font that can be used in a  label or text widget.</dd>	
+	  
+	  <dt><p><a href="#_xidldoc::build_widgets">xidldoc::build_widgets</a></p><dt>
+	  <dd>  Builds the widget hierarchy.</dd>	
+	  
+	  <dt><p><a href="#_xidldoc::destruct">xidldoc::destruct</a></p><dt>
+	  <dd>  The actual class destructor.</dd>	
+	  
+	  <dt><p><a href="#_xidldoc::cleanup">xidldoc::cleanup</a></p><dt>
+	  <dd>  The official class destructor.</dd>	
+	  
+	  <dt><p><a href="#_xidldoc::init"><span class="result">result = </span>xidldoc::init([header_image=<span class="result">RGB image</span>])</a></p><dt>
+	  <dd>  Class constructor, used to load class data.</dd>	
+	  
+	  <dt><p><a href="#_xidldoc__define">xidldoc__define</a></p><dt>
+	  <dd>  The xIDLdoc class data definition routine.</dd>	
+	  
+	  <dt><p><a href="#_xidldoc">xidldoc</a></p><dt>
+	  <dd>  This is a wrapper for simplifying the creation and use of an  <code>xIDLdoc</code> object.</dd>	
+	  	
+	</dl>
+      </div>
+      
+
+      <div id="routine_details">
+	
+
+	<div class="routine_details" id="_xidldoc::get_value">
+
+	  <h2><a class="top" href="#container">top</a>xidldoc::get_value </h2>
+	
+	  <p class="header">
+	    <span class="result">result = </span>xidldoc::get_value(<span class="result"><a href="#_xidldoc::get_value_param_uname">uname</a></span>)</p>
+	
+	  <div class="comments">
+ Finds and returns the value of a widget (or, for a button widget,
+ whether it is set), given the uname of the widget.
+</div>
+
+	  <h3>Return value</h3><div class="value"> The value of the widget, or for a button, 1 if set, 0 if
+  not set.</div>
+
+	  
+	    <h3>Parameters</h3>
+	
+	    
+	    <h4 id="_xidldoc::get_value_param_uname">uname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      
+	      
+	      <span class="attr">required</span>
+	      
+	      <span class="attr">type:</span> <span class="value">string</span>
+	      
+	      
+	    </h4>
+	
+	  <div class="comments"> The user value of the
+  widget being manipulated.</div>
+	    
+
+	  
+
+	  
+
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	
+	</div>
+	
+
+	<div class="routine_details" id="_xidldoc::set_value">
+
+	  <h2><a class="top" href="#container">top</a>xidldoc::set_value </h2>
+	
+	  <p class="header">
+	    xidldoc::set_value<span class="result">, <a href="#_xidldoc::set_value_param_uname">uname</a>, <a href="#_xidldoc::set_value_param_value">value</a></span></p>
+	
+	  <div class="comments">
+ Finds and sets the value of a widget, given the uname of the widget
+ and the value to set.
+</div>
+
+	  
+
+	  
+	    <h3>Parameters</h3>
+	
+	    
+	    <h4 id="_xidldoc::set_value_param_uname">uname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      
+	      
+	      <span class="attr">required</span>
+	      
+	      <span class="attr">type:</span> <span class="value">string</span>
+	      
+	      
+	    </h4>
+	
+	  <div class="comments"> The user value of the
+  widget being manipulated.</div>
+	    
+	    <h4 id="_xidldoc::set_value_param_value">value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      
+	      
+	      <span class="attr">required</span>
+	      
+	      
+	      
+	      
+	    </h4>
+	
+	  <div class="comments"> The value to assign the widget.</div>
+	    
+
+	  
+
+	  
+
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	
+	</div>
+	
+
+	<div class="routine_details" id="_xidldoc::run">
+
+	  <h2><a class="top" href="#container">top</a>xidldoc::run </h2>
+	
+	  <p class="header">
+	    xidldoc::run</p>
+	
+	  <div class="comments">
+ Runs IDLdoc, given the parameters set in the xIDLdoc UI. IDLdoc
+ messages, warnings and errors are displayed in the IDL output
+ log. It is assumed that the user has IDLdoc installed, either in
+ their path, or already compiled in memory.</div>
+
+	  
+
+	  
+
+	  
+
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	
+	</div>
+	
+
+	<div class="routine_details" id="_xidldoc::handle_events">
+
+	  <h2><a class="top" href="#container">top</a>xidldoc::handle_events </h2>
+	
+	  <p class="header">
+	    xidldoc::handle_events<span class="result">, <a href="#_xidldoc::handle_events_param_event">event</a></span></p>
+	
+	  <div class="comments">
+ Handles events in the xIDLdoc UI. All events generated in the UI
+ pass through the wrapper routine HANDLE_EVENTS and arrive here,
+ where the event is parsed based on the generating widget's user
+ name.
+</div>
+
+	  
+
+	  
+	    <h3>Parameters</h3>
+	
+	    
+	    <h4 id="_xidldoc::handle_events_param_event">event&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      
+	      
+	      <span class="attr">required</span>
+	      
+	      <span class="attr">type:</span> <span class="value">structure</span>
+	      
+	      
+	    </h4>
+	
+	  <div class="comments"> The event structure
+  passed from XMANAGER.</div>
+	    
+
+	  
+
+	  
+
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	
+	</div>
+	
+
+	<div class="routine_details" id="_xidldoc::cleanup_widgets">
+
+	  <h2><a class="top" href="#container">top</a>xidldoc::cleanup_widgets </h2>
+	
+	  <p class="header">
+	    xidldoc::cleanup_widgets<span class="result">, <a href="#_xidldoc::cleanup_widgets_param_top">top</a></span></p>
+	
+	  <div class="comments">
+ Destroys the UI and cleans up any resources associated with it.
+ Destroys the object in this case, as well.
+
+ <p> This method is called by XMANAGER through the widget cleanup routine
+ CLEANUP_WIDGETS.
+</div>
+
+	  
+
+	  
+	    <h3>Parameters</h3>
+	
+	    
+	    <h4 id="_xidldoc::cleanup_widgets_param_top">top&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      
+	      
+	      
+	      
+	      <span class="attr">type:</span> <span class="value">long</span>
+	      
+	      
+	    </h4>
+	
+	  <div class="comments"> The top-level base widget identifier,
+  required in the call by XMANAGER.</div>
+	    
+
+	  
+
+	  
+
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	
+	</div>
+	
+
+	<div class="routine_details" id="_xidldoc::start_xmanager">
+
+	  <h2><a class="top" href="#container">top</a>xidldoc::start_xmanager </h2>
+	
+	  <p class="header">
+	    xidldoc::start_xmanager</p>
+	
+	  <div class="comments">
+ Calls XMANAGER to register xIDLdoc's widget interface. Events are
+ passed through the wrapper routine HANDLE_EVENTS. The kill_notify
+ signal is passed through CLEANUP_WIDGETS.
+
+ <p> Note that the NO_BLOCK keyword is ignored by IDL Runtime/Virtual
+ Machine for IDL < 6.0.
+</div>
+
+	  
+
+	  
+
+	  
+
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  <h3>Other attributes</h3>
+	  
+	  
+	  <h4>Uses routines</h4><div class="value"> HANDLE_EVENTS, CLEANUP_WIDGETS</div>
+	  
+	  
+	  
+	
+	  
+	
+	</div>
+	
+
+	<div class="routine_details" id="_xidldoc::display">
+
+	  <h2><a class="top" href="#container">top</a>xidldoc::display </h2>
+	
+	  <p class="header">
+	    xidldoc::display</p>
+	
+	  <div class="comments">
+ Displays the header image in the draw window, if present.</div>
+
+	  
+
+	  
+
+	  
+
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	
+	</div>
+	
+
+	<div class="routine_details" id="_xidldoc::realize">
+
+	  <h2><a class="top" href="#container">top</a>xidldoc::realize </h2>
+	
+	  <p class="header">
+	    xidldoc::realize</p>
+	
+	  <div class="comments">
+ Realizes the widget hierarchy.</div>
+
+	  
+
+	  
+
+	  
+
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	
+	</div>
+	
+
+	<div class="routine_details" id="_xidldoc::center_ui">
+
+	  <h2><a class="top" href="#container">top</a>xidldoc::center_ui </h2>
+	
+	  <p class="header">
+	    xidldoc::center_ui</p>
+	
+	  <div class="comments">
+ Centers the UI on the display.</div>
+
+	  
+
+	  
+
+	  
+
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	
+	</div>
+	
+
+	<div class="routine_details" id="_xidldoc::make_input_row">
+
+	  <h2><a class="top" href="#container">top</a>xidldoc::make_input_row </h2>
+	
+	  <p class="header">
+	    xidldoc::make_input_row<span class="result">, <a href="#_xidldoc::make_input_row_param_parent">parent</a>, <a href="#_xidldoc::make_input_row_param_label">label</a>, <a href="#_xidldoc::make_input_row_param_text">text</a></span>[, /<a href="#_xidldoc::make_input_row_keyword_no_button">no_button</a>]</p>
+	
+	  <div class="comments">
+ Makes a UI element consisting of a label, a text field and a
+ "Browse" button.
+</div>
+
+	  
+
+	  
+	    <h3>Parameters</h3>
+	
+	    
+	    <h4 id="_xidldoc::make_input_row_param_parent">parent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      
+	      
+	      <span class="attr">required</span>
+	      
+	      <span class="attr">type:</span> <span class="value">long</span>
+	      
+	      
+	    </h4>
+	
+	  <div class="comments"> The widget identifier
+  of the parent base of this group of widgets.</div>
+	    
+	    <h4 id="_xidldoc::make_input_row_param_label">label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      
+	      
+	      <span class="attr">required</span>
+	      
+	      <span class="attr">type:</span> <span class="value">string</span>
+	      
+	      
+	    </h4>
+	
+	  <div class="comments"> The text to display in
+  the label widget.</div>
+	    
+	    <h4 id="_xidldoc::make_input_row_param_text">text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      
+	      
+	      <span class="attr">required</span>
+	      
+	      <span class="attr">type:</span> <span class="value">string</span>
+	      
+	      
+	    </h4>
+	
+	  <div class="comments"> The text to display in
+  the text widget.</div>
+	    
+
+	  
+
+	  
+
+	    <h3>Keywords</h3>
+	    
+	    <h4 id="_xidldoc::make_input_row_keyword_no_button">no_button&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      
+	      <span class="attr">optional</span>
+  	      
+	      
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	      
+	      
+	    </h4>
+	
+	    <div class="comments"> Set to not
+  display the "Browse" button.</div>
+	    
+	  
+
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  <h3>Known issues</h3>
+	  
+	  
+	  <h4>Todo items</h4><div class="value"> Make this into a compound widget.
+</div>
+	  
+	
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	
+	</div>
+	
+
+	<div class="routine_details" id="_xidldoc::select_font">
+
+	  <h2><a class="top" href="#container">top</a>xidldoc::select_font </h2>
+	
+	  <p class="header">
+	    <span class="result">result = </span>xidldoc::select_font([/<a href="#_xidldoc::select_font_keyword_big">big</a>][, /<a href="#_xidldoc::select_font_keyword_bold">bold</a>])</p>
+	
+	  <div class="comments">
+ Returns a string containing the name of a font that can be used in a
+ label or text widget.
+</div>
+
+	  <h3>Return value</h3><div class="value"> A string giving the name of the font.</div>
+
+	  
+
+	  
+
+	    <h3>Keywords</h3>
+	    
+	    <h4 id="_xidldoc::select_font_keyword_big">big&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      
+	      <span class="attr">optional</span>
+  	      
+	      
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	      
+	      
+	    </h4>
+	
+	    <div class="comments"> Set this keyword to get
+  a larger font.</div>
+	    
+	    <h4 id="_xidldoc::select_font_keyword_bold">bold&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      
+	      <span class="attr">optional</span>
+  	      
+	      
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	      
+	      
+	    </h4>
+	
+	    <div class="comments"> Set this keyword to get
+  a bold font.</div>
+	    
+	  
+
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  <h3>Known issues</h3>
+	  
+	  
+	  <h4>Todo items</h4><div class="value"> Make this into an independent function outside this class
+ definition.
+</div>
+	  
+	
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	
+	</div>
+	
+
+	<div class="routine_details" id="_xidldoc::build_widgets">
+
+	  <h2><a class="top" href="#container">top</a>xidldoc::build_widgets </h2>
+	
+	  <p class="header">
+	    xidldoc::build_widgets</p>
+	
+	  <div class="comments">
+ Builds the widget hierarchy. Lots of buttons and fields.
+
+ <p>Each widget has a user name (uname) used to identify the widget
+ in the <code>get_value</code> and <code>set_value</code> methods.</div>
+
+	  
+
+	  
+
+	  
+
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	
+	</div>
+	
+
+	<div class="routine_details" id="_xidldoc::destruct">
+
+	  <h2><a class="top" href="#container">top</a>xidldoc::destruct </h2>
+	
+	  <p class="header">
+	    xidldoc::destruct</p>
+	
+	  <div class="comments">
+ The actual class destructor. All cleanup code goes here, since it
+ can be called directly.</div>
+
+	  
+
+	  
+
+	  
+
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	
+	</div>
+	
+
+	<div class="routine_details" id="_xidldoc::cleanup">
+
+	  <h2><a class="top" href="#container">top</a>xidldoc::cleanup </h2>
+	
+	  <p class="header">
+	    xidldoc::cleanup</p>
+	
+	  <div class="comments">
+ The official class destructor. This method can't be called
+ directly, however, so all code is placed in the
+ <code>destruct</code> method instead.</div>
+
+	  
+
+	  
+
+	  
+
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	
+	</div>
+	
+
+	<div class="routine_details" id="_xidldoc::init">
+
+	  <h2><a class="top" href="#container">top</a>xidldoc::init </h2>
+	
+	  <p class="header">
+	    <span class="result">result = </span>xidldoc::init([<a href="#_xidldoc::init_keyword_header_image">header_image</a>=<span class="result">RGB image</span>])</p>
+	
+	  <div class="comments">
+ Class constructor, used to load class data. Only one instance of
+ xIDLdoc can run at any time.
+
+ <p> Note that only a pixel-interleaved RGB image can be displayed at
+ the top of the interface.
+</div>
+
+	  <h3>Return value</h3><div class="value"> 1 on success, 0 on failure.</div>
+
+	  
+
+	  
+
+	    <h3>Keywords</h3>
+	    
+	    <h4 id="_xidldoc::init_keyword_header_image">header_image&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      
+	      <span class="attr">optional</span>
+  	      
+	      
+	      <span class="attr">type:</span> <span class="value">RGB image</span>
+	      
+	      
+	    </h4>
+	
+	    <div class="comments"> A
+  pixel-interleaved RGB image to be displayed at the top of the
+  xIDLdoc interface.</div>
+	    
+	  
+
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	
+	</div>
+	
+
+	<div class="routine_details" id="_xidldoc__define">
+
+	  <h2><a class="top" href="#container">top</a>xidldoc__define </h2>
+	
+	  <p class="header">
+	    xidldoc__define</p>
+	
+	  <div class="comments">
+ The xIDLdoc class data definition routine.
+</div>
+
+	  
+
+	  
+
+	  
+
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	
+	  
+	
+	</div>
+	
+
+	<div class="routine_details" id="_xidldoc">
+
+	  <h2><a class="top" href="#container">top</a>xidldoc </h2>
+	
+	  <p class="header">
+	    xidldoc</p>
+	
+	  <div class="comments">
+ This is a wrapper for simplifying the creation and use of an
+ <code>xIDLdoc</code> object.
+</div>
+
+	  
+
+	  
+
+	  
+
+	  <h3>Examples</h3><div class="value">
+ <pre>
+ IDL> xidldoc
+ </pre>
+</div>
+	  <h3>Version history</h3>
+	  <h4>Author</h4><div class="value"> Mark Piper, RSI, 2004</div>
+	  
+	  <h4>History</h4><div class="value">
+  <ul>
+  <li>2005-03-28, MP: Desensitized checkbox for STATISTICS keyword.
+  <li>2005-07-21, MP: Resensitized checkbox for STATISTICS keyword.
+  Added checkboxes for the ASSISTANT and PREFORMAT keywords.
+  <li>2006-03-11, MG: Added tooltips for buttons, desensitized checkbox for
+  BROWSE_ROUTINES, added text box for LOG_FILE keyword
+  </ul></div>
+	  
+	  
+	  <h3>Known issues</h3>
+	  
+	  
+	  <h4>Todo items</h4><div class="value"> Save settings between calls in an init file stored with
+  APP_USER_DIR. Requires IDL 6.1.</div>
+	  
+	
+	  <h3>Other attributes</h3>
+	  
+	  <h4>Requires IDL version</h4><div class="value"> IDL 6.0</div>
+	  <h4>Uses routines</h4><div class="value"> Michael D. Galloy's IDLdoc. IDLdoc can be downloaded for free
+  from the RSI codebank: <code>(www.rsinc.com/codebank)</code>.
+  Also SOURCEROOT.</div>
+	  <h4>Pre-condition</h4><div class="value"> IDLdoc must be in the user's path or already compiled in the
+  user's IDL session.</div>
+	  
+	  
+	
+	  
+	
+	</div>
+	
+      </div>
+
+      
+
+      <div id="tagline">Produced by IDLdoc 2.0 on Sat Mar 11 21:40:01 2006.</div>
+
+    </div>
+
+  </body>
+</html>
Index: trunk/Documentation/idldoc/handle_events.pro
===================================================================
--- trunk/Documentation/idldoc/handle_events.pro	(revision 68)
+++ 	(revision )
@@ -1,16 +1,0 @@
-;2345678901234567890123456789012345678901234567890123456789012345678901234567890
-
-;+
-; Event handler for object-widget program.  Calls the "handle_events" method of
-; the object-widget program.  The object reference for the program must be
-; stored in the TLB's UVALUE.
-;
-; @param event {in}{required}{type=structure} event structure for any event
-;        generated by the program
-;-
-pro handle_events, event
-    compile_opt idl2
-
-    widget_control, event.top, get_uvalue=self
-    self->handle_events, event
-end
Index: trunk/Documentation/idldoc/help-template
===================================================================
--- trunk/Documentation/idldoc/help-template	(revision 68)
+++ 	(revision )
@@ -1,85 +1,0 @@
-<H1>Help on IDLdoc output</H1>
-
-<H2>Routine summary</H2>
-
-The routine summary simply provides the calling sequence for each routine in
-the file and the first sentence of the detailed description.
-
-<H2>Routine Details</H2>
-
-The routine details sections gives a possibly longer description of the routine
-as well as a tables of the parameters and keywords accepted by the routine.
-
-All the parameters and keywords of the routine will be in these tables
-regardless if they have been commented using IDLdoc.
-
-<H3>Notes on routine attributes</H3>
-
-See the IDLdoc page for IDLdoc itself for a full listing of the attributes of
-a routine.
-
-<P>
-
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="minor_listing">
-    <TR bgcolor="#EEEEFF">
-        <TD width="1%" valign="top"><B>Attribute</B></TD>
-        <TD><B>Description</B></TD>
-    </TR>
-    <TR>
-        <TD valign="top">abstract</TD>
-        <TD>The routine name will be italicized if the routine is marked
-            "abstract" (meaning it is not implemented, it is provided for its
-            interface).  This is generally used in only object-oriented
-            programming.
-        </TD>
-    </TR>
-    <TR>
-        <TD valign="top">private</TD>
-        <TD>This routine is not intended to be called except by other routines
-            in the same file. In other words it is a "helper routine".
-        </TD>
-    </TR>
-</TABLE>
-
-
-<H3>Keyword and parameter attributes</H3>
-
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="minor_listing">
-    <TR bgcolor="#EEEEFF">
-        <TD width="1%" valign="top"><B>Attribute</B></TD>
-        <TD><B>Description</B></TD>
-    </TR>
-    <TR>
-        <TD valign="top">in</TD>
-        <TD>indicates that the argument is intended to be passed into the
-            routine.
-        </TD>
-    </TR>
-    <TR>
-        <TD valign="top">out</TD>
-        <TD>indicates that the argument is intended to be used to pass a value
-            out of the routine. A named variable must be passed to the routine
-            to pass a value back to the calling level.
-        </TD>
-    </TR>
-    <TR>
-        <TD valign="top">optional</TD>
-        <TD>indicates the argument is optional; optional parameters and keywords
-            are also placed inside brackets ([]) in the routine summary.
-        </TD>
-    </TR>
-    <TR>
-        <TD valign="top">required</TD>
-        <TD>indicates the argument is required</TD>
-    </TR>
-    <TR>
-        <TD valign="top">type</TD>
-        <TD>"type" indicates the type of the variable.  Can be used indicate a
-            group of types, a specific type, an array of a certain type, etc.
-            Boolean keywords are indicated by a /KEYWORD_NAME in the routine
-            summary.
-        </TD>
-    </TR>
-</TABLE>
-
-<P>
Index: trunk/Documentation/idldoc/idldoc.css
===================================================================
--- trunk/Documentation/idldoc/idldoc.css	(revision 68)
+++ 	(revision )
@@ -1,303 +1,0 @@
-a:link { color: #660000 }
-a:active { color: #660000 }
-a:visited {color: #660000 }
-
-/* Default font for body text */
-BODY {
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: Arial;
-    BACKGROUND-COLOR: #FFFFF9
-}
-
-/* Default font for text in tables */
-TD {
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: Arial
-}
-
-/* Format for body of all files */
-BODY.standard {
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: Arial;
-    BACKGROUND-COLOR: #FFFFF9
-}
-
-TABLE.parameters {
-    BORDER-TOP: 1px solid #FFFFCC;
-    BORDER-BOTTOM: 1px solid #88AA66;
-    BORDER-LEFT: 1px solid #FFFFCC;
-    BORDER-RIGHT: 1px solid #88AA66;
-    WIDTH: 95%;
-    MARGIN-LEFT: 5%
-}
-
-TR.parameters {
-    BORDER-RIGHT-WIDTH: 0px;
-    BORDER-TOP-WIDTH: 1px;
-    BORDER-LEFT-WIDTH: 0px;
-    WIDTH: 100%;
-    BORDER-BOTTOM-WIDTH: 1px;
-    BORDER-STYLE: solid
-}
-
-TD.index_selection_header {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 14pt;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-TABLE.minor_listing {
-    BORDER-TOP: 1px solid #EEEEFF;
-    BORDER-BOTTOM: 1px solid #6666AA;
-    BORDER-LEFT: 1px solid #EEEEFF;
-    BORDER-RIGHT: 1px solid #6666AA;
-    WIDTH: 100%
-}
-
-TABLE.listing {
-    BORDER-TOP: 1px solid #BBBBFF;
-    BORDER-BOTTOM: 1px solid #6666AA;
-    BORDER-LEFT: 1px solid #BBBBFF;
-    BORDER-RIGHT: 1px solid #6666AA;
-    WIDTH: 100%
-}
-
-TABLE.routine_listing {
-    BACKGROUND: #FFFFAA;
-    BORDER-TOP: 1px solid #FFEEAA;
-    BORDER-BOTTOM: 1px solid #AAAA66;
-    BORDER-LEFT: 1px solid #FFEEAA;
-    BORDER-RIGHT: 1px solid #AAAA66;
-    WIDTH: 100%
-}
-
-TD.title {
-    FONT-SIZE: 14pt;
-    BACKGROUND: #ccccff;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-TR.small_title {
-    FONT-WEIGHT: bold;
-    BACKGROUND: #eeeeff;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* #F0FFBA */
-TR.parameter_title {
-    FONT-WEIGHT: bold;
-    FONT-FAMILY: Helvetica, sans-serif;
-    BACKGROUND: #F0FFE0
-}
-
-/***** Navbar stuff *****/
-
-TD.navbar_unselected A:hover {
-    BACKGROUND: #AAAAFF;
-    BORDER-TOP: 3px solid #AAAAFF;
-    BORDER-BOTTOM: 3px solid #AAAAFF
-}
-
-/* Formatting for the row with the labels */
-TR.navbar {
-    FONT-WEIGHT: bold;
-    BACKGROUND: #ddddff;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for the table cell that is currently selected */
-TD.navbar_selected {
-    BORDER-TOP: 3px solid #0000AA;
-    BORDER-BOTTOM: 3px solid #DDDDFF
-}
-
-TD.navbar_unselected {
-    BORDER-TOP: 3px solid #DDDDFF;
-    BORDER-BOTTOM: 3px solid #DDDDFF
-}
-
-/* Formatting for the text that allows cycling through files and finding details vs. summary */
-TD.navbar_small {
-    FONT-WEIGHT: lighter;
-    FONT-SIZE: 8pt;
-    TEXT-TRANSFORM: lowercase;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for Research System's logo */
-FONT.logo {
-    FONT-SIZE: 16pt;
-    TEXT-TRANSFORM: uppercase;
-    FONT-FAMILY: 'Times New Roman', serif
-}
-
-/* Formatting for IDL version and User/Developer Documentation tag */
-FONT.version {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for directory name on a file page */
-FONT.directory {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    COLOR: darkolivegreen
-}
-
-/* Formatting for a file name on a file page */
-FONT.file {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 16pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for line at bottom of page indicating version of IDLdoc */
-FONT.tagline {
-    FONT-SIZE: 8pt;
-    FONT-STYLE: italic;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-FONT.code {
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: 'Courier New', monospace
-}
-
-/* Format for the attributes to a parameter or keyword in the table of parameters and keywords in the routine details */
-.param_attrib {
-    FONT-WEIGHT: 200;
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    COLOR: darkolivegreen
-}
-
-/* Format for a parameter or keyword name in the table of parameters and keywords in the routine details */
-FONT.param_name {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-TD.listing {
-    BORDER-RIGHT: 0px solid;
-    BORDER-TOP: 0px solid;
-    BORDER-LEFT: 0px solid;
-    BORDER-BOTTOM: 1px solid
-}
-
-.list {
-    FONT-SIZE: 9pt;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-.list_title {
-    FONT-SIZE: 9pt;
-    FONT-WEIGHT: bold;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-/* Font for the number of files or directories in the side frames */
-.list_tagline {
-    FONT-WEIGHT: lighter;
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    COLOR: darkolivegreen
-}
-
-.list_tagline_caution {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-.list_tagline_error {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    COLOR: #FF1111
-}
-
-P.code_header {
-    FONT-SIZE: 10pt;
-    MARGIN-TOP: 0pt;
-    MARGIN-BOTTOM: 0pt;
-    MARGIN-LEFT: 30pt;
-    TEXT-INDENT: -30pt;
-    FONT-FAMILY: 'Courier New', monospace
-}
-
-P.first_line {
-    MARGIN-TOP: 3pt;
-    MARGIN-BOTTOM: 0pt;
-    MARGIN-LEFT: 15pt;
-    FONT-WEIGHT: lighter;
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-}
-
-.routine {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 12pt;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-/* Formatting for the attributes of a routine */
-DT.attribute {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 9pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for the attributes of a routine */
-.attribute_item {
-    FONT-SIZE: 9pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    MARGIN-BOTTOM: 4px;
-    FONT-WEIGHT: lighter;
-    COLOR: darkolivegreen
-}
-
-/* Formatting for the attributes of a routine */
-DT.index_item {
-    FONT-SIZE: 9pt;
-    FONT-WEIGHT: lighter;
-    FONT-FAMILY: Helvetica, sans-serif
-
-}
-
-/* Formatting for the attributes of a routine */
-DD.index_description {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    FONT-WEIGHT: lighter;
-    COLOR: darkolivegreen
-}
-
-HR.divider {
-    COLOR: lightslateblue;
-    BORDER-TOP-WIDTH: 1px;
-    BORDER-BOTTOM-WIDTH: 0px;
-    BORDER-LEFT-WIDTH: 0px;
-    BORDER-RIGHT-WIDTH: 0px;
-    HEIGHT: 1px
-}
-
-HR.table_divider {
-    COLOR: rgb(200, 200, 255);
-    BORDER-TOP-WIDTH: 1px;
-    BORDER-BOTTOM-WIDTH: 0px;
-    BORDER-LEFT-WIDTH: 0px;
-    BORDER-RIGHT-WIDTH: 0px;
-    BORDER-STYLE: dotted;
-    HEIGHT: 1px
-}
-
-TR.table_divider {
-    HEIGHT: 1px;
-    MARGIN: 0px;
-    PADDING: 0px
-}
-
-SPAN.index_selection {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 12pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
Index: trunk/Documentation/idldoc/idldoc.html
===================================================================
--- trunk/Documentation/idldoc/idldoc.html	(revision 68)
+++ 	(revision )
@@ -1,2561 +1,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
-<HTML>
-<HEAD>
-<!-- Generated by IDLdoc 1.6, build date Fri Jan 14 15:57:17 2005 on Wed Feb 09 12:40:19 2005 -->
-<TITLE>idldoc.pro</TITLE>
-<STYLE><!--
-a:link { color: #660000 }
-a:active { color: #660000 }
-a:visited {color: #660000 }
-
-/* Default font for body text */
-BODY {
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: Arial;
-    BACKGROUND-COLOR: #FFFFF9
-}
-
-/* Default font for text in tables */
-TD {
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: Arial
-}
-
-/* Format for body of all files */
-BODY.standard {
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: Arial;
-    BACKGROUND-COLOR: #FFFFF9
-}
-
-TABLE.parameters {
-    BORDER-TOP: 1px solid #FFFFCC;
-    BORDER-BOTTOM: 1px solid #88AA66;
-    BORDER-LEFT: 1px solid #FFFFCC;
-    BORDER-RIGHT: 1px solid #88AA66;
-    WIDTH: 95%;
-    MARGIN-LEFT: 5%
-}
-
-TR.parameters {
-    BORDER-RIGHT-WIDTH: 0px;
-    BORDER-TOP-WIDTH: 1px;
-    BORDER-LEFT-WIDTH: 0px;
-    WIDTH: 100%;
-    BORDER-BOTTOM-WIDTH: 1px;
-    BORDER-STYLE: solid
-}
-
-TD.index_selection_header {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 14pt;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-TABLE.minor_listing {
-    BORDER-TOP: 1px solid #EEEEFF;
-    BORDER-BOTTOM: 1px solid #6666AA;
-    BORDER-LEFT: 1px solid #EEEEFF;
-    BORDER-RIGHT: 1px solid #6666AA;
-    WIDTH: 100%
-}
-
-TABLE.listing {
-    BORDER-TOP: 1px solid #BBBBFF;
-    BORDER-BOTTOM: 1px solid #6666AA;
-    BORDER-LEFT: 1px solid #BBBBFF;
-    BORDER-RIGHT: 1px solid #6666AA;
-    WIDTH: 100%
-}
-
-TABLE.routine_listing {
-    BACKGROUND: #FFFFAA;
-    BORDER-TOP: 1px solid #FFEEAA;
-    BORDER-BOTTOM: 1px solid #AAAA66;
-    BORDER-LEFT: 1px solid #FFEEAA;
-    BORDER-RIGHT: 1px solid #AAAA66;
-    WIDTH: 100%
-}
-
-TD.title {
-    FONT-SIZE: 14pt;
-    BACKGROUND: #ccccff;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-TR.small_title {
-    FONT-WEIGHT: bold;
-    BACKGROUND: #eeeeff;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* #F0FFBA */
-TR.parameter_title {
-    FONT-WEIGHT: bold;
-    FONT-FAMILY: Helvetica, sans-serif;
-    BACKGROUND: #F0FFE0
-}
-
-/***** Navbar stuff *****/
-
-TD.navbar_unselected A:hover {
-    BACKGROUND: #AAAAFF;
-    BORDER-TOP: 3px solid #AAAAFF;
-    BORDER-BOTTOM: 3px solid #AAAAFF
-}
-
-/* Formatting for the row with the labels */
-TR.navbar {
-    FONT-WEIGHT: bold;
-    BACKGROUND: #ddddff;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for the table cell that is currently selected */
-TD.navbar_selected {
-    BORDER-TOP: 3px solid #0000AA;
-    BORDER-BOTTOM: 3px solid #DDDDFF
-}
-
-TD.navbar_unselected {
-    BORDER-TOP: 3px solid #DDDDFF;
-    BORDER-BOTTOM: 3px solid #DDDDFF
-}
-
-/* Formatting for the text that allows cycling through files and finding details vs. summary */
-TD.navbar_small {
-    FONT-WEIGHT: lighter;
-    FONT-SIZE: 8pt;
-    TEXT-TRANSFORM: lowercase;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for Research System's logo */
-FONT.logo {
-    FONT-SIZE: 16pt;
-    TEXT-TRANSFORM: uppercase;
-    FONT-FAMILY: 'Times New Roman', serif
-}
-
-/* Formatting for IDL version and User/Developer Documentation tag */
-FONT.version {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for directory name on a file page */
-FONT.directory {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    COLOR: darkolivegreen
-}
-
-/* Formatting for a file name on a file page */
-FONT.file {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 16pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for line at bottom of page indicating version of IDLdoc */
-FONT.tagline {
-    FONT-SIZE: 8pt;
-    FONT-STYLE: italic;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-FONT.code {
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: 'Courier New', monospace
-}
-
-/* Format for the attributes to a parameter or keyword in the table of parameters and keywords in the routine details */
-.param_attrib {
-    FONT-WEIGHT: 200;
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    COLOR: darkolivegreen
-}
-
-/* Format for a parameter or keyword name in the table of parameters and keywords in the routine details */
-FONT.param_name {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-TD.listing {
-    BORDER-RIGHT: 0px solid;
-    BORDER-TOP: 0px solid;
-    BORDER-LEFT: 0px solid;
-    BORDER-BOTTOM: 1px solid
-}
-
-.list {
-    FONT-SIZE: 9pt;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-.list_title {
-    FONT-SIZE: 9pt;
-    FONT-WEIGHT: bold;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-/* Font for the number of files or directories in the side frames */
-.list_tagline {
-    FONT-WEIGHT: lighter;
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    COLOR: darkolivegreen
-}
-
-.list_tagline_caution {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-.list_tagline_error {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    COLOR: #FF1111
-}
-
-P.code_header {
-    FONT-SIZE: 10pt;
-    MARGIN-TOP: 0pt;
-    MARGIN-BOTTOM: 0pt;
-    MARGIN-LEFT: 30pt;
-    TEXT-INDENT: -30pt;
-    FONT-FAMILY: 'Courier New', monospace
-}
-
-P.first_line {
-    MARGIN-TOP: 3pt;
-    MARGIN-BOTTOM: 0pt;
-    MARGIN-LEFT: 15pt;
-    FONT-WEIGHT: lighter;
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-}
-
-.routine {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 12pt;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-/* Formatting for the attributes of a routine */
-DT.attribute {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 9pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for the attributes of a routine */
-.attribute_item {
-    FONT-SIZE: 9pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    MARGIN-BOTTOM: 4px;
-    FONT-WEIGHT: lighter;
-    COLOR: darkolivegreen
-}
-
-/* Formatting for the attributes of a routine */
-DT.index_item {
-    FONT-SIZE: 9pt;
-    FONT-WEIGHT: lighter;
-    FONT-FAMILY: Helvetica, sans-serif
-
-}
-
-/* Formatting for the attributes of a routine */
-DD.index_description {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    FONT-WEIGHT: lighter;
-    COLOR: darkolivegreen
-}
-
-HR.divider {
-    COLOR: lightslateblue;
-    BORDER-TOP-WIDTH: 1px;
-    BORDER-BOTTOM-WIDTH: 0px;
-    BORDER-LEFT-WIDTH: 0px;
-    BORDER-RIGHT-WIDTH: 0px;
-    HEIGHT: 1px
-}
-
-HR.table_divider {
-    COLOR: rgb(200, 200, 255);
-    BORDER-TOP-WIDTH: 1px;
-    BORDER-BOTTOM-WIDTH: 0px;
-    BORDER-LEFT-WIDTH: 0px;
-    BORDER-RIGHT-WIDTH: 0px;
-    BORDER-STYLE: dotted;
-    HEIGHT: 1px
-}
-
-TR.table_divider {
-    HEIGHT: 1px;
-    MARGIN: 0px;
-    PADDING: 0px
-}
-
-SPAN.index_selection {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 12pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
---></STYLE>
-</HEAD>
-
-<SCRIPT>
-function setTitle()
-{
-parent.document.title="idldoc.pro (IDL Library)";
-}
-</SCRIPT>
-
-<BODY CLASS="standard" onload="setTitle();">
-
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="100%">
-<TR><TD VALIGN="TOP" BGCOLOR="#DDDDFF" style="BORDER-TOP: 1px solid #BBBBFF; BORDER-BOTTOM: 1px solid #6666AA; BORDER-LEFT: 1px solid #BBBBFF; BORDER-RIGHT: 1px solid #6666AA;">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
-<TR CLASS="navbar">
-<TD class="navbar_unselected">&nbsp;<A HREF="../../overview.html">Overview</A>&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;<A HREF="directory-overview.html">Directory</A>&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;<A HREF="../../full-index.html">Index</A>&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;<A HREF="../../search-page.html">Search</A>&nbsp;</TD>
-<TD class="navbar_selected">&nbsp;File&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;<A HREF="idldoc.pro">Source</A>&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;<A HREF="../../idldoc-help.html">Help</A>&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;Etc&nbsp;</TD>
-</TR>
-</TABLE>
-</TD>
-<TD>&nbsp;&nbsp;&nbsp;</TD>
-<TD ROWSPAN="3" ALIGN="right"><FONT CLASS="logo"><NOBR>IDL Library</NOBR></FONT><BR><FONT CLASS="version"><NOBR>Michael Galloy, RSI</NOBR></FONT><BR><FONT CLASS="version" STYLE="font-weight: bold">Developer&nbsp;Documentation</FONT></TD>
-</TR>
-<TR><TD CLASS="navbar_small">&nbsp;<A HREF="idldcroutine_parse_attr.html">prev&nbsp;file</A>&nbsp;|&nbsp;<A HREF="idldoc_class_fields.html">next&nbsp;file</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<NOBR><A HREF="idldoc.html" TARGET="_top">view single page</A>&nbsp;|&nbsp;<A HREF="../../index.html" TARGET="_top">view frames</A>&nbsp;|&nbsp;<A HREF="idldoc-routines.html" TARGET="routine_frame">update routines</A></NOBR></TD></TR>
-<TR><TD CLASS="navbar_small">SUMMARY:&nbsp;fields&nbsp;|&nbsp;<A HREF="#_routine_summary">routine</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DETAILS:&nbsp;<A HREF="#_routine_details">routine</A></TD></TR>
-<TR><TD></TD></TR>
-</TABLE>
-
-<HR CLASS="divider">
-
-<P>
-<FONT CLASS="directory">.\tools\idldoc</FONT></BR>
-<FONT CLASS="file">idldoc.pro</FONT>
-<P>
-<DL>
-<DT CLASS="attribute">Last modification date:
-<DD CLASS="attribute_item">Fri Jan 14 15:57:11 2005</DD></DT>
-</DL>
-<P>
- IDLdoc is a hypertext documentation system for IDL code.  It
- is intended to show the API of a library of code in an easy to browse
- manner.  It produces HTML pages -- one page per '.pro' file, as
- well as directory listing, overview pages, and an index of files, routines,
- keywords, and parameter names.
-
- <p> Unmarked code may be processed by IDLdoc to produce a browseable
- listing of routines and their arguments.  But to obtain more useful
- results, the source can be marked to produce formatted comments in
- the output. Each routine has special tags to indicate particular
- information for IDLdoc formatting use. HTML markup tags may be used
- anywhere comments are expected.  See the
- <A HREF="idldoc_files.html">help</A> for individual files for specifics about
- the tags available.
-
- <p> For a more an example of code that has been documented using IDLdoc,
- check IDLdoc's source for its comments and compare to its output.
-
- <p> Class listings and fields summary will be generated for files which
- end with __DEFINE.PRO.  Use the "field" tag to make comments on each
- field of the class/structure defined.
-
- <p> An overview file can be specified with the OVERVIEW keyword to IDLdoc.
- This file is a plain text file with comments (which can contain HTML codes)
- that will be displayed on a summary page.  The below tags are processed by
- IDLdoc.
-
- <p>
-
- <table width="100%" border="1" cellspacing="0" cellpadding="3">
- <tr bgcolor="#DDDDDD"><td colspan="2"><b>Overview Tags</b></td></tr>
- <tr><td width="100" align="right" valign="top">dir</td>
- <td>Comment for a directory.  The first parameter to dir is the directory
- name relative to the root dir.  The rest of the tag content is the comment.
- </td></tr>
- </table>
-
- <p> The style of the output of IDLdoc can be changed by editing the
- cascading style sheet used: idldoc.css found in the same directory
- as IDLdoc.
-
- <p> This help was produced by IDLdoc.
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="listing">
-<TR><TD CLASS="title">
-<A NAME="_routine_summary">Routine Summary</A>
-&nbsp;<FONT CLASS="list_tagline">21 routines</FONT>
-</TD></TR>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">function <A HREF="#_idldoc_version">idldoc_version</A>([/build])</P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line">  IDLdoc version is returned.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc_filecopy">idldoc_filecopy</A>, src, dst, warnings=<EM>variable</EM></P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line">  Copies the src file to dst file, overwriting the previous dst file if  necessary.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc_find_at_symbol">idldoc_find_at_symbol</A>, lines[, line_num][, pos]</P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line">  Find the first \@ symbol in a line or lines of comments.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">function <A HREF="#_idldoc_elim_slash">idldoc_elim_slash</A>(dir)</P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line">  Changes any file specification notation to the web notation ("/").</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc_process_tags">idldoc_process_tags</A>, tag_lines, pro_dirs, comments, [warnings=<EM>variable</EM>]</P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line">  Process the tags in the overview file.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc_write_header">idldoc_write_header</A>, title, [lun=<EM>integral</EM>], [html=<EM>integral</EM>]</P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line">  Write am IDLdoc-style header.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc_write_warning">idldoc_write_warning</A>, pro_files, file_hash, title=<EM>title</EM>, subtitle=<EM>subtitle</EM>, footer=<EM>footer</EM>, embed=<EM>embed</EM>, user=<EM>user</EM>, [warnings=<EM>variable</EM>], statistics=<EM>statistics</EM></P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line">  Create the warnings page for the library.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc_write_search">idldoc_write_search</A>, pro_dirs, pro_files, title=<EM>title</EM>, index_hash=<EM>index_hash</EM>, subtitle=<EM>subtitle</EM>, footer=<EM>footer</EM>, embed=<EM>embed</EM>, nonavbar=<EM>nonavbar</EM>, file_hash=<EM>file_hash</EM>, user=<EM>user</EM>, root=<EM>root</EM>, [warnings=<EM>variable</EM>]</P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line">  Writes the search file.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc_write_etc">idldoc_write_etc</A>, etc_files, title=<EM>title</EM>, subtitle=<EM>subtitle</EM>, footer=<EM>footer</EM>, embed=<EM>embed</EM>, nonavbar=<EM>nonavbar</EM>, user=<EM>user</EM>, [warnings=<EM>variable</EM>]</P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line"></P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc_write_dir_overview">idldoc_write_dir_overview</A>, pro_dir, pro_files, title=<EM>title</EM>, subtitle=<EM>subtitle</EM>, footer=<EM>footer</EM>, embed=<EM>embed</EM>, nonavbar=<EM>nonavbar</EM>, file_hash=<EM>file_hash</EM>, user=<EM>user</EM>, [warnings=<EM>variable</EM>]</P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line"></P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc_write_directory_overviews">idldoc_write_directory_overviews</A>, pro_dirs, pro_files, title=<EM>title</EM>, subtitle=<EM>subtitle</EM>, footer=<EM>footer</EM>, embed=<EM>embed</EM>, nonavbar=<EM>nonavbar</EM>, file_hash=<EM>file_hash</EM>, user=<EM>user</EM>, [warnings=<EM>variable</EM>]</P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line"></P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc_write_full_index">idldoc_write_full_index</A>, index_hash, title=<EM>title</EM>, subtitle=<EM>subtitle</EM>, footer=<EM>footer</EM>, embed=<EM>embed</EM>, user=<EM>user</EM>, [warnings=<EM>variable</EM>]</P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line">  Create the index for the library.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc_write_overview">idldoc_write_overview</A>, overview, pro_dirs, [warnings=<EM>variable</EM>], [/user], [/embed], [/nonavbar], title=<EM>title</EM>, subtitle=<EM>subtitle</EM>, footer=<EM>footer</EM></P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line">  Processes the file specified by the OVERVIEW keyword to IDLdoc (if present)  and creates the 'overview&#046;html' file that shows in the main browser  frame when loading the 'index&#046;html' file.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc_write_blank">idldoc_write_blank</A>, [warnings=<EM>variable</EM>], embed=<EM>embed</EM></P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line">  Create a blank file for the initial routines frame.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc_write_help">idldoc_write_help</A>, [warnings=<EM>variable</EM>], [/user], [/embed], [/nonavbar], title=<EM>title</EM>, subtitle=<EM>subtitle</EM></P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line">  Create help&#046;html in the root directory.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc_write_index">idldoc_write_index</A>, pro_dirs, title=<EM>title</EM>, [warnings=<EM>variable</EM>], browse_routines=<EM>browse_routines</EM></P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line">  Create index&#046;html in the root directory.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc_write_dir_files">idldoc_write_dir_files</A>, pro_files, pro_dir, [/embed], user=<EM>user</EM>, file_hash=<EM>file_hash</EM>, [warnings=<EM>variable</EM>]</P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line">  Writes the 'dir-files&#046;html' file in each directory that contains the  links to each of the .</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc_write_all_files">idldoc_write_all_files</A>, pro_files, [/embed], file_hash=<EM>file_hash</EM>, user=<EM>user</EM>, [warnings=<EM>variable</EM>]</P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line">  Writes the all-files&#046;html file in the root directory.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc_write_all_dirs">idldoc_write_all_dirs</A>, pro_dirs, count, [/embed], [warnings=<EM>variable</EM>]</P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line">  Writes the all-dirs&#046;html file in the root directory.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">function <A HREF="#_idldoc_find_dirs">idldoc_find_dirs</A>(pro_files, ndirs)</P></TD><TD ALIGN="right" VALIGN="top"><FONT CLASS="param_attrib">private </FONT></TD><TR><TD><P class="first_line">  Find the directories with &#046;pro files in them.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_idldoc">idldoc</A>, root=<EM>string</EM>, [footer=<EM>string</EM>], [output=<EM>string</EM>], [overview=<EM>string</EM>], [/user], [/quiet], [/silent], [/embed], [/nonavbar], [title=<EM>string</EM>], [subtitle=<EM>string</EM>], [n_warnings=<EM>variable</EM>], [/browse_routines], preformat=<EM>preformat</EM></P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  Calling routine for IDLdoc.</P></TD></TR></TABLE>
-</TABLE>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="listing">
-<TR><TD CLASS="title"><A NAME="_routine_details">Routine Details</A></TD></TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_version"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_version
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">function idldoc_version([/<A HREF=#_idldoc_version_keyword_build>build</A>])</P></TD></TR></TABLE>
-<P>
-
- IDLdoc version is returned.
-
-<P>
-<DL>
-<DT CLASS="attribute">Returns
-<DD CLASS="attribute_item">
- string representing IDLdoc's current version
-</DD></DT>
-</DL>
-<P>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_version_keyword_build"/>
-<FONT CLASS="param_name">build</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- set to return a string with the
-          build date in it also
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_filecopy"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_filecopy
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc_filecopy, <A HREF=#_idldoc_filecopy_param_src>src</A>, <A HREF=#_idldoc_filecopy_param_dst>dst</A>, <A HREF=#_idldoc_filecopy_keyword_warnings>warnings</A>=<EM>variable</EM></P></TD></TR></TABLE>
-<P>
-
- Copies the src file to dst file, overwriting the previous dst file if
- necessary.
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_filecopy_param_src"/>
-<FONT CLASS="param_name">src</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, required</NOBR><BR>
-<NOBR>string</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- source filename
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_filecopy_param_dst"/>
-<FONT CLASS="param_name">dst</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, required</NOBR><BR>
-<NOBR>string</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- destination filename; if this file
-        exists already, it will be overwritten
-</TD>
-</TR>
-</TABLE>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_filecopy_keyword_warnings"/>
-<FONT CLASS="param_name">warnings</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, required</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a named variable to return the
-          number of warnings
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_find_at_symbol"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_find_at_symbol
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc_find_at_symbol, <A HREF=#_idldoc_find_at_symbol_param_lines>lines</A>[, <A HREF=#_idldoc_find_at_symbol_param_line_num>line_num</A>][, <A HREF=#_idldoc_find_at_symbol_param_pos>pos</A>]</P></TD></TR></TABLE>
-<P>
-
- Find the first \@ symbol in a line or lines of comments.
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_find_at_symbol_param_lines"/>
-<FONT CLASS="param_name">lines</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, required</NOBR><BR>
-<NOBR>string array</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- lines of IDL comments
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_find_at_symbol_param_line_num"/>
-<FONT CLASS="param_name">line_num</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, optional</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- line number of the @ symbol
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_find_at_symbol_param_pos"/>
-<FONT CLASS="param_name">pos</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, optional</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- position of the @ symbol
-</TD>
-</TR>
-</TABLE>
-<P>
-<P>
-<A NAME="_idldoc_elim_slash"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_elim_slash
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">function idldoc_elim_slash(<A HREF=#_idldoc_elim_slash_param_dir>dir</A>)</P></TD></TR></TABLE>
-<P>
-
- Changes any file specification notation to the web notation ("/").
-
-<P>
-<DL>
-<DT CLASS="attribute">Returns
-<DD CLASS="attribute_item">
- string or string array with path separators changed to "/" since
-          the web always uses "/"
-</DD></DT>
-</DL>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_elim_slash_param_dir"/>
-<FONT CLASS="param_name">dir</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in</NOBR><BR>
-<NOBR>string or string array</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- represents directory path(s)
-</TD>
-</TR>
-</TABLE>
-<P>
-<P>
-<A NAME="_idldoc_process_tags"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_process_tags
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc_process_tags, <A HREF=#_idldoc_process_tags_param_tag_lines>tag_lines</A>, <A HREF=#_idldoc_process_tags_param_pro_dirs>pro_dirs</A>, <A HREF=#_idldoc_process_tags_param_comments>comments</A>, [<A HREF=#_idldoc_process_tags_keyword_warnings>warnings</A>=<EM>variable</EM>]</P></TD></TR></TABLE>
-<P>
-
- Process the tags in the overview file.
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_process_tags_param_tag_lines"/>
-<FONT CLASS="param_name">tag_lines</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in</NOBR><BR>
-<NOBR>string array</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- the portion of the file specified
-        by overview that has at signs in it
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_process_tags_param_pro_dirs"/>
-<FONT CLASS="param_name">pro_dirs</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in</NOBR><BR>
-<NOBR>string array</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- directories under root that hold
-        .pro files
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_process_tags_param_comments"/>
-<FONT CLASS="param_name">comments</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in/out</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- comments for the pro_dirs
-        directories; matches elementwise
-</TD>
-</TR>
-</TABLE>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_process_tags_keyword_warnings"/>
-<FONT CLASS="param_name">warnings</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, optional</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a named variable to return the
-          number of warnings
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_write_header"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_write_header
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc_write_header, <A HREF=#_idldoc_write_header_param_title>title</A>, [<A HREF=#_idldoc_write_header_keyword_lun>lun</A>=<EM>integral</EM>], [<A HREF=#_idldoc_write_header_keyword_html>html</A>=<EM>integral</EM>]</P></TD></TR></TABLE>
-<P>
-
- Write am IDLdoc-style header.
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_header_param_title"/>
-<FONT CLASS="param_name">title</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, required</NOBR><BR>
-<NOBR>str</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- title of the header
-</TD>
-</TR>
-</TABLE>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_header_keyword_lun"/>
-<FONT CLASS="param_name">lun</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>integral</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- LUN of the file to appear in
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_header_keyword_html"/>
-<FONT CLASS="param_name">html</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>integral</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- HTML_OUTPUT object reference of
-          the file to appear in
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_write_warning"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_write_warning
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc_write_warning, <A HREF=#_idldoc_write_warning_param_pro_files>pro_files</A>, <A HREF=#_idldoc_write_warning_param_file_hash>file_hash</A>, <A HREF=#_idldoc_write_warning_keyword_title>title</A>=<EM>title</EM>, <A HREF=#_idldoc_write_warning_keyword_subtitle>subtitle</A>=<EM>subtitle</EM>, <A HREF=#_idldoc_write_warning_keyword_footer>footer</A>=<EM>footer</EM>, <A HREF=#_idldoc_write_warning_keyword_embed>embed</A>=<EM>embed</EM>, <A HREF=#_idldoc_write_warning_keyword_user>user</A>=<EM>user</EM>, [<A HREF=#_idldoc_write_warning_keyword_warnings>warnings</A>=<EM>variable</EM>], <A HREF=#_idldoc_write_warning_keyword_statistics>statistics</A>=<EM>statistics</EM></P></TD></TR></TABLE>
-<P>
-
- Create the warnings page for the library.
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_warning_param_pro_files"/>
-<FONT CLASS="param_name">pro_files</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_warning_param_file_hash"/>
-<FONT CLASS="param_name">file_hash</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in</NOBR><BR>
-<NOBR>obj ref</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- hash table of file references
-</TD>
-</TR>
-</TABLE>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_warning_keyword_title"/>
-<FONT CLASS="param_name">title</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_warning_keyword_subtitle"/>
-<FONT CLASS="param_name">subtitle</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_warning_keyword_footer"/>
-<FONT CLASS="param_name">footer</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_warning_keyword_embed"/>
-<FONT CLASS="param_name">embed</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_warning_keyword_user"/>
-<FONT CLASS="param_name">user</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_warning_keyword_warnings"/>
-<FONT CLASS="param_name">warnings</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, optional</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a named variable to return the
-          number of warnings
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_warning_keyword_statistics"/>
-<FONT CLASS="param_name">statistics</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_write_search"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_write_search
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc_write_search, <A HREF=#_idldoc_write_search_param_pro_dirs>pro_dirs</A>, <A HREF=#_idldoc_write_search_param_pro_files>pro_files</A>, <A HREF=#_idldoc_write_search_keyword_title>title</A>=<EM>title</EM>, <A HREF=#_idldoc_write_search_keyword_index_hash>index_hash</A>=<EM>index_hash</EM>, <A HREF=#_idldoc_write_search_keyword_subtitle>subtitle</A>=<EM>subtitle</EM>, <A HREF=#_idldoc_write_search_keyword_footer>footer</A>=<EM>footer</EM>, <A HREF=#_idldoc_write_search_keyword_embed>embed</A>=<EM>embed</EM>, <A HREF=#_idldoc_write_search_keyword_nonavbar>nonavbar</A>=<EM>nonavbar</EM>, <A HREF=#_idldoc_write_search_keyword_file_hash>file_hash</A>=<EM>file_hash</EM>, <A HREF=#_idldoc_write_search_keyword_user>user</A>=<EM>user</EM>, <A HREF=#_idldoc_write_search_keyword_root>root</A>=<EM>root</EM>, [<A HREF=#_idldoc_write_search_keyword_warnings>warnings</A>=<EM>variable</EM>]</P></TD></TR></TABLE>
-<P>
-
- Writes the search file.
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_search_param_pro_dirs"/>
-<FONT CLASS="param_name">pro_dirs</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_search_param_pro_files"/>
-<FONT CLASS="param_name">pro_files</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-</TABLE>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_search_keyword_title"/>
-<FONT CLASS="param_name">title</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_search_keyword_index_hash"/>
-<FONT CLASS="param_name">index_hash</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_search_keyword_subtitle"/>
-<FONT CLASS="param_name">subtitle</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_search_keyword_footer"/>
-<FONT CLASS="param_name">footer</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_search_keyword_embed"/>
-<FONT CLASS="param_name">embed</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_search_keyword_nonavbar"/>
-<FONT CLASS="param_name">nonavbar</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_search_keyword_file_hash"/>
-<FONT CLASS="param_name">file_hash</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_search_keyword_user"/>
-<FONT CLASS="param_name">user</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_search_keyword_root"/>
-<FONT CLASS="param_name">root</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_search_keyword_warnings"/>
-<FONT CLASS="param_name">warnings</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, optional</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a named variable to return the
-          number of warnings
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_write_etc"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_write_etc
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc_write_etc, <A HREF=#_idldoc_write_etc_param_etc_files>etc_files</A>, <A HREF=#_idldoc_write_etc_keyword_title>title</A>=<EM>title</EM>, <A HREF=#_idldoc_write_etc_keyword_subtitle>subtitle</A>=<EM>subtitle</EM>, <A HREF=#_idldoc_write_etc_keyword_footer>footer</A>=<EM>footer</EM>, <A HREF=#_idldoc_write_etc_keyword_embed>embed</A>=<EM>embed</EM>, <A HREF=#_idldoc_write_etc_keyword_nonavbar>nonavbar</A>=<EM>nonavbar</EM>, <A HREF=#_idldoc_write_etc_keyword_user>user</A>=<EM>user</EM>, [<A HREF=#_idldoc_write_etc_keyword_warnings>warnings</A>=<EM>variable</EM>]</P></TD></TR></TABLE>
-<P>
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_etc_param_etc_files"/>
-<FONT CLASS="param_name">etc_files</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-</TABLE>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_etc_keyword_title"/>
-<FONT CLASS="param_name">title</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_etc_keyword_subtitle"/>
-<FONT CLASS="param_name">subtitle</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_etc_keyword_footer"/>
-<FONT CLASS="param_name">footer</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_etc_keyword_embed"/>
-<FONT CLASS="param_name">embed</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_etc_keyword_nonavbar"/>
-<FONT CLASS="param_name">nonavbar</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_etc_keyword_user"/>
-<FONT CLASS="param_name">user</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_etc_keyword_warnings"/>
-<FONT CLASS="param_name">warnings</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, optional</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a named variable to return the
-          number of warnings
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_write_dir_overview"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_write_dir_overview
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc_write_dir_overview, <A HREF=#_idldoc_write_dir_overview_param_pro_dir>pro_dir</A>, <A HREF=#_idldoc_write_dir_overview_param_pro_files>pro_files</A>, <A HREF=#_idldoc_write_dir_overview_keyword_title>title</A>=<EM>title</EM>, <A HREF=#_idldoc_write_dir_overview_keyword_subtitle>subtitle</A>=<EM>subtitle</EM>, <A HREF=#_idldoc_write_dir_overview_keyword_footer>footer</A>=<EM>footer</EM>, <A HREF=#_idldoc_write_dir_overview_keyword_embed>embed</A>=<EM>embed</EM>, <A HREF=#_idldoc_write_dir_overview_keyword_nonavbar>nonavbar</A>=<EM>nonavbar</EM>, <A HREF=#_idldoc_write_dir_overview_keyword_file_hash>file_hash</A>=<EM>file_hash</EM>, <A HREF=#_idldoc_write_dir_overview_keyword_user>user</A>=<EM>user</EM>, [<A HREF=#_idldoc_write_dir_overview_keyword_warnings>warnings</A>=<EM>variable</EM>]</P></TD></TR></TABLE>
-<P>
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_dir_overview_param_pro_dir"/>
-<FONT CLASS="param_name">pro_dir</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_dir_overview_param_pro_files"/>
-<FONT CLASS="param_name">pro_files</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-</TABLE>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_dir_overview_keyword_title"/>
-<FONT CLASS="param_name">title</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_dir_overview_keyword_subtitle"/>
-<FONT CLASS="param_name">subtitle</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_dir_overview_keyword_footer"/>
-<FONT CLASS="param_name">footer</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_dir_overview_keyword_embed"/>
-<FONT CLASS="param_name">embed</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_dir_overview_keyword_nonavbar"/>
-<FONT CLASS="param_name">nonavbar</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_dir_overview_keyword_file_hash"/>
-<FONT CLASS="param_name">file_hash</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_dir_overview_keyword_user"/>
-<FONT CLASS="param_name">user</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_dir_overview_keyword_warnings"/>
-<FONT CLASS="param_name">warnings</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, optional</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a named variable to return the
-          number of warnings
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_write_directory_overviews"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_write_directory_overviews
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc_write_directory_overviews, <A HREF=#_idldoc_write_directory_overviews_param_pro_dirs>pro_dirs</A>, <A HREF=#_idldoc_write_directory_overviews_param_pro_files>pro_files</A>, <A HREF=#_idldoc_write_directory_overviews_keyword_title>title</A>=<EM>title</EM>, <A HREF=#_idldoc_write_directory_overviews_keyword_subtitle>subtitle</A>=<EM>subtitle</EM>, <A HREF=#_idldoc_write_directory_overviews_keyword_footer>footer</A>=<EM>footer</EM>, <A HREF=#_idldoc_write_directory_overviews_keyword_embed>embed</A>=<EM>embed</EM>, <A HREF=#_idldoc_write_directory_overviews_keyword_nonavbar>nonavbar</A>=<EM>nonavbar</EM>, <A HREF=#_idldoc_write_directory_overviews_keyword_file_hash>file_hash</A>=<EM>file_hash</EM>, <A HREF=#_idldoc_write_directory_overviews_keyword_user>user</A>=<EM>user</EM>, [<A HREF=#_idldoc_write_directory_overviews_keyword_warnings>warnings</A>=<EM>variable</EM>]</P></TD></TR></TABLE>
-<P>
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_directory_overviews_param_pro_dirs"/>
-<FONT CLASS="param_name">pro_dirs</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_directory_overviews_param_pro_files"/>
-<FONT CLASS="param_name">pro_files</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-</TABLE>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_directory_overviews_keyword_title"/>
-<FONT CLASS="param_name">title</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_directory_overviews_keyword_subtitle"/>
-<FONT CLASS="param_name">subtitle</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_directory_overviews_keyword_footer"/>
-<FONT CLASS="param_name">footer</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_directory_overviews_keyword_embed"/>
-<FONT CLASS="param_name">embed</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_directory_overviews_keyword_nonavbar"/>
-<FONT CLASS="param_name">nonavbar</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_directory_overviews_keyword_file_hash"/>
-<FONT CLASS="param_name">file_hash</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_directory_overviews_keyword_user"/>
-<FONT CLASS="param_name">user</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_directory_overviews_keyword_warnings"/>
-<FONT CLASS="param_name">warnings</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, optional</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a named variable to return the
-          number of warnings
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_write_full_index"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_write_full_index
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc_write_full_index, <A HREF=#_idldoc_write_full_index_param_index_hash>index_hash</A>, <A HREF=#_idldoc_write_full_index_keyword_title>title</A>=<EM>title</EM>, <A HREF=#_idldoc_write_full_index_keyword_subtitle>subtitle</A>=<EM>subtitle</EM>, <A HREF=#_idldoc_write_full_index_keyword_footer>footer</A>=<EM>footer</EM>, <A HREF=#_idldoc_write_full_index_keyword_embed>embed</A>=<EM>embed</EM>, <A HREF=#_idldoc_write_full_index_keyword_user>user</A>=<EM>user</EM>, [<A HREF=#_idldoc_write_full_index_keyword_warnings>warnings</A>=<EM>variable</EM>]</P></TD></TR></TABLE>
-<P>
-
- Create the index for the library.
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_full_index_param_index_hash"/>
-<FONT CLASS="param_name">index_hash</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in</NOBR><BR>
-<NOBR>obj ref</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- hash table of index references
-</TD>
-</TR>
-</TABLE>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_full_index_keyword_title"/>
-<FONT CLASS="param_name">title</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_full_index_keyword_subtitle"/>
-<FONT CLASS="param_name">subtitle</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_full_index_keyword_footer"/>
-<FONT CLASS="param_name">footer</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_full_index_keyword_embed"/>
-<FONT CLASS="param_name">embed</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_full_index_keyword_user"/>
-<FONT CLASS="param_name">user</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_full_index_keyword_warnings"/>
-<FONT CLASS="param_name">warnings</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, optional</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a named variable to return the
-          number of warnings
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_write_overview"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_write_overview
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc_write_overview, <A HREF=#_idldoc_write_overview_param_overview>overview</A>, <A HREF=#_idldoc_write_overview_param_pro_dirs>pro_dirs</A>, [<A HREF=#_idldoc_write_overview_keyword_warnings>warnings</A>=<EM>variable</EM>], [/<A HREF=#_idldoc_write_overview_keyword_user>user</A>], [/<A HREF=#_idldoc_write_overview_keyword_embed>embed</A>], [/<A HREF=#_idldoc_write_overview_keyword_nonavbar>nonavbar</A>], <A HREF=#_idldoc_write_overview_keyword_title>title</A>=<EM>title</EM>, <A HREF=#_idldoc_write_overview_keyword_subtitle>subtitle</A>=<EM>subtitle</EM>, <A HREF=#_idldoc_write_overview_keyword_footer>footer</A>=<EM>footer</EM></P></TD></TR></TABLE>
-<P>
-
- Processes the file specified by the OVERVIEW keyword to IDLdoc (if present)
- and creates the 'overview&#046;html' file that shows in the main browser
- frame when loading the 'index&#046;html' file. Always shows at least all
- subdirectories with IDL .pro files in them.
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_overview_param_overview"/>
-<FONT CLASS="param_name">overview</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in</NOBR><BR>
-<NOBR>string</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- filename of the content to be placed in
-        the overview.html file
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_overview_param_pro_dirs"/>
-<FONT CLASS="param_name">pro_dirs</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in</NOBR><BR>
-<NOBR>string array</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a list of the directories containing
-        .pro code below the root directory
-</TD>
-</TR>
-</TABLE>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_overview_keyword_warnings"/>
-<FONT CLASS="param_name">warnings</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, optional</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a named variable to return the
-          number of warnings
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_overview_keyword_user"/>
-<FONT CLASS="param_name">user</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- set to give user documentation;
-          otherwise developer documentation is produced
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_overview_keyword_embed"/>
-<FONT CLASS="param_name">embed</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- if set, embeds style sheet in
-          each HTML document
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_overview_keyword_nonavbar"/>
-<FONT CLASS="param_name">nonavbar</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean (def. false)</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- set to exclude
-          navbar on overview page
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_overview_keyword_title"/>
-<FONT CLASS="param_name">title</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_overview_keyword_subtitle"/>
-<FONT CLASS="param_name">subtitle</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_overview_keyword_footer"/>
-<FONT CLASS="param_name">footer</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_write_blank"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_write_blank
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc_write_blank, [<A HREF=#_idldoc_write_blank_keyword_warnings>warnings</A>=<EM>variable</EM>], <A HREF=#_idldoc_write_blank_keyword_embed>embed</A>=<EM>embed</EM></P></TD></TR></TABLE>
-<P>
-
- Create a blank file for the initial routines frame.
-
-<P>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_blank_keyword_warnings"/>
-<FONT CLASS="param_name">warnings</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, optional</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a named variable to return the
-          number of warnings
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_blank_keyword_embed"/>
-<FONT CLASS="param_name">embed</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_write_help"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_write_help
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc_write_help, [<A HREF=#_idldoc_write_help_keyword_warnings>warnings</A>=<EM>variable</EM>], [/<A HREF=#_idldoc_write_help_keyword_user>user</A>], [/<A HREF=#_idldoc_write_help_keyword_embed>embed</A>], [/<A HREF=#_idldoc_write_help_keyword_nonavbar>nonavbar</A>], <A HREF=#_idldoc_write_help_keyword_title>title</A>=<EM>title</EM>, <A HREF=#_idldoc_write_help_keyword_subtitle>subtitle</A>=<EM>subtitle</EM></P></TD></TR></TABLE>
-<P>
-
- Create help&#046;html in the root directory.  Assumes the current working
- directory is the root directory.
-
-<P>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_help_keyword_warnings"/>
-<FONT CLASS="param_name">warnings</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, optional</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a named variable to return the
-          number of warnings
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_help_keyword_user"/>
-<FONT CLASS="param_name">user</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- set to give user documentation;
-          otherwise developer documentation is produced
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_help_keyword_embed"/>
-<FONT CLASS="param_name">embed</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- if set, embeds style sheet in
-          each HTML document
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_help_keyword_nonavbar"/>
-<FONT CLASS="param_name">nonavbar</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean (def. false)</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- set to exclude
-          navbar on help page
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_help_keyword_title"/>
-<FONT CLASS="param_name">title</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_help_keyword_subtitle"/>
-<FONT CLASS="param_name">subtitle</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_write_index"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_write_index
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc_write_index, <A HREF=#_idldoc_write_index_param_pro_dirs>pro_dirs</A>, <A HREF=#_idldoc_write_index_keyword_title>title</A>=<EM>title</EM>, [<A HREF=#_idldoc_write_index_keyword_warnings>warnings</A>=<EM>variable</EM>], <A HREF=#_idldoc_write_index_keyword_browse_routines>browse_routines</A>=<EM>browse_routines</EM></P></TD></TR></TABLE>
-<P>
-
- Create index&#046;html in the root directory.  Assumes the current working
- directory is the root directory.
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_index_param_pro_dirs"/>
-<FONT CLASS="param_name">pro_dirs</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, required</NOBR><BR>
-<NOBR>strarr</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- directories with .PRO code in them
-</TD>
-</TR>
-</TABLE>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_index_keyword_title"/>
-<FONT CLASS="param_name">title</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_index_keyword_warnings"/>
-<FONT CLASS="param_name">warnings</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, optional</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a named variable to return the
-          number of warnings
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_index_keyword_browse_routines"/>
-<FONT CLASS="param_name">browse_routines</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_write_dir_files"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_write_dir_files
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc_write_dir_files, <A HREF=#_idldoc_write_dir_files_param_pro_files>pro_files</A>, <A HREF=#_idldoc_write_dir_files_param_pro_dir>pro_dir</A>, [/<A HREF=#_idldoc_write_dir_files_keyword_embed>embed</A>], <A HREF=#_idldoc_write_dir_files_keyword_user>user</A>=<EM>user</EM>, <A HREF=#_idldoc_write_dir_files_keyword_file_hash>file_hash</A>=<EM>file_hash</EM>, [<A HREF=#_idldoc_write_dir_files_keyword_warnings>warnings</A>=<EM>variable</EM>]</P></TD></TR></TABLE>
-<P>
-
- Writes the 'dir-files&#046;html' file in each directory that contains the
- links to each of the .pro files in that directory.
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_dir_files_param_pro_files"/>
-<FONT CLASS="param_name">pro_files</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in</NOBR><BR>
-<NOBR>string array</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a string array of all the pro
-        files under the 'root' directory
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_dir_files_param_pro_dir"/>
-<FONT CLASS="param_name">pro_dir</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in</NOBR><BR>
-<NOBR>string</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- string representing the current directory
-</TD>
-</TR>
-</TABLE>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_dir_files_keyword_embed"/>
-<FONT CLASS="param_name">embed</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- if set, embeds style sheet in
-          each HTML document
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_dir_files_keyword_user"/>
-<FONT CLASS="param_name">user</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_dir_files_keyword_file_hash"/>
-<FONT CLASS="param_name">file_hash</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_dir_files_keyword_warnings"/>
-<FONT CLASS="param_name">warnings</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, optional</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a named variable to return the
-          number of warnings
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_write_all_files"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_write_all_files
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc_write_all_files, <A HREF=#_idldoc_write_all_files_param_pro_files>pro_files</A>, [/<A HREF=#_idldoc_write_all_files_keyword_embed>embed</A>], <A HREF=#_idldoc_write_all_files_keyword_file_hash>file_hash</A>=<EM>file_hash</EM>, <A HREF=#_idldoc_write_all_files_keyword_user>user</A>=<EM>user</EM>, [<A HREF=#_idldoc_write_all_files_keyword_warnings>warnings</A>=<EM>variable</EM>]</P></TD></TR></TABLE>
-<P>
-
- Writes the all-files&#046;html file in the root directory.
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_all_files_param_pro_files"/>
-<FONT CLASS="param_name">pro_files</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in</NOBR><BR>
-<NOBR>string array</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a string array of all the pro
-        files under the 'root' directory
-</TD>
-</TR>
-</TABLE>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_all_files_keyword_embed"/>
-<FONT CLASS="param_name">embed</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- if set, embeds style sheet in
-          each HTML document
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_all_files_keyword_file_hash"/>
-<FONT CLASS="param_name">file_hash</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_all_files_keyword_user"/>
-<FONT CLASS="param_name">user</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_all_files_keyword_warnings"/>
-<FONT CLASS="param_name">warnings</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, optional</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a named variable to return the
-          number of warnings
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_write_all_dirs"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_write_all_dirs
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc_write_all_dirs, <A HREF=#_idldoc_write_all_dirs_param_pro_dirs>pro_dirs</A>, <A HREF=#_idldoc_write_all_dirs_param_count>count</A>, [/<A HREF=#_idldoc_write_all_dirs_keyword_embed>embed</A>], [<A HREF=#_idldoc_write_all_dirs_keyword_warnings>warnings</A>=<EM>variable</EM>]</P></TD></TR></TABLE>
-<P>
-
- Writes the all-dirs&#046;html file in the root directory.
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_all_dirs_param_pro_dirs"/>
-<FONT CLASS="param_name">pro_dirs</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in</NOBR><BR>
-<NOBR>string array</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a string array of all the
-        directories under the 'root' directory that contain .pro files;
-        may not be valid, must check count gt 0 first
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_all_dirs_param_count"/>
-<FONT CLASS="param_name">count</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in</NOBR><BR>
-<NOBR>int</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- the number of directories in pro_dirs
-</TD>
-</TR>
-</TABLE>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_all_dirs_keyword_embed"/>
-<FONT CLASS="param_name">embed</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- if set, embeds style sheet in
-          each HTML document
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_write_all_dirs_keyword_warnings"/>
-<FONT CLASS="param_name">warnings</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, optional</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a named variable to return the
-          number of warnings
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_idldoc_find_dirs"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc_find_dirs
-</SPAN>
-</TD><TD ALIGN="right">
- <FONT CLASS="param_attrib">private </FONT>
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">function idldoc_find_dirs(<A HREF=#_idldoc_find_dirs_param_pro_files>pro_files</A>, <A HREF=#_idldoc_find_dirs_param_ndirs>ndirs</A>)</P></TD></TR></TABLE>
-<P>
-
- Find the directories with &#046;pro files in them.
-
-<P>
-<DL>
-<DT CLASS="attribute">Returns
-<DD CLASS="attribute_item">
- string array of the directories with .pro files in them, or -1 if
-          there are none
-</DD></DT>
-</DL>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_find_dirs_param_pro_files"/>
-<FONT CLASS="param_name">pro_files</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in</NOBR><BR>
-<NOBR>string array</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- a string array of all the pro
-        files under the 'root' directory
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_find_dirs_param_ndirs"/>
-<FONT CLASS="param_name">ndirs</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- the number of directories under the root
-        directory that contain .pro files
-</TD>
-</TR>
-</TABLE>
-<P>
-<P>
-<A NAME="_idldoc"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-idldoc
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure idldoc, <A HREF=#_idldoc_keyword_root>root</A>=<EM>string</EM>, [<A HREF=#_idldoc_keyword_footer>footer</A>=<EM>string</EM>], [<A HREF=#_idldoc_keyword_output>output</A>=<EM>string</EM>], [<A HREF=#_idldoc_keyword_overview>overview</A>=<EM>string</EM>], [/<A HREF=#_idldoc_keyword_user>user</A>], [/<A HREF=#_idldoc_keyword_quiet>quiet</A>], [/<A HREF=#_idldoc_keyword_silent>silent</A>], [/<A HREF=#_idldoc_keyword_embed>embed</A>], [/<A HREF=#_idldoc_keyword_nonavbar>nonavbar</A>], [<A HREF=#_idldoc_keyword_title>title</A>=<EM>string</EM>], [<A HREF=#_idldoc_keyword_subtitle>subtitle</A>=<EM>string</EM>], [<A HREF=#_idldoc_keyword_n_warnings>n_warnings</A>=<EM>variable</EM>], [/<A HREF=#_idldoc_keyword_browse_routines>browse_routines</A>], <A HREF=#_idldoc_keyword_preformat>preformat</A>=<EM>preformat</EM></P></TD></TR></TABLE>
-<P>
-
- Calling routine for IDLdoc.
-
-<P>
-<DL>
-<DT CLASS="attribute">Examples
-<DD CLASS="attribute_item">
- To run IDLdoc, try:
-      <center><code>idldoc, root='C:\mycode'</code></center>
-    where C:\mycode is the root of a directory tree containing IDL
-    .pro files.
-
-</DD></DT>
-<DT CLASS="attribute">Requires
-<DD CLASS="attribute_item">
- IDL 6.0
-</DD></DT>
-<DT CLASS="attribute">Author
-<DD CLASS="attribute_item">
- Michael D. Galloy
-</DD></DT>
-<DT CLASS="attribute">Copyright
-<DD CLASS="attribute_item">
- RSI, 2002
-</DD></DT>
-</DL>
-<P>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_keyword_root"/>
-<FONT CLASS="param_name">root</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, required</NOBR><BR>
-<NOBR>string</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- root directory for IDLdoc's
-          recursive search for .pro files.  IDLdoc will find any
-          files with the '.pro' suffix and include them in its file
-          listings.  Only directories with '.pro' files in them are
-          included in the directory listings.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_keyword_footer"/>
-<FONT CLASS="param_name">footer</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>string</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- filename for a footer
-          to be placed at the bottom of files; this file can contain any valid
-          HTML
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_keyword_output"/>
-<FONT CLASS="param_name">output</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>string (def. same as root)</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
-
-          directory in which to create the HTML output and possible
-          subdirectories
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_keyword_overview"/>
-<FONT CLASS="param_name">overview</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>string</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- filepath to a file containing
-          the summary of the package information about each directory in the
-          package.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_keyword_user"/>
-<FONT CLASS="param_name">user</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- set to create a
-          listing appropriate for <em>users</em> of the given
-          library hierarchy; the default is to create documentation
-          suited to developers.  If set private routines are not
-          shown in the documentation.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_keyword_quiet"/>
-<FONT CLASS="param_name">quiet</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- if set, print only
-          warnings
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_keyword_silent"/>
-<FONT CLASS="param_name">silent</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- if set, print no
-          messages
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_keyword_embed"/>
-<FONT CLASS="param_name">embed</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- if set, embeds style
-          sheet in each HTML document; if this is not set, each HTML
-          file will be looking for the cascading style sheet idldoc.css
-          in the directory specified for the ROOT keyword
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_keyword_nonavbar"/>
-<FONT CLASS="param_name">nonavbar</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- set to exclude the
-          navigation bar at the top of each page
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_keyword_title"/>
-<FONT CLASS="param_name">title</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>string (def. Research Systems)</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- title to
-          place in the upper right of all generated pages
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_keyword_subtitle"/>
-<FONT CLASS="param_name">subtitle</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>string (def. IDL version)</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- subtitle to
-          place in the upper right of all generated pages
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_keyword_n_warnings"/>
-<FONT CLASS="param_name">n_warnings</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>out, optional</NOBR><BR>
-<NOBR>variable</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- set to a named variable to
-          contain the total number of warnings issued during the run
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_keyword_browse_routines"/>
-<FONT CLASS="param_name">browse_routines</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- set to include a frame
-          to browse through the routines of the current file
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_idldoc_keyword_preformat"/>
-<FONT CLASS="param_name">preformat</FONT><BR>
-<FONT CLASS="param_attrib">
-</FONT>
-</TD>
-<TD VALIGN="top">
-.
-</TD>
-</TR>
-</TABLE>
-<P>
-<HR CLASS="divider">
-<CENTER>
-<FONT STYLE="font-family: Arial; font-size: 8pt">
-Personal IDL library of Michael Galloy, Professional Services Engineer - Trainer/Consultant, 
-<A HREF="http://www.rsinc.com">Research Systems</A> <BR>
-For more information about these routines contact <A HREF="mailto:mgalloy@rsinc.com">Michael Galloy</A> <BR>
-Feel free to <A HREF="mailto:mgalloy@rsinc.com">submit a bug or feature request</A> for any of these routines <BR> 
-</FONT>
-</CENTER>
-<HR CLASS="divider">
-<FONT CLASS="tagline">Produced by IDLdoc 1.6 on Wed Feb 09 12:40:19 2005</FONT>
-</BODY></HTML>
Index: trunk/Documentation/idldoc/idldoc_files.html
===================================================================
--- trunk/Documentation/idldoc/idldoc_files.html	(revision 68)
+++ 	(revision )
@@ -1,536 +1,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
-<!-- Generated by IDLdoc on Wed Feb 09 12:40:46 2005 -->
-<HEAD>
-<TITLE>IDLdoc file</TITLE>
-<STYLE><!--
-a:link { color: #660000 }
-a:active { color: #660000 }
-a:visited {color: #660000 }
-
-/* Default font for body text */
-BODY {
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: Arial;
-    BACKGROUND-COLOR: #FFFFF9
-}
-
-/* Default font for text in tables */
-TD {
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: Arial
-}
-
-/* Format for body of all files */
-BODY.standard {
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: Arial;
-    BACKGROUND-COLOR: #FFFFF9
-}
-
-TABLE.parameters {
-    BORDER-TOP: 1px solid #FFFFCC;
-    BORDER-BOTTOM: 1px solid #88AA66;
-    BORDER-LEFT: 1px solid #FFFFCC;
-    BORDER-RIGHT: 1px solid #88AA66;
-    WIDTH: 95%;
-    MARGIN-LEFT: 5%
-}
-
-TR.parameters {
-    BORDER-RIGHT-WIDTH: 0px;
-    BORDER-TOP-WIDTH: 1px;
-    BORDER-LEFT-WIDTH: 0px;
-    WIDTH: 100%;
-    BORDER-BOTTOM-WIDTH: 1px;
-    BORDER-STYLE: solid
-}
-
-TD.index_selection_header {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 14pt;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-TABLE.minor_listing {
-    BORDER-TOP: 1px solid #EEEEFF;
-    BORDER-BOTTOM: 1px solid #6666AA;
-    BORDER-LEFT: 1px solid #EEEEFF;
-    BORDER-RIGHT: 1px solid #6666AA;
-    WIDTH: 100%
-}
-
-TABLE.listing {
-    BORDER-TOP: 1px solid #BBBBFF;
-    BORDER-BOTTOM: 1px solid #6666AA;
-    BORDER-LEFT: 1px solid #BBBBFF;
-    BORDER-RIGHT: 1px solid #6666AA;
-    WIDTH: 100%
-}
-
-TABLE.routine_listing {
-    BACKGROUND: #FFFFAA;
-    BORDER-TOP: 1px solid #FFEEAA;
-    BORDER-BOTTOM: 1px solid #AAAA66;
-    BORDER-LEFT: 1px solid #FFEEAA;
-    BORDER-RIGHT: 1px solid #AAAA66;
-    WIDTH: 100%
-}
-
-TD.title {
-    FONT-SIZE: 14pt;
-    BACKGROUND: #ccccff;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-TR.small_title {
-    FONT-WEIGHT: bold;
-    BACKGROUND: #eeeeff;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* #F0FFBA */
-TR.parameter_title {
-    FONT-WEIGHT: bold;
-    FONT-FAMILY: Helvetica, sans-serif;
-    BACKGROUND: #F0FFE0
-}
-
-/***** Navbar stuff *****/
-
-TD.navbar_unselected A:hover {
-    BACKGROUND: #AAAAFF;
-    BORDER-TOP: 3px solid #AAAAFF;
-    BORDER-BOTTOM: 3px solid #AAAAFF
-}
-
-/* Formatting for the row with the labels */
-TR.navbar {
-    FONT-WEIGHT: bold;
-    BACKGROUND: #ddddff;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for the table cell that is currently selected */
-TD.navbar_selected {
-    BORDER-TOP: 3px solid #0000AA;
-    BORDER-BOTTOM: 3px solid #DDDDFF
-}
-
-TD.navbar_unselected {
-    BORDER-TOP: 3px solid #DDDDFF;
-    BORDER-BOTTOM: 3px solid #DDDDFF
-}
-
-/* Formatting for the text that allows cycling through files and finding details vs. summary */
-TD.navbar_small {
-    FONT-WEIGHT: lighter;
-    FONT-SIZE: 8pt;
-    TEXT-TRANSFORM: lowercase;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for Research System's logo */
-FONT.logo {
-    FONT-SIZE: 16pt;
-    TEXT-TRANSFORM: uppercase;
-    FONT-FAMILY: 'Times New Roman', serif
-}
-
-/* Formatting for IDL version and User/Developer Documentation tag */
-FONT.version {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for directory name on a file page */
-FONT.directory {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    COLOR: darkolivegreen
-}
-
-/* Formatting for a file name on a file page */
-FONT.file {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 16pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for line at bottom of page indicating version of IDLdoc */
-FONT.tagline {
-    FONT-SIZE: 8pt;
-    FONT-STYLE: italic;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-FONT.code {
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: 'Courier New', monospace
-}
-
-/* Format for the attributes to a parameter or keyword in the table of parameters and keywords in the routine details */
-.param_attrib {
-    FONT-WEIGHT: 200;
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    COLOR: darkolivegreen
-}
-
-/* Format for a parameter or keyword name in the table of parameters and keywords in the routine details */
-FONT.param_name {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-TD.listing {
-    BORDER-RIGHT: 0px solid;
-    BORDER-TOP: 0px solid;
-    BORDER-LEFT: 0px solid;
-    BORDER-BOTTOM: 1px solid
-}
-
-.list {
-    FONT-SIZE: 9pt;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-.list_title {
-    FONT-SIZE: 9pt;
-    FONT-WEIGHT: bold;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-/* Font for the number of files or directories in the side frames */
-.list_tagline {
-    FONT-WEIGHT: lighter;
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    COLOR: darkolivegreen
-}
-
-.list_tagline_caution {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-.list_tagline_error {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    COLOR: #FF1111
-}
-
-P.code_header {
-    FONT-SIZE: 10pt;
-    MARGIN-TOP: 0pt;
-    MARGIN-BOTTOM: 0pt;
-    MARGIN-LEFT: 30pt;
-    TEXT-INDENT: -30pt;
-    FONT-FAMILY: 'Courier New', monospace
-}
-
-P.first_line {
-    MARGIN-TOP: 3pt;
-    MARGIN-BOTTOM: 0pt;
-    MARGIN-LEFT: 15pt;
-    FONT-WEIGHT: lighter;
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-}
-
-.routine {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 12pt;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-/* Formatting for the attributes of a routine */
-DT.attribute {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 9pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for the attributes of a routine */
-.attribute_item {
-    FONT-SIZE: 9pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    MARGIN-BOTTOM: 4px;
-    FONT-WEIGHT: lighter;
-    COLOR: darkolivegreen
-}
-
-/* Formatting for the attributes of a routine */
-DT.index_item {
-    FONT-SIZE: 9pt;
-    FONT-WEIGHT: lighter;
-    FONT-FAMILY: Helvetica, sans-serif
-
-}
-
-/* Formatting for the attributes of a routine */
-DD.index_description {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    FONT-WEIGHT: lighter;
-    COLOR: darkolivegreen
-}
-
-HR.divider {
-    COLOR: lightslateblue;
-    BORDER-TOP-WIDTH: 1px;
-    BORDER-BOTTOM-WIDTH: 0px;
-    BORDER-LEFT-WIDTH: 0px;
-    BORDER-RIGHT-WIDTH: 0px;
-    HEIGHT: 1px
-}
-
-HR.table_divider {
-    COLOR: rgb(200, 200, 255);
-    BORDER-TOP-WIDTH: 1px;
-    BORDER-BOTTOM-WIDTH: 0px;
-    BORDER-LEFT-WIDTH: 0px;
-    BORDER-RIGHT-WIDTH: 0px;
-    BORDER-STYLE: dotted;
-    HEIGHT: 1px
-}
-
-TR.table_divider {
-    HEIGHT: 1px;
-    MARGIN: 0px;
-    PADDING: 0px
-}
-
-SPAN.index_selection {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 12pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
---></STYLE>
-
-<SCRIPT>
-function setTitle()
-{
-parent.document.title="Etc (IDL Library)";
-}
-</SCRIPT>
-</HEAD>
-<BODY CLASS="standard" onload="setTitle();">
-
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="100%">
-<TR><TD VALIGN="TOP" BGCOLOR="#DDDDFF" style="BORDER-TOP: 1px solid #BBBBFF; BORDER-BOTTOM: 1px solid #6666AA; BORDER-LEFT: 1px solid #BBBBFF; BORDER-RIGHT: 1px solid #6666AA;">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
-<TR CLASS="navbar">
-<TD class="navbar_unselected">&nbsp;<A HREF="../../overview.html">Overview</A>&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;Directory&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;<A HREF="../../full-index.html">Index</A>&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;<A HREF="../../search-page.html">Search</A>&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;File&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;Source&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;<A HREF="../../idldoc-help.html">Help</A>&nbsp;</TD>
-<TD class="navbar_selected">&nbsp;Etc&nbsp;</TD>
-</TR>
-</TABLE>
-</TD>
-<TD>&nbsp;&nbsp;&nbsp;</TD>
-<TD ROWSPAN="3" ALIGN="right"><FONT CLASS="logo"><NOBR>IDL Library</NOBR></FONT><BR><FONT CLASS="version"><NOBR>Michael Galloy, RSI</NOBR></FONT><BR><FONT CLASS="version" STYLE="font-weight: bold">Developer&nbsp;Documentation</FONT></TD>
-</TR>
-<TR><TD CLASS="navbar_small">&nbsp;prev&nbsp;file&nbsp;|&nbsp;next&nbsp;file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<NOBR><A HREF=".\tools\idldoc\idldoc_files.html" TARGET="_top">view single page</A>&nbsp;|&nbsp;<A HREF="../../index.html" TARGET="_top">view frames</A>&nbsp;|&nbsp;update routines</NOBR></TD></TR>
-<TR><TD CLASS="navbar_small">SUMMARY:&nbsp;fields&nbsp;|&nbsp;routine&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DETAILS:&nbsp;routine</TD></TR>
-<TR><TD></TD></TR>
-</TABLE>
-
-<HR CLASS="divider">
-
- <p> Only comments in between ;+ and ;- markers (as the first non-whitespace
- items on their lines) before a routine are parsed by IDLdoc.  Text (including
- HTML code) is simply copied verbatim to the IDLdoc HTML file until the first
- tag is encountered.
-
- <p> Tags are prefixed by an '@' sign which also serves as a delimiter
- between the content of the previous tag and its own content.  The parameters
- to the tags are whitespace delimited.  Often tags will have a parameter or
- two and then use the remainder of the tag content as a single parameter.
- Once an '@' sign appears in an IDLdoc comment, all remaining comment is
- interpreted as tags or contents of tags.
-
- <p> Also, certain tags accept further attributes.  Attributes are enclosed in
- curly braces {}.  For example, the param and keyword tags to comment
- positional parameters of a routine, accepts the attributes "in", "out",
- "type=", "optional", "required", and "default=".
-
- <p> The below tags are processed by IDLdoc in headings for routines.  Note to
- use an @ sign in a routine's comments, it must be escaped with a \ immediately
- before the @.
-
- <p>
-
- <table width="100%" border="1" cellspacing="0" cellpadding="3">
- <tr bgcolor="#DDDDDD"><td colspan="2"><b>Routine Tags</b></td></tr>
-
- <tr><td width="100" align="right" valign="top">abstract</td><td>Indicates
-     the method is abstract (ie. the routine is not implemented)</td></tr>
- <tr><td width="100" align="right" valign="top">author</td><td>Author of the
-     routine</td></tr>
- <tr><td width="100" align="right" valign="top">bugs</td><td>Comment to
-     describing the known bugs for the routine</td></tr>
- <tr><td width="100" align="right" valign="top">copyright</td><td>Copyright
-     information</td></tr>
- <tr><td width="100" align="right" valign="top">examples</td><td>Example
-     code</td></tr>
- <tr><td width="100" align="right" valign="top">field</td><td>Comments
-     for fields of a class defined in a file that ends in __DEFINE.PRO</td></tr>
- <tr><td width="100" align="right" valign="top">file_comments</td><td>Comments
-     for the entire file.</td></tr>
- <tr><td width="100" align="right" valign="top">hidden</td><td>Hides this
-     routine from IDLdoc</td></tr>
- <tr><td width="100" align="right" valign="top">hidden_file</td><td>Hides the
-     file this routine is part of from IDLdoc</td></tr>
- <tr><td width="100" align="right" valign="top">history</td><td>History of
-     modifcations of the routine</td></tr>
- <tr><td width="100" align="right" valign="top">inherits</td><td>parent class
-     of the class (if class definition)</td></tr>
- <tr><td width="100" align="right" valign="top">keyword</td><td>Keyword
-     parameter; attributes of this tag are {in}, {out}, {optional},
-     {type=name}, {default=value}, {private}, {required}</td></tr>
- <tr><td width="100" align="right" valign="top">obsolete</td><td>Indicates
-     the routines is obsolete</td></tr>
- <tr><td width="100" align="right" valign="top">param</td><td>Positional
-     parameter; attributes of this tag are {in}, {out}, {optional},
-     {type=name}, {default=value}, {private}, {required}</td></tr>
- <tr><td width="100" align="right" valign="top">pre</td><td>Indicates a
-     pre-condition (requirement) for the routine to run</td></tr>
- <tr><td width="100" align="right" valign="top">post</td><td>Indicates
-     a post-condition that should be true when the routine has finished
-     </td></tr>
- <tr><td width="100" align="right" valign="top">private</td><td>Indicates the
-     routine is not intended to be called by users. Routines with this tag set
-     will be hidden if the USER keyword to IDLdoc is set.</td></tr>
- <tr><td width="100" align="right" valign="top">private_file</td><td>Indicates the
-     file this routine is part of is not intended to be called by users of the file.
-     Routines with this tag set will be hidden if the USER keyword to IDLdoc is
-     set.</td></tr>
- <tr><td width="100" align="right" valign="top">returns</td><td>Return
-     information for a function</td></tr>
- <tr><td width="100" align="right" valign="top">requires</td><td>Version of
-     IDL required to run routine</td></tr>
- <tr><td width="100" align="right" valign="top">restrictions</td><td>
-     Restrictions on the use of the routine</td></tr>
- <tr><td width="100" align="right" valign="top">uses</td><td>Which non-RSI
-     IDL routines this routine needs</td></tr>
- <tr><td width="100" align="right" valign="top">version</td><td>Current version of the
-     routine</td></tr>
- </table>
-
-<p> Below is the comment header for the IDLdoc routine itself and appears
-immediately before the IDLdoc routine definition:
-
-<pre>
-;+
-; Calling routine for IDLdoc.
-;
-; @file_comments IDLdoc is a hypertext documentation system for IDL code.  It
-; is intended to show the API of a library of code in an easy to browse
-; manner.  It produces HTML pages -- one page per '.pro' file, as
-; well as directory listing, overview pages, and an index of files, routines,
-; keywords, and parameter names.
-;
-; &#139;p&#155; Unmarked code may be processed by IDLdoc to produce a browseable
-; listing of routines and their arguments.  But to obtain more useful
-; results, the source can be marked to produce formatted comments in
-; the output. Each routine has special tags to indicate particular
-; information for IDLdoc formatting use. HTML markup tags may be used
-; anywhere comments are expected.  See the
-; &#139;A HREF="idldoc_files.html"&#155;help&#139;/A&#155; for individual files for specifics about
-; the tags available.
-;
-; &#139;p&#155; For a more an example of code that has been documented using IDLdoc,
-; check IDLdoc's source for its comments and compare to its output.
-;
-; &#139;p&#155; Class listings and fields summary will be generated for files which
-; end with __DEFINE.PRO.  Use the "field" tag to make comments on each
-; field of the class/structure defined.
-;
-; &#139;p&#155; An overview file can be specified with the OVERVIEW keyword to IDLdoc.
-; This file is a plain text file with comments (which can contain HTML codes)
-; that will be displayed on a summary page.  The below tags are processed by
-; IDLdoc.
-;
-; &#139;p&#155;
-;
-; &#139;table width="100%" border="1" cellspacing="0" cellpadding="3"&#155;
-; &#139;tr bgcolor="#DDDDDD"&#155;&#139;td colspan="2"&#155;&#139;b&#155;Overview Tags&#139;/b&#155;&#139;/td&#155;&#139;/tr&#155;
-; &#139;tr&#155;&#139;td width="100" align="right" valign="top"&#155;dir&#139;/td&#155;
-; &#139;td&#155;Comment for a directory.  The first parameter to dir is the directory
-; name relative to the root dir.  The rest of the tag content is the comment.
-; &#139;/td&#155;&#139;/tr&#155;
-; &#139;/table&#155;
-;
-; &#139;p&#155; The style of the output of IDLdoc can be changed by editing the
-; cascading style sheet used: idldoc.css found in the same directory
-; as IDLdoc.
-;
-; &#139;p&#155; This help was produced by IDLdoc.
-;
-; @examples To run IDLdoc, try:
-;      &#139;center&#155;&#139;code&#155;idldoc, root='C:\\mycode'&#139;/code&#155;&#139;/center&#155;
-;    where C:\\mycode is the root of a directory tree containing IDL
-;    .pro files.
-;
-; @keyword root {in}{required}{type=string} root directory for IDLdoc's
-;          recursive search for .pro files.  IDLdoc will find any
-;          files with the '.pro' suffix and include them in its file
-;          listings.  Only directories with '.pro' files in them are
-;          included in the directory listings.
-; @keyword browse_routines {in}{optional}{type=boolean} set to include a frame
-;          to browse through the routines of the current file
-; @keyword nonavbar {in}{optional}{type=boolean} set to exclude the
-;          navigation bar at the top of each page
-; @keyword output {in}{optional}{type=string}{default=same as root}
-;          directory in which to create the HTML output and possible
-;          subdirectories
-; @keyword overview {in}{optional}{type=string} filepath to a file containing
-;          the summary of the package information about each directory in the
-;          package.
-; @keyword quiet {in}{optional}{type=boolean} if set, print only
-;          warnings
-; @keyword silent {in}{optional}{type=boolean} if set, print no
-;          messages
-; @keyword user {in}{optional}{type=boolean} set to create a
-;          listing appropriate for &#139;em&#155;users&#139;/em&#155; of the given
-;          library hierarchy; the default is to create documentation
-;          suited to developers.  If set private routines are not
-;          shown in the documentation.
-; @keyword embed {in}{optional}{type=boolean} if set, embeds style
-;          sheet in each HTML document; if this is not set, each HTML
-;          file will be looking for the cascading style sheet idldoc.css
-;          in the directory specified for the ROOT keyword
-; @keyword footer {in}{optional}{type=string} filename for a footer
-;          to be placed at the bottom of files; this file can contain any valid
-;          HTML
-; @keyword n_warnings {out}{optional}{type=integer} set to a named variable to
-;          contain the total number of warnings issued during the run
-; @keyword title {in}{optional}{type=string}{default=Research Systems} title to
-;          place in the upper right of all generated pages
-; @keyword statistics {in}{optional}{type=boolean} set to include statistics
-;          about each file
-; @keyword subtitle {in}{optional}{type=string}{default=IDL version} subtitle to
-;          place in the upper right of all generated pages
-; @requires IDL 6.0
-; @author Michael D. Galloy
-; @copyright RSI, 2002
-;-
-</pre>
-<P>
-<HR CLASS="divider">
-<CENTER>
-<FONT STYLE="font-family: Arial; font-size: 8pt">
-Personal IDL library of Michael Galloy, Professional Services Engineer - Trainer/Consultant, 
-<A HREF="http://www.rsinc.com">Research Systems</A> <BR>
-For more information about these routines contact <A HREF="mailto:mgalloy@rsinc.com">Michael Galloy</A> <BR>
-Feel free to <A HREF="mailto:mgalloy@rsinc.com">submit a bug or feature request</A> for any of these routines <BR> 
-</FONT>
-</CENTER>
-<HR CLASS="divider">
-<FONT CLASS="tagline">Produced by IDLdoc 1.6 on Wed Feb 09 12:40:46 2005</FONT><BR>
-</BODY></HTML>
Index: trunk/Documentation/idldoc/resource/listings.css
===================================================================
--- trunk/Documentation/idldoc/resource/listings.css	(revision 69)
+++ trunk/Documentation/idldoc/resource/listings.css	(revision 69)
@@ -0,0 +1,42 @@
+
+/* CSS for all files which appear in the "left frames" files. */
+
+a { text-decoration: none; }
+a:link, a:visited { color: #330000; }
+a:hover, a:focus { 
+  color: #993333; 
+  background: #FFFFCC; 
+  border-bottom: 1px dashed #303099; 
+}
+
+body {
+  margin: 0;
+  padding: 0;
+  font-size: 10pt;
+  background-color: #FFFFFF;
+  font-family: Arial, Helvetica, sans-serif;
+}
+
+#container {
+  margin: 0.5em;
+}
+
+ul {
+  list-style-type: none;
+  padding-left: 0;
+  margin: 0 0 0 0;
+  font-size: 90%;
+}
+
+h1 {
+  margin: 0 ;
+  padding: 0.5em 0 0.5em 0;
+  font-size: 90%;
+  font-weight: bold;
+}
+
+#tagline {
+  font-size: 75%;
+  font-weight: lighter;
+  color: #606060;
+}
Index: trunk/Documentation/idldoc/resource/main_files.css
===================================================================
--- trunk/Documentation/idldoc/resource/main_files.css	(revision 69)
+++ trunk/Documentation/idldoc/resource/main_files.css	(revision 69)
@@ -0,0 +1,580 @@
+
+/* CSS for all files which appear in the "main" viewing area: overview,
+   directory overviews, warnings, index, search, pro files, source
+   code, help, and etc files. */
+
+/* Link styles --------------------------------------------------------------- */
+
+a { text-decoration: none; }
+
+a:link, a:visited { 
+  color: #660000; 
+  border-bottom: 1px dotted #C0C0F0;   
+}
+
+a:hover, a:focus { 
+  color: #993333; 
+  background: #FFFFCC; 
+  border-bottom: 1px dotted #303099; 
+}
+
+
+/* Main styles --------------------------------------------------------------- */
+
+body {
+  margin: 0;
+  padding: 0;
+  font-size: 10pt;
+  font-family: Verdana, Helvetica, Arial, sans-serif;
+  background-color: #FFFFFF;
+}
+
+p {
+  margin-top: 0.5em;
+  margin-bottom: 0;
+}
+
+#container { margin: 1em; }
+
+code.section { white-space: pre; }
+
+pre.snippet {
+  margin-left: 5%;
+  background: #F0F0F0;
+  border: 1px dashed #999999;
+  width: 43em;
+  padding: 0.5em 0.5em 0.5em 0.5em;
+  white-space: pre;
+}
+
+/* Navbar styles ------------------------------------------------------------- */
+
+#navbar_title {
+  color: #000033;
+  background-color: #F0F0FF;
+  font-family: Arial, Helvetica, sans-serif;
+  padding: 20px 30px;
+  border-bottom: 1px solid #000033;
+}
+
+#navbar_title * {
+  margin: 0;
+  padding: 0;
+}
+
+#navbar_title h1 {
+  letter-spacing: 0.1em;
+  font-variant: small-caps;
+  font-size: 250%;
+  text-indent: -1em;
+  padding-left: 1em; 
+}
+
+#navbar_title h2 {
+  font-size: 110%;
+  font-weight: normal;
+  color: #333399;
+}
+
+#main_navbar table {
+  width: 100%;
+  border-bottom: 1px solid #666699;
+}
+
+#main_navbar td {
+  background: #CCCCFF;
+  font-size: 80%;
+  font-weight: bold;
+  font-family: Arial, Helvetica, sans-serif;
+  border-top: 3px solid #CCCCFF;
+  border-bottom: 3px solid #CCCCFF;
+  padding-left: 6px;
+  padding-right: 6px;
+  margin: 0;
+}
+
+#main_navbar td#selected {
+  background: #CCCCFF;
+  font-size: 80%;
+  font-weight: bold;
+  font-family: Arial, Helvetica, sans-serif;
+  border-top: 3px solid #333399;
+  border-bottom: 3px solid #CCCCFF;
+  padding-left: 6px;
+  padding-right: 6px;
+  margin: 0;
+}
+
+#main_navbar td#flexible {
+  width: 100%;
+  text-align: right;
+  padding-right: 1em;
+  background: #CCCCFF;
+  font-size: 70%;
+  font-weight: normal;
+  font-family: Arial, Helvetica, sans-serif;
+  text-transform: uppercase;
+  border-top: 3px solid #CCCCFF;
+  border-bottom: 3px solid #CCCCFF;
+}
+
+#main_navbar a:link, #main_navbar a:visited { color: #660000; border: 0; }
+
+#main_navbar a:hover, #main_navbar a:focus {
+  color: #FFFF66;
+  background: #CCCCFF;
+  border-bottom: 1px none #606099; 
+  border: 0;
+}
+
+#secondary_navbar {
+  font-size: 80%;
+  font-weight: normal;
+  font-family: Arial, Helvetica, sans-serif;
+  margin-top: 4px;
+  margin-left: 20px;
+  white-space: nowrap;
+}
+
+
+/* Tagline and footer styles ------------------------------------------------- */
+
+div#tagline {
+  margin-top: 6px;
+  border-top: 1px dotted lightsteelblue;
+  padding-top: 6px;
+  font-size: 66%;
+  font-style: italic;
+}
+
+div#footer {
+  margin-top: 6px;
+  border-top: 1px dotted lightsteelblue;
+  padding-top: 6px;
+  font-size: 66%;
+  font-style: italic;
+}
+
+/* Basic data presenation styles -------------------------------------------- */
+
+.index_letter { 
+  font-size: 300%;
+  font-weight: bold;
+  color: #000066; 
+  margin: 0.5em 0 0 -0.1em;
+}
+
+h1, h2, h3, h4 {
+  font-weight: normal;
+  color: #3333CC;
+}
+
+h1 {
+  padding-top: 0.75em;
+  font-size: 160%;
+}
+
+h2 {
+  padding-top: 1em;
+  font-size: 120%;
+  }
+
+h3 {
+  padding-top: 0.75em;
+  margin-bottom: 0.25em;
+  font-size: 100%;
+}
+
+h4 {
+  padding: 0;
+  margin: 0.5em 0 0 0;
+  font-size: 80%;
+}
+
+table.basic {
+  empty-cells: show;
+  margin: 1.5em 1em 0 1em;
+  border: 1px dotted #CFCFFF;
+  font-size: 80%;
+}
+
+table.basic th {
+  background-color: #F0F0FF;
+  font-weight: bold;
+  text-align: left;
+  padding: 4px 1em 4px 4px;
+  border-bottom: 1px dotted #666699;
+}
+
+table.basic td {
+  vertical-align: top;
+  padding: 4px 1em 4px 4px;
+}
+
+dd {
+  margin-bottom: 0.25em;
+  font-size: 80%;
+}
+
+
+/* Warnings styles ----------------------------------------------------------- */
+
+
+#todo dl, #bugs dl { 
+  margin: 0 0 0 1.5em;
+  font-size: 80%;
+}
+
+#todo dd, #bugs dd { 
+  margin-left: 3em; 
+  font-size: 100%;
+}
+
+#undoc table, #obsolete table, #statistics table {
+  width: 80%;
+  margin-left: 2em;
+}
+
+#undoc td, #obsolete td, #statistics td { 
+  padding: 0 0 0 0;
+  font-size: 80%;
+  white-space: nowrap;
+}
+
+#undoc td.docroutine, #obsolete td.obsroutine, #statistics td.statroutine { width: 50%; }
+
+#undoc td.docstat, #statistics td.stat { 
+  width: 50%;
+  text-align: right;
+}
+
+#undoc td.partialdoc, #statistics td.caution { color: #CC6600; }
+
+#undoc td.notdoc, #statistics td.warning { color: #993333; }
+
+/* File + routine styles ----------------------------------------------------- */
+
+h1.directory { 
+  padding: 1em 0 0 0;
+  margin: 0;
+  font-size: 66%;
+}
+
+h1.directory a { border-bottom: 0; }
+
+h2.pro_file { 
+  padding: 0;
+  margin: 0;
+  font-size: 140%;
+}
+
+div#file_attr {
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+div#file_attr dt {
+  font-size: 80%;
+  font-weight: bold;
+}
+
+div#file_attr dd {
+  font-size: 80%;
+}
+
+div#class_diagram { 
+  padding: 1em 0 1em 0; 
+  white-space: pre;
+  font-family: 'Courier New';
+}
+
+table#sav_attr { 
+  font-size: 90%; 
+  margin: 1em; 
+  padding: 1em 1em 1em 1em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+table#sav_attr th { text-align: left; }
+
+table#sav_attr td { vertical-align: top; padding-right: 2em; }
+
+table#sav_attr td.value { width: 20em; padding-right: 0em; font-style: italic; }
+
+p.sav_warning { margin-left: 4em; font-family: 80%; }
+
+table.variables { 
+  font-family: 'Courier New', monospace; 
+  font-size: 80%; 
+  text-indent: -2em; 
+  padding-left: 2em; 
+}
+
+table.variables td.image { width: 64px; }
+
+div#file_comments { 
+  margin: 2em;
+  font-size: 80%;
+}
+
+
+div.field_summary {
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #FFFFF0;
+  border: 1px dotted #C0C000;
+}
+
+div#routine_summary {  
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F0F0FF;
+  border: 1px dotted #9999FF;
+}
+
+div.field_summary h2, div#routine_summary h2 { 
+  padding: 0.5em 0 0 0;
+  margin: 0;
+}
+
+div.field_summary table, div.field_summary p { 
+  margin: 1em 1em;
+}
+
+div.field_summary td.name { 
+  vertical-align: top;
+  padding-bottom: 0.25em;
+  color: #3333CC;
+}
+
+div.field_summary span.field_type {  
+  font-weight: normal;
+  font-size: 80%;
+  color: black;
+}
+
+div.field_summary td.comments { 
+  vertical-align: top;
+  padding-left: 2em;
+  font-size: 80%;
+}
+
+p.commaList { 
+  margin: 1em 1em 1em 1em;
+}
+
+span.warning { 
+  color: #CC6633;
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+}
+
+span.categories { 
+  color: #006633;
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+}
+
+span.undoc { 
+  color: #FF6633;
+  font-weight: bold;
+  font-size: 80%;
+  text-transform: uppercase;
+}
+
+span.attr { 
+  color: #006633;
+  font-weight: bold;
+  font-size: 80%;
+  text-transform: uppercase;
+}
+
+span.value { 
+  color: #006633;
+  font-weight: normal;
+  text-transform: none;
+}
+
+a.top { 
+  font-weight: bold;
+  font-size: 66%;
+  text-transform: uppercase;
+  float: right;
+}
+
+span.result { 
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-style: italic;
+  font-size: 80%;
+}
+
+div#routine_summary p, div.routine_details p.header { 
+  padding-top: 0.5em;
+  margin-left: 1.5em;
+  text-indent: -1.5em;
+  font-family: 'Courier New', monospace;
+}
+
+div.routine_details {  
+  padding: 0.5em 1em 0.5em 1em;
+  margin: 1em;
+  border: 1px dotted #CCCCCC;
+}
+
+div.routine_details h2 {  
+  padding-top: 0;
+  margin-top: 0;
+}
+
+div.routine_details div.value { 
+  margin: 0 1em 0 1em;
+  font-size: 80%;
+}
+
+div.routine_details div.comments { 
+  font-size: 80%;
+  margin: 0.75em 1em 1em 1em;
+}
+
+div.routine_details div.preformat { 
+  white-space: pre;
+}
+
+table.statistics { 
+  font-size: 80%;
+  margin-left: 1em;
+}
+
+table.statistics td { 
+  padding: 0 2em 0 0;
+}
+
+/* Overview styles ----------------------------------------------------------- */
+
+div.overview { 
+  width: 100%;
+  margin-top: 1em;
+  clear: both;
+}
+
+div.overview table {
+  empty-cells: show;
+  font-size: 90%;
+  margin: 1em 1em 1em 1em;
+  padding: 1em 0.5em 1em 0.5em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+div.overview td {
+  padding: 3px 1em 3px 1em;
+}
+
+div.overview td.dir {
+  width: 1%;
+  vertical-align: top;
+  text-align: right;
+  padding-right: 1em;
+}
+
+
+/* Navigation list styles for tree structures -------------------------------- */
+
+#tree {
+  text-align: left;
+  font-size: 90%;
+  margin: 0.75em 0 0.75em 0;
+  padding: 0;
+}
+
+#tree ul {
+  text-align: left;
+  margin: 0;
+  padding: 0;
+}
+
+#tree li {
+  margin: 0 0 0 15px;
+  padding: 0;
+  list-style-type: none;
+}
+
+#tree .symbols {
+  float: left;
+  width: 12px;
+  height: 1em;
+  padding-left: 4px;
+  background-position: 0 100%;
+  background-repeat: no-repeat;
+}
+
+/* Search styles ------------------------------------------------------------- */
+
+input.writein { 
+  padding-left: 0.5em;
+  border: 1px solid #CCCCCC;
+  font-family: 'Courier New';
+  background: #FFFFF3;
+}
+
+#search form { 
+  margin-left: 2em;
+}
+
+#search table { 
+  margin: 1em 1em 0 2em;
+  padding: 1em 2em 1em 2em;
+  background: #F6F6F6;
+  border: 1px dotted #999999;
+}
+
+#search tr { 
+  text-align: center;
+}
+
+#search td { 
+  font-size: 80%; 
+  text-align: left;
+}
+
+#search td * { 
+  vertical-align: middle;
+}
+
+#search p { 
+  font-size: 66%;
+  margin: 0 3em 2em 3em;
+}
+
+/* Help styles --------------------------------------------------------------- */
+
+div.toc { 
+  padding: 0 1em 0 1em;
+  margin: 1em;
+  background: #F0F0FF;
+  border: 1px dotted #9999FF;  
+  width: 19em;
+}
+
+div.right { 
+  float: right;
+  width: 22em;
+}
+
+ol.toc { 
+  list-style-type: upper-roman;
+}
+
+ol.toc ol { 
+  padding-left: 3em;
+  margin-left: 0;
+  list-style-type: lower-alpha;
+}
+
+dl.variables dt { font-size: 80%; }
+dl.variables dd { margin-bottom: 0.5em; }
Index: trunk/Documentation/idldoc/resource/main_files_print.css
===================================================================
--- trunk/Documentation/idldoc/resource/main_files_print.css	(revision 69)
+++ trunk/Documentation/idldoc/resource/main_files_print.css	(revision 69)
@@ -0,0 +1,25 @@
+#navbar_title { 
+  background-color: #FFFFFF;  
+}
+
+#main_navbar td {
+  background: #FFFFFF;
+  border-top: 0.25em solid #FFFFFF;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#main_navbar td#selected {
+  background: #FFFFFF;
+  border-top: 0.25em solid #333399;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#main_navbar td#flexible {
+  background: #FFFFFF;
+  border-top: 0.25em solid #FFFFFF;
+  border-bottom: 0.25em solid #FFFFFF;
+}
+
+#secondary_navbar {
+  display: none;
+}
Index: trunk/Documentation/idldoc/resource/search.css
===================================================================
--- trunk/Documentation/idldoc/resource/search.css	(revision 69)
+++ trunk/Documentation/idldoc/resource/search.css	(revision 69)
@@ -0,0 +1,54 @@
+a { 
+  font-weight: bold; 
+  text-decoration: none; 
+}
+
+a:link, a:visited { color: #330000; }
+a:hover, a:focus { 
+  color: #993333; 
+  background: #FFFFCC; 
+  border-bottom: 1px dashed #303099; 
+}
+
+body { 
+  margin: 0;
+  padding: 0;
+  font-size: 10pt;
+  background-color: #FFFFFF;
+  font-family: Arial, Helvetica, sans-serif;
+}
+
+#container {
+  margin: 0.75em;
+}
+
+h1 {
+  background: #F0F0FF;
+  margin: 0 0 0 0;
+  padding: 0.5em 0 0.5em 0.5em;
+  font-size: 120%;
+  font-weight: bold;
+}
+
+span.error { 
+  font-weight: bold;
+}
+
+span.foundString { 
+  background: #FFFF00;
+  font-weight: bold;
+}
+
+span.match, span.description { 
+  color: gray;
+}
+
+span.file { 
+  color: #006600;
+}
+
+p#tagline { 
+  font-size: 75%;
+  font-weight: lighter;
+  color: #606060;
+}
Index: trunk/Documentation/idldoc/resource/search.js
===================================================================
--- trunk/Documentation/idldoc/resource/search.js	(revision 69)
+++ trunk/Documentation/idldoc/resource/search.js	(revision 69)
@@ -0,0 +1,407 @@
+var URL         = 0;
+var FILENAME    = 1;
+var DESCRIPTION = 2;
+var CONTENTS    = 3;
+var MATCH_TYPE  = 4;
+var N_MATCHES   = 5;
+var SCORE       = 6;
+var i = 7;
+var MATCHES     = 8;
+
+var html;
+
+var searchString;
+var wildcard;
+var invalidSearchString;
+var origSearchString;
+
+FILENAME_SCORE_ORDER    = 0;
+URL_SCORE_ORDER         = 1;
+DESCRIPTION_SCORE_ORDER = 2;
+CONTENT_SCORE_ORDER     = 3;
+
+SCORE_PER_TYPE = 15000;
+
+var sortResultsByType = true;
+var omitDescriptions = false;
+var addMatchSummary = true;
+
+var searchTitles = true;
+var searchDescriptions = true;
+var searchContent = true;
+
+var footer = "";
+
+function isAlnumAmp(ch) {
+  if ((ch >= "a" && ch <= "z") || (ch == "&") ||(ch >= "A" && ch <= "Z") || (ch >= "0" && ch <="9")) {
+    return true;
+  } else {
+    return false;
+  }
+}
+
+function searchElement(fileNumber, matchType, upperSearchString) {
+  var element = a[fileNumber][matchType].toUpperCase();
+  var w, x, y;
+  var z = 0;
+  
+  a[fileNumber][N_MATCHES] = 0;
+  w = element.indexOf(upperSearchString);
+  while (w >= 0){
+    z = z + w + 1;
+    if ((wildcard == -2) || (wildcard == -5)) {
+      x = false;
+    } else {
+      if (w == 0) {
+	x = false;
+      } else {
+	x = isAlnumAmp(element.charAt(w - 1));
+      }
+    }
+    if ((wildcard == -3) || (wildcard == -5)) {
+      y = false;
+    } else {
+      if (element.length - w == upperSearchString.length) {
+	y = false;
+      } else {
+	y = isAlnumAmp(element.charAt(w + upperSearchString.length));
+      }
+    }
+    if (!x && !y) {
+      a[fileNumber][MATCHES + a[fileNumber][N_MATCHES]] = z - 1;
+      a[fileNumber][N_MATCHES]++;
+          }
+    element = element.substring(w + 1, element.length);
+    while (isAlnumAmp(element.charAt(0)) && element.length > 0) {
+      element = element.substring(1, element.length);
+      z++;
+    }
+    w = element.indexOf(upperSearchString);
+  }
+}
+
+function searchFile(fileNumber, upperSearchString) {
+  var matchIndex = -1, matchType;
+  
+  a[fileNumber][MATCH_TYPE] = -1;
+  
+  while (++matchIndex <= CONTENTS && a[fileNumber][MATCH_TYPE] == -1) {
+    matchType = matchIndex == 0 ? FILENAME : (matchIndex == 1 ? DESCRIPTION : (matchIndex == 2 ? URL : CONTENTS));
+    if ((matchType == FILENAME || matchType == URL) && !searchTitles) {
+      continue;
+    }
+    
+    if (matchType == DESCRIPTION && !searchDescriptions) {
+      continue;
+    }
+    
+    if (matchType == CONTENTS && !searchContent) {
+      continue;
+    }
+    
+    searchElement(fileNumber, matchType, upperSearchString);
+    if (a[fileNumber][N_MATCHES] > 0) {
+      a[fileNumber][MATCH_TYPE] = matchType;
+    }
+  }
+}
+
+function sortResults() {
+  var fileNumber, t, tempScore, E;
+  
+  for (fileNumber = 1; fileNumber < a.length; fileNumber++) {
+    a[fileNumber][i] = fileNumber;
+  }
+  
+  if (sortResultsByType) {
+    for (fileNumber = 1; fileNumber < a.length; fileNumber++) {
+      if (a[fileNumber][MATCH_TYPE] == FILENAME) {
+	a[fileNumber][SCORE] = (4 - FILENAME_SCORE_ORDER) * SCORE_PER_TYPE;
+      } else if (a[fileNumber][MATCH_TYPE] == DESCRIPTION) {
+	a[fileNumber][SCORE] = (4 - DESCRIPTION_SCORE_ORDER) * SCORE_PER_TYPE;
+      } else if (a[fileNumber][MATCH_TYPE] == URL) {
+	a[fileNumber][SCORE] = (4 - URL_SCORE_ORDER) * SCORE_PER_TYPE;
+      } else {
+	a[fileNumber][SCORE] = (4 - CONTENT_SCORE_ORDER) * SCORE_PER_TYPE + a[fileNumber][N_MATCHES];
+      }
+    }
+    for (fileNumber = 2; fileNumber < a.length; fileNumber++) {
+      tempScore = a[fileNumber][SCORE];
+      E = a[fileNumber][i];
+      for (t = fileNumber; t > 1 && tempScore > a[t-1][SCORE]; t--) {
+	a[t][SCORE] = a[t-1][SCORE];
+	a[t][i] = a[t-1][i];
+      }
+      a[t][SCORE] = tempScore;
+      a[t][i] = E;
+    }
+  }
+}
+
+function putMatchSummary(fileNumber) {
+  var pluralSuffix = a[fileNumber][N_MATCHES]==1 ? "" : "es";
+  
+  html += "";
+  html += "<font color=gray>";
+  if (a[fileNumber][MATCH_TYPE] == FILENAME) {
+    html += " - matched title";
+  } else {
+    if (a[fileNumber][MATCH_TYPE] == DESCRIPTION) {
+      html += " - matched description";
+    } else {
+      if (a[fileNumber][MATCH_TYPE] == URL) {
+	html += " - matched URL";
+      } else {
+	html += " - " + a[fileNumber][N_MATCHES] + " match" + pluralSuffix + "";
+      }
+    }
+  }
+  html += "</font>";
+  html += "";
+}
+
+function putMatchDescription(fileNumber, curMatch) {
+  var matchLocation = a[fileNumber][MATCHES + curMatch - 1];
+  var matchStart = matchLocation < 35 ? 0 : matchLocation - 35;
+  var matchEnd = (matchLocation + 35 > a[fileNumber][CONTENTS].length) ? a[fileNumber][CONTENTS].length : matchLocation + 35;
+  
+  var Q = false;
+  while ((matchStart >= 0) && !Q) {
+    if (isAlnumAmp(a[fileNumber][CONTENTS].charAt(matchStart))) {
+      matchStart--;
+    } else {
+      Q = true;
+    }
+  }
+  matchStart++;
+  
+  Q = false;
+  while ((matchEnd > matchLocation) && !Q) {
+    if (isAlnumAmp(a[fileNumber][CONTENTS].charAt(matchEnd))) {
+      matchEnd--;
+    } else {
+      Q = true;
+    }
+  }
+  
+  html += "<BR>\".. " + a[fileNumber][CONTENTS].substring(matchStart, matchLocation);
+  html += "<B>" + a[fileNumber][CONTENTS].substring(matchLocation, matchLocation + searchString.length) + "</B>";
+  html += a[fileNumber][CONTENTS].substring(matchLocation + searchString.length, matchEnd) + " ..\"";
+}
+
+function putAllMatchDescriptions(fileNumber) {
+  if (omitDescriptions == false) {
+    var curMatch = 1;
+    while ((curMatch < 4) && (curMatch <= a[fileNumber][N_MATCHES])) {
+      putMatchDescription(fileNumber, curMatch);
+      curMatch++;
+    }
+  }
+}
+
+function putFoundString(v, R) {
+  html += v.substring(0, R);
+  html += "<B>" + v.substring(R, R + searchString.length) + "</B>";
+  html += v.substring(R + searchString.length, v.length);
+}
+
+function putItem(fileNumber, itemNumber) {
+  html += "<p>" + itemNumber + ". ";
+  html += "<A href=\"" + a[fileNumber][URL] + "\" target=\"file_frame\">" + a[fileNumber][FILENAME] + "</a>";
+  
+  if (a[fileNumber][MATCH_TYPE] == CONTENTS) {
+    putAllMatchDescriptions(fileNumber);
+  } else {
+    html += "";
+  }
+  
+  if (a[fileNumber][MATCH_TYPE] == DESCRIPTION) {
+    html += "<font color=gray>";
+    html += "<br>Description: ";
+    html += "</font>";
+    html += "";
+    putFoundString(a[fileNumber][DESCRIPTION], a[fileNumber][MATCHES]);
+  } else {
+    if( a[fileNumber][DESCRIPTION].length > 0 ) {
+      html += "<font color=gray>";
+      html += "<br>Description: ";
+      html += "</font>";
+      html += "" + a[fileNumber][DESCRIPTION];
+    } else {
+    }
+  }
+  html += "<br>";
+  html += "<font color=#005500>";
+  if (a[fileNumber][MATCH_TYPE] == URL) {
+    putFoundString(a[fileNumber][URL], a[fileNumber][MATCHES]);
+  } else {
+    html += a[fileNumber][URL];
+  }
+  html += "</font>";
+  if (addMatchSummary) {
+    putMatchSummary(fileNumber);
+  }
+  html += "<br>";
+}
+
+function putResults() {
+  var itemNumber = 0;
+  
+  if (!(invalidSearchString)) {
+    for (var fileNumber = 1; fileNumber < a.length; fileNumber++) {
+      if (a[a[fileNumber][i]][N_MATCHES] > 0) {
+	putItem(a[fileNumber][i], ++itemNumber);
+      }
+    }
+  } else {
+    if (wildcard == -4) {
+      html += "<P><B>ERROR:</B>&nbsp;The wildcard chararcter (*) must be at the beginning or end of the text.";
+    }
+  }
+}
+
+function putHeader() {
+  html += "<html><head><title>Search results for \"" + origSearchString + "\"</title>";
+  html += getStyles();
+  html += "</head><body>";
+  html += "<table CELLPADDING=\"3\" CELLSPACING=\"0\" CLASS=\"listing\">";
+  html += "<tr><td CLASS=\"title\">Search Results</td></tr>";
+  html += "</table>";
+  html += "<p>You searched for <b>" + origSearchString +".</b>";
+}
+
+function putFooter() {
+  var nMatches = 0;
+  
+  if (!(invalidSearchString)) {
+    for (var fileNumber = 1; fileNumber < a.length; fileNumber++) {
+      if (a[fileNumber][N_MATCHES] > 0) {
+	nMatches++;
+      }
+    }
+  }
+  
+  if (nMatches == 0) {
+    html += "<P>No pages matched your search.&nbsp;&nbsp;";
+  } else {
+    var G = nMatches == 1 ? "" : "s";
+    html += "<P><FONT CLASS=\"list_tagline\">" + nMatches + " page" + G + " listed.</FONT>&nbsp;&nbsp;";
+  }
+  html += footer;
+  html += "</p></body></html>";
+}
+
+function launchBrowser() {
+  var htmlCode = html;
+  
+  iu = open("", "Object", "resizable=yes,scrollbars=yes,toolbar=no,menubar=no,location=no,directories=no,width=475,height=600");
+  
+  if ((navigator.appName.indexOf("Microsoft")!=-1) && (navigator.appVersion.indexOf("3.0") != -1)) {
+    alert("Click to see results");
+  }
+  
+  iu.document.open();
+  iu.document.write(htmlCode);
+  iu.document.close();
+}
+
+function replaceSpecialChars(str) {
+  var returnStr = "";
+  
+  for (var index = 0; index < str.length; index++) {
+    if (str.charAt(index) == "<") {
+      returnStr += "&lt;";
+    } else if (str.charAt(index) == ">") {
+      returnStr += "&gt;";
+    } else if (str.charAt(index) == "\"") {
+      returnStr += "&quot;";
+    } else {
+      returnStr += str.charAt(index);
+    }
+  }
+  return(returnStr);
+}
+
+function checkSearchString() {
+  wildcard = searchString.indexOf("*");
+  if (wildcard == 0) {
+    wildcard = -2;
+    invalidSearchString = false;
+  } else if (wildcard == searchString.length -1) {
+    wildcard = -3;
+    invalidSearchString = false;
+  } else if (wildcard > 0 ) {
+    wildcard = -4;
+    invalidSearchString = true;
+  } else {
+    invalidSearchString = false;
+  }
+  
+  if (searchString.indexOf("*") != searchString.lastIndexOf("*")) {
+    if (wildcard == -2) {
+      if (searchString.lastIndexOf("*") == searchString.length - 1) {
+	wildcard = -5;
+      } else {
+	wildcard = -4;
+	invalidSearchString = true;
+      }
+    }
+  }
+  
+  if ((wildcard == -2) || (wildcard == -5)) {
+    searchString = searchString.substring(1, searchString.length);
+  }
+  
+  if ((wildcard == -3) || (wildcard == -5)) {
+    searchString = searchString.substring(0, searchString.length - 1);
+  }
+}
+
+function toggleOmitDescriptions() {
+  omitDescriptions = !omitDescriptions;
+}
+
+function toggleSortResults() {
+  sortResultsByType = !sortResultsByType;
+}
+
+function toggleMatchSummary() {
+  addMatchSummary = !addMatchSummary;
+}
+
+function toggleSearchTitles() {
+  searchTitles = !searchTitles;
+}
+
+function toggleSearchDescriptions() {
+  searchDescriptions = !searchDescriptions;
+}
+
+function toggleSearchContent() {
+  searchContent = !searchContent;
+}
+
+function startsearch() {
+  var upperSearchString;
+  searchString = document.formSearch.txtSearch.value;
+  
+  if ((searchString.length > 0) && (searchString != "*")) {
+    html = "";
+    origSearchString = searchString;
+    searchString = replaceSpecialChars(searchString);
+    checkSearchString();
+    upperSearchString = searchString.toUpperCase();
+    if (!(invalidSearchString)) {
+      for (var fileNumber = 1; fileNumber < a.length; fileNumber++) {
+	searchFile(fileNumber, upperSearchString);
+      }
+      sortResults();
+    }
+    putHeader();
+    putResults();
+    putFooter();
+    launchBrowser();
+  }
+}
+
+
Index: trunk/Documentation/idldoc/resource/tree.js
===================================================================
--- trunk/Documentation/idldoc/resource/tree.js	(revision 69)
+++ trunk/Documentation/idldoc/resource/tree.js	(revision 69)
@@ -0,0 +1,85 @@
+var temp, temp2, cookieArray, cookieArray2, cookieCount;
+
+function initiate() {
+  cookieCount=0;
+
+  if (document.cookie) {
+    cookieArray = document.cookie.split(";");
+    cookieArray2 = new Array();
+
+    for (i in cookieArray) {
+      cookieArray2[cookieArray[i].split("=")[0].replace(/ /g, "")] 
+	= cookieArray[i].split("=")[1].replace(/ /g, "");
+    }
+  }
+
+  cookieArray = (document.cookie.indexOf("state=") >= 0) 
+    ? cookieArray2["state"].split(",") 
+    : new Array();
+
+  temp = document.getElementById("tree");
+
+  for (var o=0; o<temp.getElementsByTagName("li").length; o++) {
+    if (temp.getElementsByTagName("li")[o].getElementsByTagName("ul").length > 0) {
+      temp2 = document.createElement("span");
+      temp2.className = "symbols";
+      temp2.style.backgroundImage = (cookieArray.length > 0)
+	? ((cookieArray[cookieCount]=="true")
+	   ? "url(minus.png)"
+	   : "url(plus.png)")
+	: "url(plus.png)";
+      temp2.onclick=function(){
+        showhide(this.parentNode);
+        writeCookie();
+      }
+
+      temp.getElementsByTagName("li")[o].insertBefore(temp2,temp.getElementsByTagName("li")[o].firstChild)
+      temp.getElementsByTagName("li")[o].getElementsByTagName("ul")[0].style.display = "none";
+
+      if (cookieArray[cookieCount]=="true") {
+        showhide(temp.getElementsByTagName("li")[o]);
+      }
+      cookieCount++;
+    } else {
+
+      temp2 = document.createElement("span");
+      temp2.className = "symbols";
+      temp2.style.backgroundImage = "url(page.png)";
+
+      temp.getElementsByTagName("li")[o].insertBefore(temp2,temp.getElementsByTagName("li")[o].firstChild);
+    }
+  }
+}
+
+
+
+function showhide(el) {
+  el.getElementsByTagName("ul")[0].style.display = (el.getElementsByTagName("ul")[0].style.display == "block")
+    ? "none"
+    : "block";
+  el.getElementsByTagName("span")[0].style.backgroundImage = (el.getElementsByTagName("ul")[0].style.display == "block")
+    ? "url(minus.png)" 
+    : "url(plus.png)";
+}
+
+
+
+// Runs through the menu and puts the "states" of each nested list into an 
+// array, the array is then joined together and assigned to a cookie.
+function writeCookie() {     
+  cookieArray = new Array()
+
+  for (var q=0; q < temp.getElementsByTagName("li").length; q++) {
+    if (temp.getElementsByTagName("li")[q].childNodes.length > 0) {
+      if (temp.getElementsByTagName("li")[q].childNodes[0].nodeName == "SPAN" 
+	  && temp.getElementsByTagName("li")[q].getElementsByTagName("ul").length > 0) {
+        cookieArray[cookieArray.length] 
+	  = (temp.getElementsByTagName("li")[q].getElementsByTagName("ul")[0].style.display == "block");
+      }
+    }
+  }
+
+  document.cookie = "state=" + cookieArray.join(",") + ";expires=" 
+    + new Date(new Date().getTime() + 365*24*60*60*1000).toGMTString();
+
+}
Index: trunk/Documentation/idldoc/search-template
===================================================================
--- trunk/Documentation/idldoc/search-template	(revision 68)
+++ 	(revision )
@@ -1,405 +1,0 @@
-var URL         = 0;
-var FILENAME    = 1;
-var DESCRIPTION = 2;
-var CONTENTS    = 3;
-var MATCH_TYPE  = 4;
-var N_MATCHES   = 5;
-var SCORE       = 6;
-var i = 7;
-var MATCHES     = 8;
-
-var html;
-
-var searchString;
-var wildcard;
-var invalidSearchString;
-var origSearchString;
-
-FILENAME_SCORE_ORDER    = 0;
-URL_SCORE_ORDER         = 1;
-DESCRIPTION_SCORE_ORDER = 2;
-CONTENT_SCORE_ORDER     = 3;
-
-SCORE_PER_TYPE = 15000;
-
-var sortResultsByType = true;
-var omitDescriptions = false;
-var addMatchSummary = true;
-
-var searchTitles = true;
-var searchDescriptions = true;
-var searchContent = true;
-
-var footer = "";
-
-function isAlnumAmp(ch) {
-    if ((ch >= "a" && ch <= "z") || (ch == "&") ||(ch >= "A" && ch <= "Z") || (ch >= "0" && ch <="9")) {
-        return true;
-    } else {
-        return false;
-    }
-}
-
-function searchElement(fileNumber, matchType, upperSearchString) {
-    var element = a[fileNumber][matchType].toUpperCase();
-    var w, x, y;
-    var z = 0;
-
-    a[fileNumber][N_MATCHES] = 0;
-    w = element.indexOf(upperSearchString);
-    while (w >= 0){
-        z = z + w + 1;
-        if ((wildcard == -2) || (wildcard == -5)) {
-            x = false;
-        } else {
-            if (w == 0) {
-                x = false;
-            } else {
-                x = isAlnumAmp(element.charAt(w - 1));
-            }
-        }
-        if ((wildcard == -3) || (wildcard == -5)) {
-            y = false;
-        } else {
-            if (element.length - w == upperSearchString.length) {
-                y = false;
-            } else {
-                y = isAlnumAmp(element.charAt(w + upperSearchString.length));
-            }
-        }
-        if (!x && !y) {
-            a[fileNumber][MATCHES + a[fileNumber][N_MATCHES]] = z - 1;
-            a[fileNumber][N_MATCHES]++;
-        }
-        element = element.substring(w + 1, element.length);
-        while (isAlnumAmp(element.charAt(0)) && element.length > 0) {
-            element = element.substring(1, element.length);
-            z++;
-        }
-        w = element.indexOf(upperSearchString);
-    }
-}
-
-function searchFile(fileNumber, upperSearchString) {
-    var matchIndex = -1, matchType;
-
-    a[fileNumber][MATCH_TYPE] = -1;
-
-    while (++matchIndex <= CONTENTS && a[fileNumber][MATCH_TYPE] == -1) {
-        matchType = matchIndex == 0 ? FILENAME : (matchIndex == 1 ? DESCRIPTION : (matchIndex == 2 ? URL : CONTENTS));
-        if ((matchType == FILENAME || matchType == URL) && !searchTitles) {
-        	continue;
-        }
-
-        if (matchType == DESCRIPTION && !searchDescriptions) {
-        	continue;
-        }
-
-        if (matchType == CONTENTS && !searchContent) {
-        	continue;
-        }
-
-        searchElement(fileNumber, matchType, upperSearchString);
-        if (a[fileNumber][N_MATCHES] > 0) {
-            a[fileNumber][MATCH_TYPE] = matchType;
-        }
-    }
-}
-
-function sortResults() {
-    var fileNumber, t, tempScore, E;
-
-    for (fileNumber = 1; fileNumber < a.length; fileNumber++) {
-        a[fileNumber][i] = fileNumber;
-    }
-
-    if (sortResultsByType) {
-        for (fileNumber = 1; fileNumber < a.length; fileNumber++) {
-            if (a[fileNumber][MATCH_TYPE] == FILENAME) {
-                a[fileNumber][SCORE] = (4 - FILENAME_SCORE_ORDER) * SCORE_PER_TYPE;
-            } else if (a[fileNumber][MATCH_TYPE] == DESCRIPTION) {
-                a[fileNumber][SCORE] = (4 - DESCRIPTION_SCORE_ORDER) * SCORE_PER_TYPE;
-            } else if (a[fileNumber][MATCH_TYPE] == URL) {
-                a[fileNumber][SCORE] = (4 - URL_SCORE_ORDER) * SCORE_PER_TYPE;
-            } else {
-                a[fileNumber][SCORE] = (4 - CONTENT_SCORE_ORDER) * SCORE_PER_TYPE + a[fileNumber][N_MATCHES];
-            }
-        }
-        for (fileNumber = 2; fileNumber < a.length; fileNumber++) {
-            tempScore = a[fileNumber][SCORE];
-            E = a[fileNumber][i];
-            for (t = fileNumber; t > 1 && tempScore > a[t-1][SCORE]; t--) {
-                a[t][SCORE] = a[t-1][SCORE];
-                a[t][i] = a[t-1][i];
-            }
-            a[t][SCORE] = tempScore;
-            a[t][i] = E;
-        }
-    }
-}
-
-function putMatchSummary(fileNumber) {
-    var pluralSuffix = a[fileNumber][N_MATCHES]==1 ? "" : "es";
-
-    html += "";
-    html += "<font color=gray>";
-    if (a[fileNumber][MATCH_TYPE] == FILENAME) {
-        html += " - matched title";
-    } else {
-        if (a[fileNumber][MATCH_TYPE] == DESCRIPTION) {
-            html += " - matched description";
-        } else {
-            if (a[fileNumber][MATCH_TYPE] == URL) {
-                html += " - matched URL";
-            } else {
-                html += " - " + a[fileNumber][N_MATCHES] + " match" + pluralSuffix + "";
-            }
-        }
-    }
-    html += "</font>";
-    html += "";
-}
-
-function putMatchDescription(fileNumber, curMatch) {
-    var matchLocation = a[fileNumber][MATCHES + curMatch - 1];
-    var matchStart = matchLocation < 35 ? 0 : matchLocation - 35;
-    var matchEnd = (matchLocation + 35 > a[fileNumber][CONTENTS].length) ? a[fileNumber][CONTENTS].length : matchLocation + 35;
-
-    var Q = false;
-    while ((matchStart >= 0) && !Q) {
-        if (isAlnumAmp(a[fileNumber][CONTENTS].charAt(matchStart))) {
-            matchStart--;
-        } else {
-            Q = true;
-        }
-    }
-    matchStart++;
-
-    Q = false;
-    while ((matchEnd > matchLocation) && !Q) {
-        if (isAlnumAmp(a[fileNumber][CONTENTS].charAt(matchEnd))) {
-            matchEnd--;
-        } else {
-            Q = true;
-        }
-    }
-
-    html += "<BR>\".. " + a[fileNumber][CONTENTS].substring(matchStart, matchLocation);
-    html += "<B>" + a[fileNumber][CONTENTS].substring(matchLocation, matchLocation + searchString.length) + "</B>";
-    html += a[fileNumber][CONTENTS].substring(matchLocation + searchString.length, matchEnd) + " ..\"";
-}
-
-function putAllMatchDescriptions(fileNumber) {
-    if (omitDescriptions == false) {
-        var curMatch = 1;
-        while ((curMatch < 4) && (curMatch <= a[fileNumber][N_MATCHES])) {
-            putMatchDescription(fileNumber, curMatch);
-            curMatch++;
-        }
-    }
-}
-
-function putFoundString(v, R) {
-    html += v.substring(0, R);
-    html += "<B>" + v.substring(R, R + searchString.length) + "</B>";
-    html += v.substring(R + searchString.length, v.length);
-}
-
-function putItem(fileNumber, itemNumber) {
-    html += "<p>" + itemNumber + ". ";
-    html += "<A href=\"" + a[fileNumber][URL] + "\" target=\"file_frame\">" + a[fileNumber][FILENAME] + "</a>";
-
-    if (a[fileNumber][MATCH_TYPE] == CONTENTS) {
-        putAllMatchDescriptions(fileNumber);
-    } else {
-        html += "";
-    }
-
-    if (a[fileNumber][MATCH_TYPE] == DESCRIPTION) {
-        html += "<font color=gray>";
-        html += "<br>Description: ";
-        html += "</font>";
-        html += "";
-        putFoundString(a[fileNumber][DESCRIPTION], a[fileNumber][MATCHES]);
-    } else {
-        if( a[fileNumber][DESCRIPTION].length > 0 ) {
-            html += "<font color=gray>";
-            html += "<br>Description: ";
-            html += "</font>";
-            html += "" + a[fileNumber][DESCRIPTION];
-        } else {
-        }
-    }
-    html += "<br>";
-    html += "<font color=#005500>";
-    if (a[fileNumber][MATCH_TYPE] == URL) {
-        putFoundString(a[fileNumber][URL], a[fileNumber][MATCHES]);
-    } else {
-        html += a[fileNumber][URL];
-    }
-    html += "</font>";
-    if (addMatchSummary) {
-        putMatchSummary(fileNumber);
-    }
-    html += "<br>";
-}
-
-function putResults() {
-    var itemNumber = 0;
-
-    if (!(invalidSearchString)) {
-        for (var fileNumber = 1; fileNumber < a.length; fileNumber++) {
-            if (a[a[fileNumber][i]][N_MATCHES] > 0) {
-                putItem(a[fileNumber][i], ++itemNumber);
-            }
-        }
-    } else {
-        if (wildcard == -4) {
-            html += "<P><B>ERROR:</B>&nbsp;The wildcard chararcter (*) must be at the beginning or end of the text.";
-        }
-    }
-}
-
-function putHeader() {
-    html += "<html><head><title>Search results for \"" + origSearchString + "\"</title>"
-    html += getStyles();
-    html += "</head><body>";
-    html += "<table CELLPADDING=\"3\" CELLSPACING=\"0\" CLASS=\"listing\">"
-    html += "<tr><td CLASS=\"title\">Search Results</td></tr>"
-    html += "</table>"
-    html += "<p>You searched for <b>" + origSearchString +".</b>";
-}
-
-function putFooter() {
-    var nMatches = 0;
-
-    if (!(invalidSearchString)) {
-        for (var fileNumber = 1; fileNumber < a.length; fileNumber++) {
-            if (a[fileNumber][N_MATCHES] > 0) {
-                nMatches++;
-            }
-        }
-    }
-
-    if (nMatches == 0) {
-        html += "<P>No pages matched your search.&nbsp;&nbsp;";
-    } else {
-        var G = nMatches == 1 ? "" : "s";
-        html += "<P><FONT CLASS=\"list_tagline\">" + nMatches + " page" + G + " listed.</FONT>&nbsp;&nbsp;";
-    }
-    html += footer;
-    html += "</p></body></html>";
-}
-
-function launchBrowser() {
-    var htmlCode = html;
-
-    iu = open("", "Object", "resizable=yes,scrollbars=yes,toolbar=no,menubar=no,location=no,directories=no,width=475,height=600");
-
-    if ((navigator.appName.indexOf("Microsoft")!=-1) && (navigator.appVersion.indexOf("3.0") != -1)) {
-        alert("Click to see results");
-    }
-
-    iu.document.open();
-    iu.document.write(htmlCode);
-    iu.document.close();
-}
-
-function replaceSpecialChars(str) {
-    var returnStr = "";
-
-    for (var index = 0; index < str.length; index++) {
-        if (str.charAt(index) == "<") {
-            returnStr += "&lt;";
-        } else if (str.charAt(index) == ">") {
-            returnStr += "&gt;";
-        } else if (str.charAt(index) == "\"") {
-            returnStr += "&quot;";
-        } else {
-            returnStr += str.charAt(index);
-        }
-    }
-    return(returnStr);
-}
-
-function checkSearchString() {
-    wildcard = searchString.indexOf("*");
-    if (wildcard == 0) {
-        wildcard = -2;
-        invalidSearchString = false;
-    } else if (wildcard == searchString.length -1) {
-        wildcard = -3;
-        invalidSearchString = false;
-    } else if (wildcard > 0 ) {
-        wildcard = -4;
-        invalidSearchString = true;
-    } else {
-        invalidSearchString = false;
-    }
-
-    if (searchString.indexOf("*") != searchString.lastIndexOf("*")) {
-        if (wildcard == -2) {
-            if (searchString.lastIndexOf("*") == searchString.length - 1) {
-                wildcard = -5;
-            } else {
-                wildcard = -4;
-                invalidSearchString = true;
-            }
-        }
-    }
-
-    if ((wildcard == -2) || (wildcard == -5)) {
-        searchString = searchString.substring(1, searchString.length);
-    }
-
-    if ((wildcard == -3) || (wildcard == -5)) {
-        searchString = searchString.substring(0, searchString.length - 1);
-    }
-}
-
-function toggleOmitDescriptions() {
-    omitDescriptions = !omitDescriptions;
-}
-
-function toggleSortResults() {
-    sortResultsByType = !sortResultsByType;
-}
-
-function toggleMatchSummary() {
-    addMatchSummary = !addMatchSummary;
-}
-
-function toggleSearchTitles() {
-    searchTitles = !searchTitles;
-}
-
-function toggleSearchDescriptions() {
-    searchDescriptions = !searchDescriptions;
-}
-
-function toggleSearchContent() {
-    searchContent = !searchContent;
-}
-
-function startsearch() {
-    var upperSearchString;
-    searchString = document.formSearch.txtSearch.value;
-
-    if ((searchString.length > 0) && (searchString != "*")) {
-        html = "";
-        origSearchString = searchString;
-        searchString = replaceSpecialChars(searchString);
-        checkSearchString();
-        upperSearchString = searchString.toUpperCase();
-        if (!(invalidSearchString)) {
-            for (var fileNumber = 1; fileNumber < a.length; fileNumber++) {
-                searchFile(fileNumber, upperSearchString);
-            }
-            sortResults();
-        }
-        putHeader();
-        putResults();
-        putFooter();
-        launchBrowser();
-    }
-}
Index: trunk/Documentation/idldoc/sourceroot.pro
===================================================================
--- trunk/Documentation/idldoc/sourceroot.pro	(revision 68)
+++ 	(revision )
@@ -1,24 +1,0 @@
-; From Jim Pendelton, Oct. 2001
-Function SourceRoot
-Help, Calls = Calls
-UpperRoutine = (StrTok(Calls[1], ' ', /Extract))[0]
-Skip = 0
-Catch, ErrorNumber
-If (ErrorNumber ne 0) then Begin
-    Catch, /Cancel
-    ThisRoutine = Routine_Info(UpperRoutine, /Functions, /Source)
-    Skip = 1
-EndIf
-If (Skip eq 0) then Begin
-    ThisRoutine = Routine_Info(UpperRoutine, /Source)
-EndIf
-Case StrUpCase(!version.os_family) of
-    'WINDOWS' : DirSep = '\'
-    'UNIX' : DirSep = '/'
-    'MACOS' : DirSep = ':'
-    'VMS' : DirSep = ']'
-    Else : DirSep = ''
-EndCase
-Root = StrMid(ThisRoutine.Path, 0, StrPos(ThisRoutine.Path, DirSep, /Reverse_Search) + 1)
-Return, Root
-End
Index: trunk/Documentation/idldoc/templates/all-dirs.tt
===================================================================
--- trunk/Documentation/idldoc/templates/all-dirs.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/all-dirs.tt	(revision 69)
@@ -0,0 +1,41 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- Template needs structure with the following fields:
+       version : string containing the IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : string filename of CSS file location
+       dirs : array of structures of the type { href:'', name:'' }
+       ndirs : string containing the number of files, including the word "file(s)"
+-->
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>Directories</title>
+    [% IF embed %]
+    <style type="text/css">
+      [% INCLUDE css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" href="listings.css" />
+    [% END %]
+  </head>
+
+  <body>
+    <div id="container">
+    <h1>Directories</h1>
+
+    <ul>
+      <li><a href="./all-files.html" target="dir_frame">All directories</a></li>
+      [% FOREACH dir IN dirs %]
+      <li><a href="[% dir.href %]" target="dir_frame">[% dir.name %]</a></li>[% END %]
+    </ul>
+
+    <div id="tagline">[% ndirs %]</div>
+    </div>
+  </body>
+</html>
Index: trunk/Documentation/idldoc/templates/all-files.tt
===================================================================
--- trunk/Documentation/idldoc/templates/all-files.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/all-files.tt	(revision 69)
@@ -0,0 +1,53 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- Template needs structure with the following fields:
+       version : string containing the IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : string filename of CSS file location
+       files : array of structures of the type { href:'', name:'' }
+       nfiles : number of files
+-->
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>All Files</title>
+    [% IF embed %]
+    <style type="text/css">
+      [% INCLUDE css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" href="listings.css" />
+    [% END %]
+  </head>
+
+  <body>
+    <div id="container">
+    <h1>All Files</h1>
+
+      [% IF nfiles gt 0 %]
+      <ul>
+	[% FOREACH file IN files %]
+	<li><a href="[% file.href %]" target="file_frame">[% file.name %]</a></li>[% END %]
+      </ul>
+      
+      <div id="tagline">[% strtrim(nfiles, 2) %] file[% nfiles gt 1 ? "s" : "" %]</div>
+      [% END %]
+      
+      [% IF nsavfiles gt 0 %]
+      <h1>SAV files</h1>
+      <ul>
+	[% FOREACH file IN savfiles %]
+	<li><a href="[% file.href %]" target="file_frame">[% file.name %]</a></li>[% END %]
+      </ul>
+      
+      <div id="tagline">[% strtrim(nsavfiles, 2) %] file[% nsavfiles gt 1 ? "s" : "" %]</div>
+      [% END %]
+      
+    </div>
+  </body>
+</html>
Index: trunk/Documentation/idldoc/templates/categories-begin.tt
===================================================================
--- trunk/Documentation/idldoc/templates/categories-begin.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/categories-begin.tt	(revision 69)
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-transitional.dtd">
+
+<!-- categories-begin.tt needs structure with the following fields:
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       navbar_filename : filename of navbar template
+     Plus fields needed by the templates: navbar, tagline
+-->
+
+<!-- categories-tag.tt needs structure with the following fields:
+       tag : tag name
+       tag_id : tag name with spaces converted to underscores
+       routines : array of structures with fields name, url
+-->
+
+<!-- categories-end.tt needs structure with the following fields:
+       footer : filename of footer file to include
+       tagline_filename : filename of tagline template
+-->
+
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>Categories ([% title %])</title>
+
+    [% IF embed %]
+    <style type="text/css" media="all">
+         [% INCLUDE css_location %]
+    </style>	
+    <style type="text/css" media="print">
+         [% INCLUDE print_css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" href="[% root %]/main_files.css" media="all"/>
+    <link rel="stylesheet" type="text/css" href="[% root %]/main_files_print.css" media="print"/>
+    [% END %]
+
+    <script type="text/javascript" src="./tree.js" />
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="Categories ([% title %])";
+      }
+    </script>
+  </head>
+
+
+  <body onload="setTitle();">
+
+    [% INCLUDE_TEMPLATE navbar_filename %]
+
+    <div id="container">
+
+      <h1>Categories</h1>
+
+
+      [% IF ntags eq 0 %]
+      <p>No categories in library.</p>
+      [% ELSE %]
+      <p>The following categories were found in the library.</p>
+      <ul id="tree">
+      [% END %]
Index: trunk/Documentation/idldoc/templates/categories-end.tt
===================================================================
--- trunk/Documentation/idldoc/templates/categories-end.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/categories-end.tt	(revision 69)
@@ -0,0 +1,17 @@
+      [% IF ntags gt 0 %]
+      </ul>
+      <script type="text/javascript">
+        // This must be placed immediately after the menu in order to
+        // format it properly.
+        initiate();
+      </script>
+      [% END %]
+
+      [% IF footer NE '' %]<div id="footer">[% INCLUDE footer %]</div>[% END %]
+
+      [% INCLUDE_TEMPLATE tagline_filename %]
+
+    </div>
+
+  </body>
+</html>
Index: trunk/Documentation/idldoc/templates/categories-tag.tt
===================================================================
--- trunk/Documentation/idldoc/templates/categories-tag.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/categories-tag.tt	(revision 69)
@@ -0,0 +1,7 @@
+        <li id="idldoc-[% tag_id %]">[% tag %] <span class="result">([% nroutines %] routine[% IF nroutines gt 1%]s[% ELSE %][% END %])</span>
+          <ul>
+            [% FOREACH r IN routines %]
+            <li><a href="[% r.url %]">[% r.name %]</a></li>
+            [% END %]
+          </ul>
+        </li>
Index: trunk/Documentation/idldoc/templates/categories.tt
===================================================================
--- trunk/Documentation/idldoc/templates/categories.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/categories.tt	(revision 69)
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-transitional.dtd">
+
+<!-- categories-begin.tt needs structure with the following fields:
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       navbar_filename : filename of navbar template
+     Plus fields needed by the templates: navbar, tagline
+-->
+
+<!-- categories-tag.tt needs structure with the following fields:
+       tag : tag name
+       tag_id : tag name with spaces converted to underscores
+       routines : array of structures with fields name, url
+-->
+
+<!-- categories-end.tt needs structure with the following fields:
+       footer : filename of footer file to include
+       tagline_filename : filename of tagline template
+-->
+
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>Categories ([% title %])</title>
+    [% IF embed %]
+    <style type="text/css">
+      [% INCLUDE css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" href="[% css_location %]" />
+    [% END %]
+
+    <script type="text/javascript" src="./tree.js" />
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="Categories ([% title %])";
+      }
+    </script>
+  </head>
+
+
+  <body onload="setTitle();">
+
+    [% INCLUDE_TEMPLATE navbar_filename %]
+
+    <div id="container">
+
+      <h1>Categories</h1>
+
+
+      [% IF ntags eq 0 %]
+      <p>No categories in library.</p>
+      [% ELSE %]
+      <p>The following categories were found in the library.</p>
+      <ul id="tree">
+      [% END %]
+
+        <li id="idldoc-[% tag_id %]">[% tag %]
+          <ul>
+            [% FOREACH r IN routines %]
+            <li><a href="[% r.url %]">[% r.name %]</a></li>
+            [% END %]
+          </ul>
+        </li>
+
+      [% IF ntags gt 0 %]
+      </ul>
+      <script type="text/javascript">
+        // This must be placed immediately after the menu in order to
+        // format it properly.
+        initiate();
+      </script>
+      [% END %]
+
+      [% IF footer NE '' %]<div id="footer">[% INCLUDE footer %]</div>[% END %]
+
+      [% INCLUDE_TEMPLATE tagline_filename %]
+
+    </div>
+
+  </body>
+</html>
Index: trunk/Documentation/idldoc/templates/dev-help.tt
===================================================================
--- trunk/Documentation/idldoc/templates/dev-help.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/dev-help.tt	(revision 69)
@@ -0,0 +1,538 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- Template needs structure with the following fields:
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       idldoc_syntax_filename : file containing IDLdoc output for the idldoc routine
+       navbar_filename : filename of navbar template
+       footer : filename of footer file to include
+       tagline_filename : filename of tagline template
+     Plus stuff needed by the templates: navbar, tagline
+-->
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>IDLdoc Developer's Help ([% title %])</title>
+
+    [% IF embed %]
+    <style type="text/css" media="all">
+         [% INCLUDE css_location %]
+    </style>	
+    <style type="text/css" media="print">
+         [% INCLUDE print_css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" href="[% root %]/main_files.css" media="all"/>
+    <link rel="stylesheet" type="text/css" href="[% root %]/main_files_print.css" media="print"/>
+    [% END %]
+
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="IDLdoc Developer's Help ([% title %])";
+      }
+    </script>
+  </head>
+
+
+  <body onload="setTitle();">
+    
+    [% INCLUDE_TEMPLATE navbar_filename %]
+    
+    <div id="container">
+
+      <h1>IDLdoc developer's guide</h1>
+
+      <p>This guide discusses how to mark up IDL pro code in order to
+      insert more information into IDLdoc's output.</p>
+
+      <p>Comments on the routine and file level are placed between
+      ";+" and ";-" lines before a routine in IDL source code. Content
+      between these lines is copied verbatim into the IDLdoc output
+      for the routine it appears before with the exception of the
+      @-preceded "tags" listed in tables below. Once an @ appears in
+      the comments, IDLdoc processes all remaining lines of the
+      comments as tags. To place a non-tag defining "@" in your
+      comments, escape it with a "\", as in
+      "email_address\@rsinc.com".</p>
+
+      <p>In the following example, the @author tag is used to indicate
+      an author of the code. The second "@" is escaped to allow its
+      literal use in the email address:</p>
+
+	<pre class="snippet">; @author Michael Galloy, mgalloy\@rsinc.com</pre>
+
+      <h2>Routine level comments</h2>
+
+      <p>There are many tags which describe an individual
+      routine. Each tag name appears after an "@" sign as the first
+      non-whitespace character after the ;. The tags are described
+      below.</p>
+
+      <table class="basic" cellspacing="0">
+	<tr>
+	  <th>Tag</th>
+	  <th>Description</th>
+	</tr>
+	<tr>
+	  <td>abstract</td>
+	  <td>
+	    Presence of the this tag indicates this method is
+	    abstract. This is intended for use with methods of a class
+	    which are not intended to be called, but are only provided
+	    as documenting an interface that a subclass will override.
+	  </td>
+	</tr>
+	<tr>
+	  <td>author</td>
+	  <td>
+	    Text following this tag appears in a list of attributes
+	    of the routine marked as "Author."
+	  </td>
+	</tr>
+	<tr>
+	  <td>bugs</td>
+	  <td>
+	    Text that follows this tag is copied into a bug
+	    attribute of the routine and placed in a library wide
+	    listing which documents known failings of routines.
+	  </td>
+	</tr>
+	<tr>
+	  <td>categories</td>
+	  <td>
+	    Text following this tag is used as a comma separated list
+	    of categories of the routine. The syntax is:
+
+	    <pre class="snippet">; @categories math, input/output</pre>
+
+	    Category names are case-sensitive and may contain any
+	    characters except commas (though whitespace at the
+	    beginning and end will be removed).
+	  </td>
+	</tr>
+	<tr>
+	  <td>copyright</td>
+	  <td>
+	    Text following this tag appears in a list of attributes
+	    of the routine marked as "Copyright."
+	  </td>
+	</tr>
+	<tr>
+	  <td>customer_id</td>
+	  <td>
+	    Text following this tag appears in a list of attributes
+	    of the routine marked as "Customer ID."
+	  </td>
+	</tr>
+	<tr>
+	  <td>examples</td>
+	  <td>
+	    Text following this tag is copied into an examples
+	    attribute of the routine; it is intended to have
+	    example code of using the routine.
+	  </td>
+	</tr>
+	<tr>
+	  <td>field</td>
+	  <td>
+	    For routines in files that end in "__define", this
+	    provides documentation of a member variable of a
+	    class/structure. The syntax is 
+	    
+	    <pre class="snippet">; @field field_name comment</pre>
+	    
+	    where "field" matches one of the structure field names
+	    of the structure type/class being defined.
+	  </td>
+	</tr>
+	<tr>
+	  <td>hidden</td>
+	  <td>
+	    Presence of this tag hides this routine in IDLdoc
+	    output.
+	  </td>
+	</tr>
+	<tr>
+	  <td>history</td>
+	  <td>
+	    Text following this tag is copied into a history
+	    attribute of the routine; it is intended to have a
+	    history of the creators and modifiers of the source
+	    code of the routine.
+	  </td>
+	</tr>
+	<tr>
+	  <td>inherits</td>
+	  <td>
+	    Obsolete. Intended to provide the parent class of the
+	    documented class, but this is automatically handled by
+	    IDLdoc now (as long as class definitions are in files
+	    that end "__define").
+	  </td>
+	</tr>
+	<tr>
+	  <td>keyword</td>
+	  <td>
+	    This tag documents a single keyword parameter to the
+	    routine. This syntax is 
+	    
+	    <pre class="snippet">; @keyword keyword_name attributes comment</pre>
+	    
+	    Attributes further describe keyword and detailed in
+	    the section below. The comment may be an text and is
+	    copied into the IDLdoc output.
+	  </td>
+	</tr>
+	<tr>
+	  <td>obsolete</td>
+	  <td>
+	    Presence of this tag marks the routine as obsolete.
+	  </td>
+	</tr>
+	<tr>
+	  <td>param</td>
+	  <td>
+	    This tag documents a single keyword parameter to the
+	    routine. This syntax is 
+	    
+	    <pre class="snippet">; @param keyword_name attributes comment</pre> 
+	    
+	    Attributes further describe keyword and detailed in
+	    the section below. The comment may be an text and is
+	    copied into the IDLdoc output.
+	  </td>
+	</tr>
+	<tr>
+	  <td>pre</td>
+	  <td>
+	    Text following this tag will be copied to a pre
+	    attribute of the routine; it is intended to give
+	    conditions the routine assumes to be true before it
+	    runs.
+	  </td>
+	</tr>
+	<tr>
+	  <td>post</td>
+	  <td>
+	    Text following this tag will be copied to a post
+	    attribute of the routine; it is intended to give
+	    conditions the routine assumes to be true after it
+	    runs.
+	  </td>
+	</tr>
+	<tr>
+	  <td>private</td>
+	  <td>
+	    Presence of this tag will hide this routine in IDLdoc
+	    output if IDLdoc is run in "user" mode.
+	  </td>
+	</tr>
+	<tr>
+	  <td>requires</td>
+	  <td>
+	    Text following this tag is copied into the "Requires"
+	    attribute of the routine; it is intended to provide
+	    the version of IDL required to run the routine. For
+	    example,
+	    
+	    <pre class="snippet">; @requires IDL 6.2</pre>
+	    
+	    will simply cause "IDL 6.2" to appear in the
+	    "Requires" attribute.
+	  </td>
+	</tr>
+	<tr>
+	  <td>restrictions</td>
+	  <td>
+	    Text following this tag is copied into the
+	    "Restrictions" attribute of the routine; it is
+	    intended to provide any restrictions on the use of the
+	    routine.
+	  </td>
+	</tr>
+	<tr>
+	  <td>returns</td>
+	  <td>
+	    Text following this tag is copied into the "Returns"
+	    attribute of the routine; it is intended to provide
+	    information about return value of a function.
+	  </td>
+	</tr>
+	<tr>
+	  <td>todo</td>
+	  <td>
+	    This tag places an item in a library-wide list of todo
+	    items. The text following the tag is copied into this list
+	    along with the routine it appears in it.
+	  </td>
+	</tr>
+	<tr>
+	  <td>uses</td>
+	  <td>
+	    Text following this tag is placed in a uses attribute of
+	    the routine; it is intended to list routines that this
+	    routine calls.
+	  </td>
+	</tr>
+	<tr>
+	  <td>version</td>
+	  <td>
+	    Text following this tag is placed in a version attribute
+	    of the routine; it is intended to give a version
+	    name/number of the routine.
+	  </td>
+	</tr>
+      </table>
+      
+      <p>For each positional parameters or keyword tag additional
+      attributes may be added in curly braces. For example,</p>
+	
+      <pre class="snippet">; @param x {in}{required}{type=lonarr} x-axis data</pre>
+	
+      <p>The attributes are described below.</p>
+      
+      <table class="basic" cellspacing="0">
+	<tr>
+	  <th>Attribute</th>
+	  <th>Description</th>
+	</tr>
+	<tr>
+	  <td>default</td>
+	  <td>
+	    This atrribute defines the default value of the
+	    parameter. Any string may be entered and is echoed in the
+	    IDLdoc output.
+	  </td>
+	</tr>
+	<tr>
+	  <td>hidden</td>
+	  <td>
+	    This attribute hides this parameter in IDLdoc output.
+	  </td>
+	</tr>
+	<tr>
+	  <td>in</td>
+	  <td>
+	    This attribute marks the parameter as an input to the
+	    routine.
+	  </td>
+	</tr>
+	<tr>
+	  <td>optional</td>
+	  <td>
+	    This attribute marks the parameter as optional; the
+	    routine does not always need this parameter, although
+	    there might be cases where the parameter is required
+	    (depending on the presence and value of other parameters).
+	  </td>
+	</tr>
+	<tr>
+	  <td>out</td>
+	  <td>
+	    This attribute marks the parameter as an output to the
+	    routine. This routine expects a named variable to be
+	    passed to this parameter (if passed at all).
+	  </td>
+	</tr>
+	<tr>
+	  <td>private</td>
+	  <td>
+	    This attribute hides this parameter in IDLdoc output when
+	    IDLdoc is run in "user" mode and marking it as "private"
+	    when run in "developer" mode.
+	  </td>
+	</tr>
+	<tr>
+	  <td>required</td>
+	  <td>
+	    This attribute marks the parameter as required.
+	  </td>
+	</tr>
+	<tr>
+	  <td>type</td>
+	  <td>
+	    This atrribute defines the data type of the
+	    parameter. Any string may be entered and is echoed in
+	    the IDLdoc output. The special type "boolean" will cause
+	    the calling syntax in IDLdoc output to use the IDL
+	    online help syntax of prepending a "/" to the parameter
+	    name.
+	  </td>
+	</tr>
+      </table>
+      
+      <h2>File level comments</h2>
+      
+      <p>Some tags may appear in the comments for any routine in a
+      file because they document attributes of the file. These tags
+      are described below.</p>
+      
+      <table class="basic" cellspacing="0">
+	<tr>
+	  <th>Tag</th>
+	  <th>Description</th>
+	</tr>
+	<tr>
+	  <td>file_comments</td>
+	  <td>
+	    Text following the tag is copied to the top of the file
+	    in the IDLdoc output i.e. it is a comment on the file
+	    and not the routine it appears in. If there are multiple
+	    file_comments tags in the file, the comments will be
+	    concatenated in the order they are present in the file.
+	  </td>
+	</tr>
+	<tr>
+	  <td>hidden_file</td>
+	  <td>
+	    Presence of this tag indicates this entire file should
+	    be hidden in IDLdoc output.
+	  </td>
+	</tr>
+	<tr>
+	  <td>private_file</td>
+	  <td>
+	    Presence of this tag indicates this entire file should
+	    be hidden in IDLdoc output if IDLdoc is run in "user"
+	    mode, but shown when run in "developer" mode (the
+	    default).
+	  </td>
+	</tr>
+      </table>
+    
+      <h2>Examples</h2>
+      
+      For example, here's a sample class definition routine:
+      
+      <pre class="snippet">;+
+; Define the instance variables of the array_list.
+;
+; @file_comments An array_list is an object representing a variable 
+;                length list of scalar elements of any single type. 
+;                Array_lists support adding elements at the end of 
+;                the vector only, but any element may be removed from 
+;                the array_list. An iterator is provided for 
+;                efficient and easy looping throught the elements of 
+;                the array_list.
+;
+; @field data pointer to an array
+; @field cur_size the current size of the data in the array
+; @field max_size the maximum size of the data in the current array
+; @field type type code (as in SIZE function) for the elements in the 
+;        array_list
+; @field sample_struct pointer to a structure if the type is 
+;        "structure"
+; @field iterators IDL_Container for the iterators of this array_list
+;
+; @requires IDL 6.0
+;
+; @author Michael D. Galloy
+; @history Created September 26, 2003
+; @copyright RSI, 2003
+;-
+pro array_list__define
+    compile_opt idl2
+
+    define = { array_list, $
+        data:ptr_new(), $
+        cur_size:0L, $
+        max_size:0L, $
+        type:0L, $
+        sample_struct:ptr_new(), $
+        iterators:obj_new() $
+        }
+end</pre>	
+
+      Another example routine, this time a simple function with a positional parameter and keyword:
+
+      <pre class="snippet">;+
+; Returns [b, a] for a linear function y = a * x + b that sends
+; inRange[0] -> range[0] and inRange[1] -> range[1].
+;
+; @returns dblarr(2)
+; @param inRange {in}{required}{type=2 element numeric array} input 
+;        range
+; @keyword range {in}{optional}{type=dblarr(2)}{default=[0.D, 1.D]}
+;          output range
+; @categories math, object graphics
+;-
+function linear_function, inRange, range=outRange
+    compile_opt idl2
+
+    i_outRange = n_elements(outRange) eq 0 $
+        ? [0.D, 1.D] $
+        : double(outRange)
+
+    scale = [i_outRange[0] * inRange[1] - i_outRange[1] * inRange[0], $
+        i_outRange[1] - i_outRange[0]] / (inRange[1] - inRange[0])
+    return, scale
+end</pre>
+
+      One more example, this time a function method with an output keyword.
+
+      <pre class="snippet">;+
+; Finds the value associated with the given key.
+;
+; @returns the value of the associated key or -1L if not found
+; @param key {in}{type=key type} key to look up
+; @keyword found {out}{optional}{type=boolean} true if value found for 
+;          given key
+;-
+function hash_table::get, key, found=found</pre>
+
+      <h2>Directory overviews</h2>
+
+      <p>The "dir-overview" file in each directory of the library is
+      copied into the directory overview file. Much of the content of
+      the overview file is obtained from the PRO code files in the
+      directory, but this allows header content as an overview of the
+      all the files in the directory to be inserted at the top of the
+      directory overview file.</p>
+
+
+      <h2>Library overview</h2>
+
+      <p>The library overview file is a single file which is inserted
+      into the opening page of the IDLdoc output. This file is copied
+      verbatim into the IDLdoc output except for the following tag
+      which allows for comments on the contents of the directories
+      found in the library.</p>
+
+      <table class="basic" cellspacing="0">
+	<tr>
+	  <th>Tag</th>
+	  <th>Description</th>
+	</tr>
+	<tr>
+	  <td>dir</td>
+	  <td>
+	    The text following this tag is the relative path
+	    (web-style, always with a /) to a directory in the
+	    library and a comment which is copied into a table in
+	    the opening page of the IDLdoc output.
+	    
+	    <pre class="snippet">; @dir algorithms/math mathematical routines</pre>
+	  </td>
+	</tr>
+      </table>
+    
+      <h2>Syntax of IDLdoc routine</h2>
+      
+      <p>Below is the IDLdoc generated documentation for the IDLdoc main routine.</p>
+
+      [% INCLUDE idldoc_syntax_filename %]
+
+      [% IF footer NE '' %]<div id="footer">[% INCLUDE footer %]</div>[% END %]
+
+      [% INCLUDE_TEMPLATE tagline_filename %]
+      
+    </div>
+    
+  </body>
+</html>
Index: trunk/Documentation/idldoc/templates/dev-help2.tt
===================================================================
--- trunk/Documentation/idldoc/templates/dev-help2.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/dev-help2.tt	(revision 69)
@@ -0,0 +1,446 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- Template needs structure with the following fields:
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       idldoc_syntax_filename : file containing IDLdoc output for the idldoc routine
+       navbar_filename : filename of navbar template
+       footer : filename of footer file to include
+       tagline_filename : filename of tagline template
+     Plus stuff needed by the templates: navbar, tagline
+-->
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>IDLdoc Developer's Help ([% title %])</title>
+
+    [% IF embed %]
+    <style type="text/css" media="all">
+         [% INCLUDE css_location %]
+    </style>	
+    <style type="text/css" media="print">
+         [% INCLUDE print_css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" href="[% root %]/main_files.css" media="all"/>
+    <link rel="stylesheet" type="text/css" href="[% root %]/main_files_print.css" media="print"/>
+    [% END %]
+
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="IDLdoc Developer's Help ([% title %])";
+      }
+    </script>
+  </head>
+
+
+  <body onload="setTitle();">
+    
+    [% INCLUDE_TEMPLATE navbar_filename %]
+    
+    <div id="container">
+
+      <h1>Modifying IDLdoc's output</h1>
+
+      <p>This guide discusses how to modify the output from IDLdoc by
+      modifying the template files (*.tt) that are provided with
+      IDLdoc. Currently, only the templates directly documenting *.pro
+      files (pro-file.tt), templates included by pro-file.tt
+      (navbar.tt and tagline.tt) and objects implementing the template
+      interface used by pro-file.tt (IDLdocRoutine and IDLdocParam)
+      are documented for user customization. The plans is to release
+      the documentation for other templates as they become more stable
+      in future releases of IDLdoc.</p>
+
+      <p>In general, if one of the below variables is not
+      defined/not-appropriate it will be set to '' or -1.</p>
+
+      <h2>navbar.tt</h2>
+
+      <p>This template is included by many other templates requiring
+      those templates to provide the following variables:</p>
+
+      <dl class="variables">
+	<dt>title</dt>
+	<dd>title of the IDLdoc library</dd>
+
+	<dt>subtitle</dt>
+	<dd>subtitle of the IDLdoc library</dd>
+
+	<dt>categories_href</dt>
+	<dd>relative link to the categories page</dd>
+
+	<dt>categories_selected</dt>
+	<dd>boolean on whether the current page is the categories page</dd>
+
+	<dt>dir_overview_href</dt>
+	<dd>relative link to the directory overview page</dd>
+
+	<dt>dir_overview_selected</dt>
+	<dd>boolean on whether the current page is the directory overview page</dd>
+
+	<dt>etc_selected</dt>
+	<dd>boolean on whether the current page is an "Etc" page</dd>
+
+	<dt>file_selected</dt>
+	<dd>boolean on whether the current page is documentation of a PRO or SAV file</dd>
+
+	<dt>help_href</dt>
+	<dd>relative link to the help page</dd>
+
+	<dt>help_selected</dt>
+	<dd>boolean on whether the current page is the help page</dd>
+
+	<dt>index_href</dt>
+	<dd>relative link to the full index</dd>
+
+	<dt>index_selected</dt>
+	<dd>boolean on whether the current page is the full index page</dd>
+
+	<dt>overview_href</dt>
+	<dd>relative link to the library overview page</dd>
+
+	<dt>overview_selected</dt>
+	<dd>boolean on whether the current page is the library overview page</dd>
+
+	<dt>search_href</dt>
+	<dd>relative link to the search page</dd>
+
+	<dt>search_selected</dt>
+	<dd>boolean on whether the current page is the search page</dd>
+
+	<dt>source_href</dt>
+	<dd>relative link to the source code of a PRO file</dd>
+
+	<dt>source_selected</dt>
+	<dd>boolean on whether the current page is a source code page</dd>
+
+	<dt>user</dt>
+	<dd>boolean on whether the current documentation is generated for a user (as opposed to a developer)</dd>
+
+	<dt>prev_file_href</dt>
+	<dd>relative link to the previous PRO or SAV file page</dd>
+
+	<dt>next_file_href</dt>
+	<dd>relative link the next PRO or SAV file page</dd>
+
+	<dt>view_single_page_href</dt>
+	<dd>link to the current page</dd>
+
+	<dt>view_frames_href</dt>
+	<dd>link to the library index.html page</dd>
+
+	<dt>summary_fields_href</dt>
+	<dd>internal link to the fields summary; '' if no fields</dd>
+
+	<dt>summary_routine_href</dt>
+	<dd>internal link to the routine summary, '' if only one routine</dd>
+
+	<dt>details_routine_href</dt>
+	<dd>internal link to the start of the routine details</dd>
+      </dl>
+
+      <h2>tagline.tt</h2>
+
+      <p>This template is included by many other templates requiring
+      those templates to provide the following variables:</p>
+
+      <dl class="variables">
+	<dt>version</dt>
+	<dd>IDLdoc version as a string</dd>
+       
+	<dt>date</dt>
+	<dd>string containing date of file creation</dd>
+      </dl>
+
+
+      <h2>pro-file.tt</h2>
+
+      <p>This file produces the output for the documentation of IDL
+      source code files. Variables provided to this template are all
+      those required by the navbar.tt and tagline.tt templates and
+      those listed below:</p>
+
+      <dl class="variables">
+	<dt>has_fields</dt>
+	<dd>base filename</dd>
+
+	<dt>is_class</dt>
+	<dd>boolean on whether this file corresponds to a class definition (and class variable is present)</dd>
+
+	<dt>class</dt>
+	<dd>IDLdocClass object</dd>
+
+	<dt>fields</dt>
+	<dd>base filename</dd>
+
+	<dt>pro_file</dt>
+	<dd>base filename</dd>
+
+	<dt>pro_dir</dt>
+	<dd>directory for file</dd>
+
+	<dt>root</dt>
+	<dd>relative path to the root of the library</dd>
+
+	<dt>last_modified</dt>
+	<dd>date last modified as a string</dd>
+
+	<dt>file_comments</dt>
+	<dd>file level comments</dd>
+
+	<dt>nroutines</dt>
+	<dd>number of IDLdocRoutine objects in routines array</dd>
+
+	<dt>routines</dt> 
+	<dd>array of IDLdocRoutine objects; see below for variables in
+	these objects</dd>
+
+	<dt>nonavbar</dt>
+	<dd>set to 1 to indicate no navbar, otherwise set to 0</dd>
+
+	<dt>navbar_filename</dt> 
+	<dd>filename of navbar template; appropriate for
+	INCLUDE_TEMPLATE directive</dd>
+
+	<dt>embed</dt>
+	<dd>0 for link to CSS, 1 for embed CSS</dd>
+       
+	<dt>css_location</dt>
+	<dd>if embed then string filename of CSS file location, o/w
+	href to CSS file; for all media types</dd>
+
+	<dt>print_css_location</dt>
+	<dd>if embed then string filename of CSS file location, o/w
+	href to CSS file; for printing only</dd>
+
+	<dt>footer</dt>
+	<dd>filename of user-created footer to insert; appropriate for
+	the INCLUDE directive</dd>
+
+	<dt>separator</dt>
+	<dd>correct path separator, / or \ depending on Unix or
+	Windows system</dd>
+
+	<dt>tagline_filename</dt>
+	<dd>name of template for the bottom of the file; appropriate
+	for the INCLUDE_TEMPLATE directive</dd>
+      </dl>
+
+
+      <h3>IDLdocRoutine objects in pro-file.tt</h3>
+
+      <dl class="variables">
+	<dt>routine_name</dt>
+	<dd>string name of the routine</dd>
+
+	<dt>routine_url</dt>
+	<dd>internal url to the start of the routine details</dd>
+
+	<dt>is_func</dt>
+	<dd>boolean on whether the routine is a function</dd>
+
+	<dt>obsolete</dt>
+	<dd>boolean on whether the routine is marked obsolete</dd>
+
+	<dt>abstract</dt>
+	<dd>boolean on whether the routine is abstract (i.e. not implemented)</dd>
+
+	<dt>private</dt>
+	<dd>boolean on whether the routine is private (i.e. not visible in USER mode)</dd>
+
+	<dt>categories_present</dt>
+	<dd>boolean on whether the routine is marked with categories</dd>
+
+	<dt>categories</dt>
+	<dd>string array of list of categories as listed in the source</dd>
+
+	<dt>ntotalparams</dt>
+	<dd>total number of positional parameters and keywords</dd>
+
+	<dt>nparams</dt>
+	<dd>number of positional parameters</dd>
+
+	<dt>params</dt>
+	<dd>array of IDLdocParam objects</dd>
+
+	<dt>nkeywords</dt>
+	<dd>number of keywords</dd>
+
+	<dt>keywords</dt>
+	<dd>array of IDLdocParam objects</dd>
+
+	<dt>short_comment</dt>
+	<dd>first sentence of the routine comments</dd>
+
+	<dt>statistics</dt>
+	<dd>boolean on whether the McCabe complexity statistics have been calculated</dd>
+
+	<dt>mccabe_cyclic</dt>
+	<dd>McCabe Cyclic complexity (computed)</dd>
+
+	<dt>mccabe_essential</dt>
+	<dd>McCabe Essential complexity (computed)</dd>
+
+	<dt>mccabe_mod_design</dt>
+	<dd>McCabe Modular Design complexity (computed)</dd>
+
+	<dt>routine_comments</dt>
+	<dd>string array of comments for the routine</dd>
+
+	<dt>preformat</dt>
+	<dd>true if the comments are to be stripped from the source code and placed in the output with the same line breaks and formatting as the source code</dd>
+
+	<dt>returns_present</dt>
+	<dd>boolean on whether the returns tag is present</dd>
+
+	<dt>returns</dt>
+	<dd>documents the return value of a function</dd>
+
+	<dt>examples_present</dt>
+	<dd>boolean on whether the examples tag is present</dd>
+
+	<dt>examples</dt>
+	<dd>string array of example code using the routine</dd>
+
+	<dt>author_present</dt>
+	<dd>boolean on whether the author tag is present</dd>
+
+	<dt>author</dt>
+	<dd>author(s) of the routine</dd>
+
+	<dt>version_present</dt>
+	<dd>boolean on whether the version tag is present</dd>
+
+	<dt>version</dt>
+	<dd>version of the routine</dd>
+
+	<dt>history_present</dt>
+	<dd>boolean on whether the history tag is present</dd>
+
+	<dt>history</dt>
+	<dd>string array of history of the routine</dd>
+
+	<dt>copyright_present</dt>
+	<dd>boolean on whether the copyright tag is present</dd>
+
+	<dt>copyright</dt>
+	<dd>string array of copyright information about the routine</dd>
+
+	<dt>obsolete_comments_present</dt>
+	<dd>boolean on whether the obsolete tag is present</dd>
+
+	<dt>obsolete_comments</dt>
+	<dd>comments following the obsolete tag and further explaining the status of the routine (and alternatives)</dd>
+
+	<dt>bugs_present</dt>
+	<dd>boolean on whether the bugs tag is present</dd>
+
+	<dt>bugs</dt>
+	<dd>string array describing known issues with the routine</dd>
+
+	<dt>todo_present</dt>
+	<dd>boolean on whether the todo tag is present</dd>
+
+	<dt>todo</dt>
+	<dd>string array of items that still need to be done for the routine</dd>
+
+	<dt>restrictions_present</dt>
+	<dd>boolean on whether the restrictions tag is present</dd>
+
+	<dt>restrictions</dt>
+	<dd>restrictions on the use of the routine</dd>
+
+	<dt>inherits_present</dt>
+	<dd>boolean on whether the inherits tag is present</dd>
+
+	<dt>inherits</dt>
+	<dd>desribes other classes the class inherits from (this is not needed any longer)</dd>
+
+	<dt>requires_present</dt>
+	<dd>boolean on whether the requires tag is present</dd>
+
+	<dt>requires</dt>
+	<dd>which IDL verion is necessary to run this routine</dd>
+
+	<dt>uses_present</dt>
+	<dd>boolean on whether the uses tag is present</dd>
+
+	<dt>uses</dt>
+	<dd>which routines this routine calls</dd>
+
+	<dt>common_blocks_present</dt>
+	<dd>boolean on whether the common block information is present</dd>
+
+	<dt>common_blocks</dt>
+	<dd>names of common blocks used by routine</dd>
+
+	<dt>precondition_present</dt>
+	<dd>boolean on whether the routine is marked with a precondition tag</dd>
+
+	<dt>precondition</dt>
+	<dd>condition that should be satisfied before the routine is executed</dd>
+
+	<dt>postcondition_present</dt>
+	<dd>boolean on whether the routine is marked with a postcondition tag</dd>
+
+	<dt>postcondition</dt>
+	<dd>condition that should be satisfied after the routine is executed</dd>
+
+      </dl>
+
+
+      <h3>IDLdocParam objects in pro-file.tt</h3>
+
+      <dl class="variables">
+	<dt>name</dt>
+	<dd>name of the parameter</dd>
+
+	<dt>in</dt>
+	<dd>true if parameter is an input to the routine</dd>
+
+	<dt>out</dt>
+	<dd>true if the parameter is an output to the routine</dd>
+
+	<dt>optional</dt>
+	<dd>true if parameter is optional</dd>
+
+	<dt>required</dt>
+	<dd>true if parameter is required</dd>
+
+	<dt>private</dt>
+	<dd>hidden if parameter is supposed to be hidden from users of the routine, but visible to developers</dd>
+
+	<dt>hidden</dt>
+	<dd>true if parameter is supposed to be hidden</dd>
+
+	<dt>type</dt>
+	<dd>data type of the parameter</dd>
+
+	<dt>boolean</dt>
+	<dd>true if the param is a switch</dd>
+
+	<dt>default</dt>
+	<dd>default value of the parameter</dd>
+
+	<dt>comments</dt>
+	<dd>string array of comments for parameter</dd>
+
+	<dt>delim</dt>
+	<dd>appropriate delimiter preceeding parameter in a syntax listing of the routine (i.e. always a comma unless it's the first parameter of a function call)</dd>
+      </dl>
+
+      [% IF footer NE '' %]<div id="footer">[% INCLUDE footer %]</div>[% END %]
+
+      [% INCLUDE_TEMPLATE tagline_filename %]
+      
+    </div>
+    
+  </body>
+</html>
Index: trunk/Documentation/idldoc/templates/dir-files.tt
===================================================================
--- trunk/Documentation/idldoc/templates/dir-files.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/dir-files.tt	(revision 69)
@@ -0,0 +1,46 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>[% dirname %]</title>
+    [% IF embed %]
+    <style type="text/css">
+      [% INCLUDE css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" href="[% root %]listings.css" />
+    [% END %]
+  </head>
+
+  <body>
+    <div id="container">
+      <h1><a href="[% dirurl %]" target="file_frame">[% dirname %]</a></h1>
+
+      [% IF nfiles gt 0 %]
+      <ul>
+	[% FOREACH file IN files %]
+	<li><a href="[% file.url %]" target="file_frame">[% file.name %]</a></li>[% END %]
+      </ul>
+      
+      <div id="tagline">[% strtrim(nfiles, 2) %] file[% nfiles gt 1 ? "s" : "" %]</div>
+      [% END %]
+
+      [% IF nsavfiles gt 0 %]
+      <h1>SAV files</h1>
+      
+      <ul>
+	[% FOREACH s IN savfiles %]
+	<li><a href="[% s.url %]" target="file_frame">[% s.name %]</a></li>[% END %]
+      </ul>
+
+      <div id="tagline">[% strtrim(nsavfiles, 2) %] file[% nsavfiles gt 1 ? "s" : "" %]</div>
+      
+      [% END %]
+    </div>
+  </body>
+</html>
Index: trunk/Documentation/idldoc/templates/dir-overview.tt
===================================================================
--- trunk/Documentation/idldoc/templates/dir-overview.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/dir-overview.tt	(revision 69)
@@ -0,0 +1,68 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>[% directory %] ([% title %])</title>
+
+    [% IF embed %]
+    <style type="text/css" media="all">
+         [% INCLUDE css_location %]
+    </style>	
+    <style type="text/css" media="print">
+         [% INCLUDE print_css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" href="[% root %]main_files.css" media="all"/>
+    <link rel="stylesheet" type="text/css" href="[% root %]main_files_print.css" media="print"/>
+    [% END %]
+
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="[% directory %] ([% title %])";
+      }
+    </script>
+  </head>
+
+
+  <body onload="setTitle();">
+    
+    [% INCLUDE_TEMPLATE navbar_filename %]
+    
+    <div id="container">
+
+      <h1>Directory overview for [% directory %]</h1>
+ 
+      [% comments %]
+
+      [% IF nprofiles gt 0 %]
+      <h2>File summary</h2>
+
+      <dl>
+      [% FOREACH p in profiles %]
+	<dt><a href="[% p.url %]">[% p.name %]</a></dt>
+	<dd>[% p.comment %]</dd>
+      [% END %]
+      </dl>
+      [% END %]
+
+      [% IF nsavfiles gt 0 %]
+      <h2>SAV files</h2>
+      
+      <dl>
+	[% FOREACH s IN savfiles %]
+	<dt><a href="[% s.url %]" target="file_frame">[% s.name %]</a></dt>[% END %]
+      </dl>
+      [% END %]
+
+      [% IF footer NE '' %]<div id="footer">[% INCLUDE footer %]</div>[% END %]
+
+      [% INCLUDE_TEMPLATE tagline_filename %]
+      
+    </div>
+    
+  </body>
+</html>
Index: trunk/Documentation/idldoc/templates/etc.tt
===================================================================
--- trunk/Documentation/idldoc/templates/etc.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/etc.tt	(revision 69)
@@ -0,0 +1,57 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<!-- Template needs structure with the following fields:
+       include_filename : filename of the main content file to be included
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       navbar_filename : filename of navbar template
+       footer : filename of footer file to include
+       tagline_filename : filename of tagline template
+     Plus fields needed by the templates: navbar, tagline
+-->
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>Etc ([% title %])</title>
+
+    [% IF embed %]
+    <style type="text/css" media="all">
+         [% INCLUDE css_location %]
+    </style>	
+    <style type="text/css" media="print">
+         [% INCLUDE print_css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" href="[% css_location %]" media="all"/>
+    <link rel="stylesheet" type="text/css" href="[% print_css_location %]" media="print"/>
+    [% END %]
+    
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="Etc ([% title %])";
+      }
+    </script>
+  </head>
+
+  <body onload="setTitle();">
+
+    [% INCLUDE_TEMPLATE navbar_filename %]
+
+    <div id="container">
+
+      [% INCLUDE include_filename %]
+
+      [% IF footer NE '' %]<div id="footer">[% INCLUDE footer %]</div>[% END %]
+
+      [% INCLUDE_TEMPLATE tagline_filename %]
+	
+    </div>
+    
+  </body>
+</html>
Index: trunk/Documentation/idldoc/templates/full-index-begin.tt
===================================================================
--- trunk/Documentation/idldoc/templates/full-index-begin.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/full-index-begin.tt	(revision 69)
@@ -0,0 +1,74 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- full-index-begin.tt needs structure with the following fields:
+       letters : array of structures { letter:'', url:'' }
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       overview_comments : general comments in the overview file, if any
+       ndirs : number of directories
+       dirs : array of structures with fields { name:'', url:'', parity:'', comment:'' }
+       navbar_filename : filename of navbar template
+       footer : filename of footer file to include
+       tagline_filename : filename of tagline template
+     Plus fields needed by the templates: navbar, tagline
+-->
+
+<!-- full-index-letter.tt needs structure with the following fields:
+       letter : letter as a string
+       items : array of structure { name:'', url:'', description:'' }
+-->
+
+<!-- full-index-end.tt needs structure with the following fields:
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       overview_comments : general comments in the overview file, if any
+       ndirs : number of directories
+       dirs : array of structures with fields { name:'', url:'', parity:'', comment:'' }
+       navbar_filename : filename of navbar template
+       footer : filename of footer file to include
+       tagline_filename : filename of tagline template
+     Plus fields needed by the templates: navbar, tagline
+-->
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>Index ([% title %])</title>
+
+    [% IF embed %]
+    <style type="text/css" media="all">
+         [% INCLUDE css_location %]
+    </style>	
+    <style type="text/css" media="print">
+         [% INCLUDE print_css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" href="[% root %]/main_files.css" media="all"/>
+    <link rel="stylesheet" type="text/css" href="[% root %]/main_files_print.css" media="print"/>
+    [% END %]
+
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="Index ([% title %])";
+      }
+    </script>
+  </head>
+
+  <body onload="setTitle();">
+
+    [% INCLUDE_TEMPLATE navbar_filename %]
+
+    <div id="container">
+
+      <h1>Index</h1>
+
+      [% FOREACH l IN letters %]
+      <a href="[% l.url %]">[% l.letter %]</a>
+      [% END %]
Index: trunk/Documentation/idldoc/templates/full-index-end.tt
===================================================================
--- trunk/Documentation/idldoc/templates/full-index-end.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/full-index-end.tt	(revision 69)
@@ -0,0 +1,9 @@
+
+      [% IF footer NE '' %]<div id="footer">[% INCLUDE footer %]</div>[% END %]
+
+      [% INCLUDE_TEMPLATE tagline_filename %]
+
+    </div>
+    
+  </body>
+</html>
Index: trunk/Documentation/idldoc/templates/full-index-letter.tt
===================================================================
--- trunk/Documentation/idldoc/templates/full-index-letter.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/full-index-letter.tt	(revision 69)
@@ -0,0 +1,7 @@
+      <h5 id="_[% letter %]" class="index_letter">[% letter %]</h5>
+      <dl>
+	[% FOREACH item IN items %]
+	<dt><a href="[% item.url %]">[% item.name %]</a></dt>
+	<dd>[% item.description %]</dd>
+	[% END %]
+      </dl>
Index: trunk/Documentation/idldoc/templates/full-index.tt
===================================================================
--- trunk/Documentation/idldoc/templates/full-index.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/full-index.tt	(revision 69)
@@ -0,0 +1,62 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>Index ([% title %])</title>
+
+    [% IF embed %]
+    <style type="text/css" media="all">
+         [% INCLUDE css_location %]
+    </style>	
+    <style type="text/css" media="print">
+         [% INCLUDE print_css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" href="[% css_location %]" media="all"/>
+    <link rel="stylesheet" type="text/css" href="[% print_css_location %]" media="print"/>
+    [% END %]
+
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="Index ([% title %])";
+      }
+    </script>
+  </head>
+
+  <body onload="setTitle();">
+
+    [% INCLUDE_TEMPLATE navbar_filename %]
+
+    <div id="container">
+
+      <h1>Index</h1>
+
+      [% IF empty %]<h2>No entries in index.</h2>[% ELSE %]
+
+      [% FOREACH l IN letters %]
+      <a href="[% l.url %]">[% l.letter %]</a>
+      [% END %]
+
+
+      <h5 id="_[% letter %]" class="index_letter">[% letter %]</h5>
+      <dl>
+	[% FOREACH item IN items %]
+	<dt><a href="[% item.url %]">[% item.name %]</a></dt>
+	<dd>[% item.description %]</dd>
+	[% END %]
+      </dl>
+
+      [% END %]
+
+      [% IF footer NE '' %]<div id="footer">[% INCLUDE footer %]</div>[% END %]
+
+      [% INCLUDE_TEMPLATE tagline_filename %]
+
+    </div>
+    
+  </body>
+</html>
Index: trunk/Documentation/idldoc/templates/help.tt
===================================================================
--- trunk/Documentation/idldoc/templates/help.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/help.tt	(revision 69)
@@ -0,0 +1,210 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- Template needs structure with the following fields:
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       navbar_filename : filename of navbar template
+       footer : filename of footer file to include
+       tagline_filename : filename of tagline template
+     Plus fields needed by the templates: navbar, tagline
+-->
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>IDLdoc Help ([% title %])</title>
+
+    [% IF embed %]
+    <style type="text/css" media="all">
+         [% INCLUDE css_location %]
+    </style>	
+    <style type="text/css" media="print">
+         [% INCLUDE print_css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" href="[% root %]/main_files.css" media="all"/>
+    <link rel="stylesheet" type="text/css" href="[% root %]/main_files_print.css" media="print"/>
+    [% END %]
+
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="Help ([% title %])";
+      }
+    </script>
+  </head>
+
+  <body onload="setTitle();">
+
+    [% INCLUDE_TEMPLATE navbar_filename %]
+
+    <div id="container">
+
+      <div class="toc small">
+	<ol class="toc">
+	  <li><a href="idldoc-help.html">Help for users of an IDLdoc'ed library</a></li>
+	  <li><a href="idldoc-dev-help.html">Basic markup of code</a></li>
+	  <li><a href="idldoc-dev-help2.html">Modifying IDLdoc output</a></li>
+	</ol>
+      </div>
+
+      <h1>Help on IDLdoc output</h1>
+
+      <p>The following information is provides documentation in
+      interpreting the results of the output of IDLdoc. For
+      documentation on marking up IDL code to better use IDLdoc's
+      capabilities, see the <a href="idldoc-dev-help.html">developer's
+      help</a> or the <a href="idldoc-dev-help2.html">advanced developer's help</a>.</p>
+      
+      <h2>File summary</h2>
+      
+      <p>The file summary includes a the class hierarchy diagram for
+      files with names ending in __define, a list of various
+      attributes of the file, and a description.</p>
+      
+      <h2>Field summary</h2>
+      
+      <p>If the filename of PRO file ends in __define, then the fields
+      defined in the routine of the same name are listed with their
+      type and any comments provided by the developer. Following this
+      listing are separate listings for each parent class of the
+      class/structure with a list of their fields with types.</p>
+
+      <h2>Routine summary</h2>
+      
+      <p>The routine summary simply provides the calling sequence for
+      each routine in the file (in the same syntax is the online help
+      for IDL) and the first sentence of the detailed description for
+      each routine in the file.</p>
+
+      <h2>Routine details</h2>
+      
+      <p>The routine details sections gives a possibly longer
+      description of the routine as well as a tables of the parameters
+      and keywords accepted by the routine. Also listed are various
+      attributes of the routine.</p>
+
+      <p>All the parameters and keywords of the routine will be in
+      these tables regardless if they have been commented using IDLdoc
+      (though the developer can hide parameters and keywords if they
+      chose).</p>
+      
+      <h3>Routine attributes</h3>
+
+      <p>A routine can be marked with various attributes described in
+      the below table.</p>
+      
+      <table class="basic" cellspacing="0">
+        <tr>
+          <th>Attribute</th>
+          <th>Description</th>
+        </tr>
+        <tr>
+          <td><h2 style="padding-top: 0; margin-top: 0.1em;"><span class="warning">abstract</span></h2></td>
+          <td>
+	    The routine name will be italicized if the routine is
+	    marked "abstract" (meaning it is not implemented, it is
+	    provided for its interface only).  This is generally used
+	    in only object-oriented programming.
+          </td>
+        </tr>
+        <tr>
+          <td><h2 style="padding-top: 0; margin-top: 0.1em;"><span class="warning">private</span></h2></td>
+          <td>
+	    This routine is not intended to be called except by other
+	    routines in the same file. In other words it is a "helper
+	    routine". Private routines are only seen if the library is
+	    IDLdoc'ed in "developer" mode.
+          </td>
+        </tr>
+        <tr>
+          <td><h2 style="padding-top: 0; margin-top: 0.1em;"><span class="warning">obsolete</span></h2></td>
+          <td>
+	    This routine is no longer supported by the library
+	    maintainer.
+          </td>
+        </tr>
+        <tr>
+          <td><h2 style="padding-top: 0; margin-top: 0.1em;"><span class="categories">categories</span></h2></td>
+          <td>
+	    The names of any categories for the routine are listed.
+          </td>
+        </tr>
+      </table>
+
+      <h3>Parameter and keyword attributes</h3>
+
+      <p>A parameter or keyword can be marked with various attributes
+      described in the below table.</p>
+      
+      <table class="basic" cellspacing="0">
+        <tr>
+          <th>Attribute</th>
+          <th>Description</th>
+        </tr>
+        <tr>
+          <td><span class="attr">in</span></td>
+          <td>
+	    Indicates that the argument is intended to be passed into
+	    the routine.
+          </td>
+        </tr>
+        <tr>
+          <td><span class="attr">out</span></td>
+          <td>
+	    Indicates that the argument is intended to be used to pass
+	    a value out of the routine. A named variable must be
+	    passed to the routine to pass a value back to the calling
+	    level.
+          </td>
+        </tr>
+        <tr>
+          <td><span class="attr">optional</span></td>
+          <td>
+	    This attribute indicates the argument is optional;
+	    optional parameters and keywords are also placed inside
+	    brackets ([]) in the routine summary.
+          </td>
+        </tr>
+        <tr>
+          <td><span class="attr">required</span></td>
+          <td>Indicates the argument is required</td>
+        </tr>
+        <tr>
+          <td><span class="attr">type</span></td>
+          <td>
+	    Type indicates the IDL type of the variable.  Can be used
+	    indicate a group of types, a specific type, an array of a
+	    certain type, etc.  Boolean keywords are indicated by a
+	    /KEYWORD_NAME in the routine summary.
+          </td>
+        </tr>
+        <tr>
+          <td><span class="attr">default</span></td>
+          <td>
+	    Default indicates the default value for an optional
+	    parameter or keyword.
+          </td>
+        </tr>
+        <tr>
+          <td><span class="attr">private</span></td>
+          <td>
+	    This parameter is not intended to be used in calls except
+	    by other routines in the same file. Private parameters are
+	    only seen if the library is IDLdoc'ed in "developer" mode.
+          </td>
+        </tr>
+      </table>
+
+      [% IF footer NE '' %]<div id="footer">[% INCLUDE footer %]</div>[% END %]
+
+      [% INCLUDE_TEMPLATE tagline_filename %]
+
+      </div>
+    </body>
+</html>
+
Index: trunk/Documentation/idldoc/templates/idla-navbar.tt
===================================================================
--- trunk/Documentation/idldoc/templates/idla-navbar.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/idla-navbar.tt	(revision 69)
@@ -0,0 +1,46 @@
+
+<!-- Navbar template takes a structure with the following fields:
+       overview_href : 
+       overview_selected :
+       dir_overview_href :
+       dir_overview_selected :
+       categories_href : 
+       categories_selected : 
+       index_href :
+       index_selected :
+       search_href :
+       search_selected :
+       file_selected :
+       source_href :
+       source_selected :
+       help_href :
+       help_selected :
+       etc_selected :
+
+       prev_file_href :
+       next_file_href :
+
+       view_single_page_href :
+       view_frames_href :
+
+       summary_fields_href :
+       summary_routine_href :
+       details_routine_href :
+
+       title :
+       subtitle :
+       user :
+-->
+
+[% IF ~nonavbar %]
+<table border="0" cellpadding="0" cellspacing="0" width="98%" bgcolor="#F0F0FF" valign="bottom">
+  <tr> 
+    <td width="10%">
+<a href="[% prev_file_href %]"><img src="[% root %]prev.gif" border="0" alt="Previous"></a></td>
+    <td width="80%" align="center" valign="center">
+<font size=-1><i>[% title %]</i>: <a href="[% overview_href %]">Overview</a></font></td>
+    <td width="10%" align="right">
+<a href="[% next_file_href%]"><img src="[% root %]next.gif" border="0" alt="Next"></a></td>
+  </tr>
+</table>
+[% END %]
Index: trunk/Documentation/idldoc/templates/idla-overview.tt
===================================================================
--- trunk/Documentation/idldoc/templates/idla-overview.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/idla-overview.tt	(revision 69)
@@ -0,0 +1,51 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- Template needs structure with the following fields:
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       overview_comments : general comments in the overview file, if any
+       ndirs : number of directories
+       dirs : array of structures with fields { name:'', url:'', parity:'', comment:'' }
+       navbar_filename : filename of navbar template
+       footer : filename of footer file to include
+       tagline_filename : filename of tagline template
+     Plus fields needed by the templates: navbar, tagline
+-->
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>Overview</title>
+  </head>
+
+  <body text="#000000" bgcolor="#FFFFFF">
+
+    [% INCLUDE_TEMPLATE navbar_filename %]
+
+    <h1>Overview</h1>
+      
+    [% overview_comments %]
+    
+    [% IF ndirs gt 0 %]
+    <h2>Directories</h2>
+    <table>
+      [% FOREACH dir IN dirs %] 
+      <tr>
+	<td><a href="[% dir.url %]" target="dir_frame">[% dir.name %]</a></td>
+	<td>[% dir.comment %]</td>
+      </tr>	
+      [% END %]
+    </table>      
+    [% END %]
+    
+    <br/>
+    [% IF footer NE '' %]<center><font size="-2">[% INCLUDE footer %]</font></center>[% END %]
+    
+    [% INCLUDE_TEMPLATE tagline_filename %]	    
+  </body>
+</html>
Index: trunk/Documentation/idldoc/templates/idla-pro-file.tt
===================================================================
--- trunk/Documentation/idldoc/templates/idla-pro-file.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/idla-pro-file.tt	(revision 69)
@@ -0,0 +1,116 @@
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>[% pro_file %] ([% title %])</title>
+  </head>
+
+  <body text="#000000" bgcolor="#FFFFFF">
+
+    [% INCLUDE_TEMPLATE navbar_filename %]
+
+    <h1><font size="-2">[% pro_dir %]</font></h1>
+    <h2>[% pro_file %]</h2>
+    
+    <dl>
+      <dt><b>Last modification:</b></dt>
+      <dd>[% last_modified %]</dd>
+    </dl>
+    
+    [% file_comments %]
+    
+    [% IF nroutines gt 1 %]
+    <h2>Routine summary</h2>
+    
+    <dl>
+      [% FOREACH r IN routines %][% SCOPE r %]
+      <dt><a href="[% routine_url %]">[% IF is_func %]<i>result = </i>[% END %][% routine_name %][% IF is_func %]([% END %][% IF nparams gt 0 %]<i>[% FOREACH p IN params %][% SCOPE p %][% IF optional %][[% END %][% delim %][% name %][% IF optional %]][% END %][% END %][% END %]</i>[% END %][% IF nkeywords gt 0 %][% FOREACH k IN keywords %][% SCOPE k %][% IF optional %][[% END %][% delim %][% IF boolean && ~out %]/[% name %][% ELSE %][% name %]=<i>[% out ? "variable" : (type eq '' ? name : type) %]</i>[% END %][% IF optional %]][% END %][% END %][% END %][% END %][% IF is_func %])[% END %]</a><dt>
+      <dd><font size="-1">[% short_comment %]</font></dd>
+      [% END %][% END %]
+    </dl>
+
+    <p>&nbsp;</p>
+    [% END %]
+
+      [% FOREACH r IN routines %][% SCOPE r %]
+      <a name="[% routine_url %]"></a>
+
+      <h2>[% routine_name %] [% IF obsolete %]<font size="-1" color="#FF6633">obsolete</font>[% END %][% IF obsolete && private %]<font size="-1" color="#FF6633">, </font>[% END %][% IF private %]<font size="-1" color="#FF6633">private</font>[% END %] [% IF categories_present %]<font size="-1" color="#006633">[% categories %]</font>[% END%]</h2>
+
+      <p><font face="Courier">[% IF is_func %]<i>result = </i>[% END %][% routine_name %][% IF is_func %]([% END %][% IF nparams gt 0 %]<i>[% FOREACH p IN params %][% SCOPE p %][% IF optional %][[% END %][% delim %]<a href="[% routine_url %]_param_[% name %]">[% name %]</a>[% IF optional %]][% END %][% END %][% END %]</i>[% END %][% IF nkeywords gt 0 %][% FOREACH k IN keywords %][% SCOPE k %][% IF optional %][[% END %][% delim %][% IF boolean && ~out %]/<a href="[% routine_url %]_keyword_[% name %]">[% name %]</a>[% ELSE %]<a href="[% routine_url %]_keyword_[% name %]">[% name %]</a>=<i>[% out ? "variable" : (type eq '' ? name : type) %]</i>[% END %][% IF optional %]][% END %][% END %][% END %][% END %][% IF is_func %])[% END %]</font></p>
+
+    [% IF preformat %]<pre>[% END %][% routine_comments %][% IF preformat %]</pre>[% END %]
+
+    [% IF returns_present %]<h3>Return value</h3>[% returns %][% END %]
+
+    [% IF nparams gt 0 %]
+    <h3>Parameters</h3>
+    [% FOREACH p IN params %][% SCOPE p %]
+
+    <a name="[% routine_url %]_[% IF keyword %]keyword[% ELSE %]param[% END %]_[% name %]"></a>
+    <h4>[% name %]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+      [% IF in %]<font size="-1" color="#006633">in</font>[% END %]
+      [% IF out %]<font size="-1" color="#006633">out</font>[% END %]
+      [% IF optional %]<font size="-1" color="#006633">optional</font>[% END %]
+      [% IF required %]<font size="-1" color="#006633">required</font>[% END %]
+      [% IF private %]<font size="-1" color="#006633">private</font>[% END %]
+      [% IF type ne '' %]<font size="-1" color="#006633">type:</font> <font size="-1" color="#006633"><i>[% type %]</i></font>[% END %]
+      [% IF default ne '' %]<font size="-1" color="#006633">default:</font> <font size="-1" color="#006633"><i>[% default %]</i></font>[% END %]
+      [% IF ~comments_present %]<font size="-1" color="#FF6633">undocumented</font>[% END %]
+    </h4>
+    
+    [% comments %]
+    [% END %][% END %]
+    [% END %]
+
+    [% IF nkeywords gt 0 %]
+    <h3>Keywords</h3>
+    
+    [% FOREACH k IN keywords %][% SCOPE k %]
+    <a name="[% routine_url %]_[% IF keyword %]keyword[% ELSE %]param[% END %]_[% name %]"></a>
+    <h4>[% name %]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+      [% IF in %]<font size="-1" color="#006633">in</font>[% END %]
+      [% IF out %]<font size="-1" color="#006633">out</font>[% END %]
+      [% IF optional %]<font size="-1" color="#006633">optional</font>[% END %]
+      [% IF required %]<font size="-1" color="#006633">required</font>[% END %]
+      [% IF private %]<font size="-1" color="#006633">private</font>[% END %]
+      [% IF type ne '' %]<font size="-1" color="#006633">type:</font> <font size="-1" color="#006633"><i>[% type %]</i></font>[% END %]
+      [% IF default ne '' %]<font size="-1" color="#006633">default:</font> <font size="-1" color="#006633"><i>[% default %]</i></font>[% END %]
+      [% IF ~comments_present %]<font size="-1" color="#FF6633">undocumented</font>[% END %]
+    </h4>
+    
+    [% comments %]
+    [% END %][% END %]
+    [% END %]
+
+    [% IF examples_present %]<h3>Examples</h3>[% examples %][% END %]
+    [% IF author_present || version_present || history_present || copyright_present %]<h3>Version history</h3>[% END %]
+    [% IF author_present %]<h4>Author</h4>[% author %][% END %]
+    [% IF version_present %]<h4>Version</h4>[% version %][% END %]
+    [% IF history_present %]<h4>History</h4>[% history %][% END %]
+    [% IF copyright_present %]<h4>Copyright</h4>[% copyright %][% END %]
+    
+    [% IF obsolete_comments_present || bugs_present || todo_present || restrictions_present %]<h3>Known issues</h3>[% END %]
+    [% IF obsolete_comments_present %]<h4>Obsolete</h4>[% obsolete_comments %][% END %]
+    [% IF bugs_present %]<h4>Known bugs</h4>[% bugs %][% END %]
+    [% IF todo_present %]<h4>Todo items</h4>[% todo %][% END %]
+    [% IF restrictions_present %]<h4>Restrictions</h4>[% restrictions %][% END %]
+    
+    [% IF inherits_present || requires_present || uses_present || precondition_present || postcondition_present || common_blocks_present %]<h3>Other attributes</h3>[% END %]
+    [% IF inherits_present %]<h4>Inherits classes</h4>[% inherits %][% END %]
+    [% IF requires_present %]<h4>Requires IDL version</h4>[% requires %][% END %]
+    [% IF uses_present %]<h4>Uses routines</h4>[% uses %][% END %]
+    [% IF precondition_present %]<h4>Pre-condition</h4>[% precondition %][% END %]
+    [% IF postcondition_present %]<h4>Post-condition</h4>[% postcondition %][% END %]
+    [% IF common_blocks_present %]<h4>Common blocks used</h4>[% common_blocks %][% END %]
+    
+    <font size="-3"><p>&nbsp;</p></font>
+    <hr size="1" color="#CCCCCC"/>
+      [% END %][% END %]
+
+    [% IF footer NE '' %]<font size="-2"><center>[% INCLUDE footer %]</center></font>[% END %]
+
+    [% INCLUDE_TEMPLATE tagline_filename %]
+
+  </body>
+</html>
Index: trunk/Documentation/idldoc/templates/idla-tagline.tt
===================================================================
--- trunk/Documentation/idldoc/templates/idla-tagline.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/idla-tagline.tt	(revision 69)
@@ -0,0 +1,1 @@
+<p><font color="gray" size="-3">&nbsp;&nbsp;Produced by IDLdoc [% version %] on [% date %].</font></p>
Index: trunk/Documentation/idldoc/templates/idldoc_syntax.tt
===================================================================
--- trunk/Documentation/idldoc/templates/idldoc_syntax.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/idldoc_syntax.tt	(revision 69)
@@ -0,0 +1,198 @@
+	<div class="routine_details" id="_idldoc">
+
+	  <h2><a class="top" href="#container">top</a>idldoc</h2>
+	
+	  <p class="header">
+	    idldoc, <a href="#_idldoc_keyword_root">root</a>=<span class="result">string</span>[, <a href="#_idldoc_keyword_output">output</a>=<span class="result">string</span>][, <a href="#_idldoc_keyword_overview">overview</a>=<span class="result">string</span>][, <a href="#_idldoc_keyword_footer">footer</a>=<span class="result">string</span>][, <a href="#_idldoc_keyword_log_file">log_file</a>=<span class="result">string</span>][, /<a href="#_idldoc_keyword_user">user</a>][, /<a href="#_idldoc_keyword_quiet">quiet</a>][, /<a href="#_idldoc_keyword_silent">silent</a>][, /<a href="#_idldoc_keyword_embed">embed</a>][, /<a href="#_idldoc_keyword_nonavbar">nonavbar</a>][, <a href="#_idldoc_keyword_title">title</a>=<span class="result">string</span>][, <a href="#_idldoc_keyword_subtitle">subtitle</a>=<span class="result">string</span>][, /<a href="#_idldoc_keyword_statistics">statistics</a>][, <a href="#_idldoc_keyword_n_warnings">n_warnings</a>=<span class="result">variable</span>][, /<a href="#_idldoc_keyword_browse_routines">browse_routines</a>][, /<a href="#_idldoc_keyword_preformat">preformat</a>][, /<a href="#_idldoc_keyword_assistant">assistant</a>]</p>
+	
+	  <div class="comments">Calling routine for IDLdoc.</div>
+
+	    <h3>Keywords</h3>
+	    
+	    <h4 id="_idldoc_keyword_root">root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+  	      <span class="attr">required</span>
+	      <span class="attr">type:</span> <span class="value">string</span>
+	    </h4>
+	
+	    <div class="comments"> root directory for IDLdoc's
+            recursive search for .pro files.  IDLdoc will find any
+            files with the '.pro' suffix and include them in its file
+            listings.  Only directories with '.pro' files in them are
+            included in the directory listings.</div>
+	    
+	    <h4 id="_idldoc_keyword_output">output&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">string</span>
+	      <span class="attr">default:</span> <span class="value">same as root</span>
+	    </h4>
+	
+	    <div class="comments">
+            directory in which to create the HTML output and possible
+	    subdirectories</div>
+	    
+	    <h4 id="_idldoc_keyword_overview">overview&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">string</span>
+	    </h4>
+	
+	    <div class="comments"> filepath to a file containing the
+	    summary of the package information about each directory in
+	    the package.</div>
+	    
+	    <h4 id="_idldoc_keyword_footer">footer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">string</span>
+	    </h4>
+	
+	    <div class="comments"> filename for a footer to be placed
+	    at the bottom of files; this file can contain any valid
+	    HTML</div>
+	    
+	    <h4 id="_idldoc_keyword_log_file">log_file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">string</span>
+	    </h4>
+	
+	    <div class="comments"> set to a filename of a file to
+            contain the error messages generated by the IDLdoc run;
+            useful for automated runs of IDLdoc</div>
+	    
+	    <h4 id="_idldoc_keyword_user">user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> set to create a listing appropriate
+            for <em>users</em> of the given library hierarchy; the
+            default is to create documentation suited to developers.
+            If set private routines are not shown in the
+            documentation.</div>
+	    
+	    <h4 id="_idldoc_keyword_quiet">quiet&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> if set, print only
+	    warnings</div>
+	    
+	    <h4 id="_idldoc_keyword_silent">silent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> if set, print no
+	    messages</div>
+	    
+	    <h4 id="_idldoc_keyword_embed">embed&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> if set, embeds style sheet in each
+            HTML document; if this is not set, each HTML file will be
+            looking for the cascading style sheet idldoc.css in the
+            directory specified for the ROOT keyword</div>
+	    
+	    <h4 id="_idldoc_keyword_nonavbar">nonavbar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> set to exclude the
+	    navigation bar at the top of each page</div>
+	    
+	    <h4 id="_idldoc_keyword_title">title&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">string</span>
+	      <span class="attr">default:</span> <span class="value">Research Systems</span>
+	    </h4>
+	
+	    <div class="comments"> title of
+	    the library</div>
+	    
+	    <h4 id="_idldoc_keyword_subtitle">subtitle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">string</span>
+	      <span class="attr">default:</span> <span class="value">IDL version</span>
+	    </h4>
+	
+	    <div class="comments"> subtitle of
+	    the library</div>
+	    
+	    <h4 id="_idldoc_keyword_statistics">statistics&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> set to calculate several
+	    McCabe statistics for each routine</div>
+	    
+	    <h4 id="_idldoc_keyword_n_warnings">n_warnings&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">out</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">integer</span>
+	    </h4>
+	
+	    <div class="comments"> set to a named variable to
+	    contain the total number of warnings issued during the run</div>
+	    
+	    <h4 id="_idldoc_keyword_browse_routines">browse_routines&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> set to include a frame
+	    to browse through the routines of the current file</div>
+	    
+	    <h4 id="_idldoc_keyword_preformat">preformat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> set to produce output that
+	    will look like it does in the code files (line for line)</div>
+	    
+	    <h4 id="_idldoc_keyword_assistant">assistant&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      <span class="attr">in</span>
+	      <span class="attr">optional</span>
+	      <span class="attr">type:</span> <span class="value">boolean</span>
+	    </h4>
+	
+	    <div class="comments"> set to produce output for the
+	    IDL assistant help system instead of optimized for a web browser
+	    </div>
+	    	 
+	  <h3>Examples</h3><div class="value"> To run IDLdoc, try:
+	    <center><code>idldoc, root='C:\mycode'</code></center>
+	    where C:\mycode is the root of a directory tree containing IDL
+	    .pro files.
+	    </div>
+
+	  <h3>Version history</h3>
+
+	  <h4>Author</h4><div class="value"> Michael D. Galloy</div>
+	  
+	  <h4>Copyright</h4><div class="value"> RSI, 2002</div>
+	  
+	  <h3>Other attributes</h3>
+	  
+	  <h4>Requires IDL version</h4><div class="value"> IDL 6.0</div>
+	
+	</div>
+	
Index: trunk/Documentation/idldoc/templates/index.tt
===================================================================
--- trunk/Documentation/idldoc/templates/index.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/index.tt	(revision 69)
@@ -0,0 +1,45 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+
+<!-- Template needs structure with the following fields:
+       version : string containing the IDLdoc version
+       date : string containing date of file creation
+       title : title of the library
+       just_files : true if only one directory, so no directory frame is needed
+-->
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>[% title %]</title>
+
+    <style type="text/css" media="all">
+      frameset#nav { border-right: 1px dotted #CCCCCC; }
+    </style>
+
+    <link rel="shortcut icon" href="./idldoc.ico"/>
+  </head>
+
+  <frameset cols="20%,80%" border="1">
+    [% IF just_files %]
+    <frame id="nav" src="all-files.html" name="dir_frame"/>
+    [% ELSE %]
+    <frameset id="nav" rows="30%,70%" border="1">
+      <frame src="all-dirs.html" name="dirslist_frame"/>
+      <frame src="all-files.html" name="dir_frame"/>
+    </frameset>
+    [% END %]
+    <frame src="overview.html" name="file_frame"/>
+  </frameset>
+
+  <noframes>
+    <h2>Frame Alert</h2>
+    <p>This document is designed to be viewed using the frames feature. If you
+    see this message, you are using a non-frame-capable web client.</p>
+
+    <p>Link to <a href="overview.html">Non-frame version.</a></p>
+  </noframes>
+
+</html>
Index: trunk/Documentation/idldoc/templates/navbar.tt
===================================================================
--- trunk/Documentation/idldoc/templates/navbar.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/navbar.tt	(revision 69)
@@ -0,0 +1,68 @@
+<div id="navbar_title">
+  <h1>[% title %]</h1>
+  <h2>[% subtitle %]</h2>
+</div>
+
+[% IF ~nonavbar %]
+<div id="main_navbar">
+
+  <table cellspacing="0">
+    <tr>
+      [% IF overview_href ne '' %] 
+      <td><a href="[% overview_href %]" title="Overview of library">Overview</a></td>
+      [% ELSE %]
+      <td [% IF overview_selected %]id="selected"[% END %]>Overview</td>
+      [% END %]
+      
+      [% IF dir_overview_href ne '' %] 
+      <td><a href="[% dir_overview_href %]" title="Overview of a directory">Directory</a></td>
+      [% ELSE %]
+      <td [% IF dir_overview_selected %]id="selected"[% END %]>Directory</td>
+      [% END %]
+
+      [% IF categories_href ne '' %] 
+      <td><a href="[% categories_href %]" title="Browse library by category">Categories</a></td>
+      [% ELSE %]
+      <td [% IF categories_selected %]id="selected"[% END %]>Categories</td>
+      [% END %]
+
+      [% IF index_href ne '' %] 
+      <td><a href="[% index_href %]" title="Index of files, routines, and parameters">Index</a></td>
+      [% ELSE %]
+      <td [% IF index_selected %]id="selected"[% END %]>Index</td>
+      [% END %]
+
+      [% IF search_href ne '' %] 
+      <td><a href="[% search_href %]" title="Search library">Search</a></td>
+      [% ELSE %]
+      <td [% IF search_selected %]id="selected"[% END %]>Search</td>
+      [% END %]
+
+      <td [% IF file_selected %]id="selected"[% END %]>File</td>
+
+      [% IF source_href ne '' %] 
+      <td><a href="[% source_href %]" title="Source code of a file">Source</a></td>
+      [% ELSE %]
+      <td [% IF source_selected %]id="selected"[% END %]>Source</td>
+      [% END %]
+
+      [% IF help_href ne '' %] 
+      <td><a href="[% help_href %]" title="Help on IDLdoc">Help</a></td>
+      [% ELSE %]
+      <td [% IF help_selected %]id="selected"[% END %]>Help</td>
+      [% END %]
+
+      <td [% IF etc_selected %]id="selected"[% END %]>Etc</td>   
+
+      <td id="flexible">[% IF user %]User[% ELSE %]Developer[% END %]&nbsp;documentation</td>
+    </tr>
+  </table>
+      
+</div>
+
+<div id="secondary_navbar">
+
+[% IF prev_file_href ne '' %]<a href="[% prev_file_href %]">&lt;&lt;prev file</a>[% ELSE %]&lt;&lt; prev file[% END %] | [% IF next_file_href ne '' %]<a href="[% next_file_href %]">next file &gt;&gt;</a>[% ELSE %]next file &gt;&gt;[% END %]&nbsp;&nbsp;&nbsp;&nbsp;[% IF view_single_page_href ne '' %]<a href="[% view_single_page_href%]" target="_TOP">view single page</a>[% ELSE %]view single page[% END %] | [% IF view_frames_href ne '' %]<a href="[% view_frames_href %]" target="_TOP">view frames</a>[% ELSE %]view frames[% END %]&nbsp;&nbsp;&nbsp;&nbsp;summary: [% IF summary_fields_href ne '' %]<a href="[% summary_fields_href %]">fields</a>[% ELSE %]fields[% END %] | [% IF summary_routine_href ne '' %]<a href="[% summary_routine_href %]">routine</a>[% ELSE %]routine[% END %]&nbsp;&nbsp;&nbsp;&nbsp;details: [% IF details_routine_href ne ''%]<a href="[% details_routine_href %]">routine</a>[% ELSE %]routine[% END %]
+
+</div>
+[% END %]
Index: trunk/Documentation/idldoc/templates/overview.tt
===================================================================
--- trunk/Documentation/idldoc/templates/overview.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/overview.tt	(revision 69)
@@ -0,0 +1,118 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- Template needs structure with the following fields:
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       overview_comments : general comments in the overview file, if any
+       ndirs : number of directories
+       dirs : array of structures with fields { name:'', url:'', parity:'', comment:'' }
+       navbar_filename : filename of navbar template
+       footer : filename of footer file to include
+       tagline_filename : filename of tagline template
+     Plus fields needed by the templates: navbar, tagline
+-->
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>Library Overview ([% title %])</title>
+
+    [% IF embed %]
+    <style type="text/css" media="all">
+         [% INCLUDE css_location %]
+    </style>	
+    <style type="text/css" media="print">
+         [% INCLUDE print_css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" href="[% root %]/main_files.css" media="all"/>
+    <link rel="stylesheet" type="text/css" href="[% root %]/main_files_print.css" media="print"/>
+    [% END %]
+    
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="Library Overview ([% title %])";
+      }
+    </script>
+  </head>
+
+  <body onload="setTitle();">
+
+    [% INCLUDE_TEMPLATE navbar_filename %]
+
+    <div id="container">
+
+      [% IF ~user %]
+      <div class="toc right">
+	<ol class="toc">
+	  <li><a href="idldoc-warnings.html">Warnings</a></li>
+	  <ol>
+	    <li><a href="idldoc-warnings.html#todo">Todo items</a></li>
+	    <li><a href="idldoc-warnings.html#bugs">Known bugs</a></li>
+	    <li><a href="idldoc-warnings.html#undoc">Undocumented routines</a></li>
+	    <li><a href="idldoc-warnings.html#obsolete">Obsolete routines</a></li>
+	    <li><a href="idldoc-warnings.html#statistics">Routine statistics warnings</a></li>
+	  </ol>
+      </div>
+      [% END %]
+
+      <h1>Overview</h1>
+
+      [% overview_comments %]
+
+      [% IF ndirs gt 0 %]
+      <div class="overview">
+	<h2>Directories</h2>
+	<table>
+	  [% FOREACH dir IN dirs %] 
+	  <tr class="[% dir.parity %]">
+	    <td class="dir"><a href="[% dir.url %]" target="file_frame">[% dir.name %]</a></td>
+	    <td>[% dir.comment %]</td>
+	  </tr>	
+	  [% END %]
+	</table>
+      </div>
+      [% END %]
+
+      <h2>Summary statistics</h2>
+
+      <table id="sav_attr" cellspacing="0">
+	<tr>
+	  <td>Directories</td>
+	  <td class="value">[% ndirs %]</td>
+	</tr>
+	<tr>
+	  <td>PRO files</td>
+	  <td class="value">[% nprofiles %]</td>
+	</tr>
+	<tr>
+	  <td>SAV files</td>
+	  <td class="value">[% nsavfiles %]</td>
+	</tr>
+	<tr>
+	  <td>Class definitions</td>
+	  <td class="value">[% nclasses %]</td>
+	</tr>
+	<tr>
+	  <td>Routines/methods</td>
+	  <td class="value">[% nroutines %]</td>
+	</tr>
+	<tr>
+	  <td>Lines of code</td>
+	  <td class="value">[% nlines %]</td>
+	</tr>
+      </table>
+
+      [% IF footer NE '' %]<div id="footer">[% INCLUDE footer %]</div>[% END %]
+
+      [% INCLUDE_TEMPLATE tagline_filename %]
+	
+    </div>
+    
+  </body>
+</html>
Index: trunk/Documentation/idldoc/templates/pro-file.tt
===================================================================
--- trunk/Documentation/idldoc/templates/pro-file.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/pro-file.tt	(revision 69)
@@ -0,0 +1,199 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>[% pro_file %] ([% title %])</title>
+
+    [% IF embed %]
+    <style type="text/css" media="all">
+      [% INCLUDE css_location %]
+    </style>
+    <style type="text/css" media="print">
+      [% INCLUDE print_css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" media="all" href="[% root %]main_files.css" />
+    <link rel="stylesheet" type="text/css" media="print" href="[% root %]main_files_print.css" />
+    [% END %]
+
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="[% pro_file %] ([% title %])";
+      }
+    </script>
+  </head>
+
+  <body onload="setTitle();">
+
+    [% INCLUDE_TEMPLATE navbar_filename %]
+
+    <div id="container">
+
+      <h1 class="directory"><a href="directory-overview.html">[% pro_dir %]</a></h1>
+      <h2 class="pro_file">[% pro_file %]</h2>
+
+      <div id="file_attr">
+	<dl>
+	  <dt>Last modification:</dt>
+	  <dd>[% last_modified %]</dd>
+	</dl>
+      </div>
+
+      <div id="file_comments">[% file_comments %]</div>
+
+      [% IF is_class %][% SCOPE class %]
+        [% IF has_superclasses %]<div id="class_diagram">[% hierarchy %]</div>[% END %]
+
+        [% IF has_subclasses %]<div class="field_summary">
+          <h2>Direct known subclasses</h2>
+	
+	  <p class="commaList">
+          [% FOREACH sub IN direct_subclasses %][% SCOPE sub %][% IF ~first_subclass %], [% END %][% IF url ne '' %]<a href="[% url %]">[% classname %]</a>[% ELSE %][% classname %][% END %][% END %][% END %]	  
+	  </p>
+
+        </div>[% END %]
+      [% END %][% END %]
+
+      [% IF has_fields and not user %]
+      <div class="field_summary" id="field_summary">
+	<h2>Field summary</h2>
+
+	<table>
+        [% FOREACH f IN fields %][% SCOPE f %] 
+	  <tr><td class="name">[% name %]<br/><span class="field_type">[% type %]</span></td><td class="comments">[% comments %]</td></tr>
+        [% END %][% END %]
+	</table>
+      </div>
+      [% END %]
+
+      [% IF is_class and not user %][% SCOPE class %]
+        [% IF has_superclasses %]
+          [% FOREACH sc IN all_superclasses %][% SCOPE sc %]
+          <div class="field_summary">
+	    <h2>Fields for [% classname %]</h2>
+
+	    [% IF nfields gt 0 %]
+	      <table>
+              [% FOREACH flds IN fields %][% SCOPE flds %] 
+	        <tr><td class="name">[% name %] <span class="field_type">[% type %]</span></td></tr>
+              [% END %][% END %]
+            </table>	
+	    [% ELSE %]
+            <p>No known fields.</p>
+            [% END %] 
+	  </div>
+          [% END %][% END %]
+        [% END %]
+      [% END %][% END %]
+
+      [% IF nroutines gt 1 %]
+      <div id="routine_summary">		
+	<h2>Routine summary</h2>
+	
+	<dl>
+	  [% FOREACH r IN routines %][% SCOPE r %]
+	  <dt><p><a href="#_[% routine_name %]">[% IF is_func %]<span class="result">result = </span>[% END %][% routine_name %][% IF is_func %]([% END %][% IF nparams gt 0 %]<span class="result">[% FOREACH p IN params %][% SCOPE p %][% IF optional %][[% END %][% delim %][% name %][% IF optional %]][% END %][% END %][% END %]</span>[% END %][% IF nkeywords gt 0 %][% FOREACH k IN keywords %][% SCOPE k %][% IF optional %][[% END %][% delim %][% IF boolean && ~out %]/[% name %][% ELSE %][% name %]=<span class="result">[% out ? "variable" : (type eq '' ? name : type) %]</span>[% END %][% IF optional %]][% END %][% END %][% END %][% END %][% IF is_func %])[% END %]</a></p><dt>
+	  <dd>[% short_comment %]</dd>	      
+	  [% END %][% END %]	  
+	</dl>
+      </div>
+      [% END %]
+
+      <div id="routine_details">
+	[% FOREACH r IN routines %][% SCOPE r %]
+
+	<div class="routine_details" id="_[% routine_name %]">
+
+	  <h2><a class="top" href="#container">top</a>[% routine_name %] [% IF obsolete %]<span class="warning">obsolete</span> [% END %][% IF abstract %]<span class="warning">abstract</span> [% END %][% IF private %]<span class="warning">private</span> [% END %][% IF categories_present %]<span class="categories">[% categories %]</span>[% END%]</h2>
+	  
+	  <p class="header">
+	    [% IF is_func %]<span class="result">result = </span>[% END %][% routine_name %][% IF is_func %]([% END %][% IF nparams gt 0 %]<span class="result">[% FOREACH p IN params %][% SCOPE p %][% IF optional %][[% END %][% delim %]<a href="#_[% routine_name %]_param_[% name %]">[% name %]</a>[% IF optional %]][% END %][% END %][% END %]</span>[% END %][% IF nkeywords gt 0 %][% FOREACH k IN keywords %][% SCOPE k %][% IF optional %][[% END %][% delim %][% IF boolean && ~out %]/<a href="#_[% routine_name %]_keyword_[% name %]">[% name %]</a>[% ELSE %]<a href="#_[% routine_name %]_keyword_[% name %]">[% name %]</a>=<span class="result">[% out ? "variable" : (type eq '' ? name : type) %]</span>[% END %][% IF optional %]][% END %][% END %][% END %][% END %][% IF is_func %])[% END %]</p>
+	  
+	  <div class="comments[% IF preformat %] preformat[% END %]">[% routine_comments %]</div>
+
+	  [% IF returns_present %]<h3>Return value</h3><div class="value">[% returns %]</div>[% END %]
+
+	  [% IF nparams gt 0 %]
+	    <h3>Parameters</h3>
+	  
+	    [% FOREACH p IN params %][% SCOPE p %]
+	    <h4 id="_[% routine_name %]_param_[% name %]">[% name %]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      [% IF in %]<span class="attr">in</span>[% END %]
+	      [% IF out %]<span class="attr">out</span>[% END %]
+	      [% IF optional %]<span class="attr">optional</span>[% END %]
+	      [% IF required %]<span class="attr">required</span>[% END %]
+	      [% IF private %]<span class="attr">private</span>[% END %]
+	      [% IF type ne '' %]<span class="attr">type:</span> <span class="value">[% type %]</span>[% END %]
+	      [% IF default ne '' %]<span class="attr">default:</span> <span class="value">[% default %]</span>[% END %]
+	      [% IF ~comments_present %]<span class="undoc">undocumented</span>[% END %]
+	    </h4>
+	  
+	  <div class="comments">[% comments %]</div>
+	    [% END %][% END %]
+
+	  [% END %]
+
+	  [% IF nkeywords gt 0 %]
+
+	    <h3>Keywords</h3>
+	    [% FOREACH k IN keywords %][% SCOPE k %]
+	    <h4 id="_[% routine_name %]_keyword_[% name %]">[% name %]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      [% IF in %]<span class="attr">in</span>[% END %]
+	      [% IF out %]<span class="attr">out</span>[% END %]
+	      [% IF optional %]<span class="attr">optional</span>[% END %]
+  	      [% IF required %]<span class="attr">required</span>[% END %]
+	      [% IF private %]<span class="attr">private</span>[% END %]
+	      [% IF type ne '' %]<span class="attr">type:</span> <span class="value">[% type %]</span>[% END %]
+	      [% IF default ne '' %]<span class="attr">default:</span> <span class="value">[% default %]</span>[% END %]
+	      [% IF ~comments_present %]<span class="undoc">undocumented</span>[% END %]
+	    </h4>
+	  
+	    <div class="comments">[% comments %]</div>
+	    [% END %][% END %]
+	  [% END %]
+
+	  [% IF examples_present %]<h3>Examples</h3><div class="value">[% examples %]</div>[% END %]
+	  [% IF author_present || version_present || history_present || copyright_present || customer_id_present %]<h3>Version history</h3>[% END %]
+	  [% IF author_present %]<h4>Author</h4><div class="value">[% author %]</div>[% END %]
+	  [% IF version_present %]<h4>Version</h4><div class="value">[% version %]</div>[% END %]
+	  [% IF history_present %]<h4>History</h4><div class="value">[% history %]</div>[% END %]
+	  [% IF copyright_present %]<h4>Copyright</h4><div class="value">[% copyright %]</div>[% END %]
+	  [% IF customer_id_present %]<h4>Customer ID</h4><div class="value">[% customer_id %]</div>[% END %]
+	  [% IF obsolete_comments_present || bugs_present || todo_present || restrictions_present %]<h3>Known issues</h3>[% END %]
+	  [% IF obsolete_comments_present %]<h4>Obsolete</h4><div class="value">[% obsolete_comments %]</div>[% END %]
+	  [% IF bugs_present %]<h4>Known bugs</h4><div class="value">[% bugs %]</div>[% END %]
+	  [% IF todo_present %]<h4>Todo items</h4><div class="value">[% todo %]</div>[% END %]
+	  [% IF restrictions_present %]<h4>Restrictions</h4><div class="value">[% restrictions %]</div>[% END %]
+	  
+	  [% IF inherits_present || requires_present || uses_present || precondition_present || postcondition_present || common_blocks_present %]<h3>Other attributes</h3>[% END %]
+	  [% IF inherits_present %]<h4>Inherits classes</h4><div class="value">[% inherits %]</div>[% END %]
+	  [% IF requires_present %]<h4>Requires IDL version</h4><div class="value">[% requires %]</div>[% END %]
+	  [% IF uses_present %]<h4>Uses routines</h4><div class="value">[% uses %]</div>[% END %]
+	  [% IF precondition_present %]<h4>Pre-condition</h4><div class="value">[% precondition %]</div>[% END %]
+	  [% IF postcondition_present %]<h4>Post-condition</h4><div class="value">[% postcondition %]</div>[% END %]
+	  [% IF common_blocks_present %]<h4>Common blocks used</h4><div class="value">[% common_blocks %]</div>[% END %]
+	  
+	  [% IF statistics %]<h3>Statistics</h3>
+	  <table class="statistics">
+	    <tr><td>McCabe cyclic</td><td>[% mccabe_cyclic %]</td></tr>
+	    <tr><td>McCabe essential</td><td>[% mccabe_essential %]</td></tr>
+	    <tr><td>McCabe modular design</td><td>[% mccabe_mod_design %]</td></tr>
+	  </table>
+	  [% END %][% END %]
+	  
+	</div>
+	[% END %]
+      </div>      
+
+      [% IF footer ne '' %]<div id="footer">[% INCLUDE footer %]</div>[% END %]
+      
+      [% INCLUDE_TEMPLATE tagline_filename %]
+      
+    </div>
+
+  </body>
+</html>
Index: trunk/Documentation/idldoc/templates/sav-file.tt
===================================================================
--- trunk/Documentation/idldoc/templates/sav-file.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/sav-file.tt	(revision 69)
@@ -0,0 +1,195 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>[% sav_basefilename %] ([% title %])</title>
+
+    [% IF embed %]
+    <style type="text/css" media="all">
+         [% INCLUDE css_location %]
+    </style>	
+    <style type="text/css" media="print">
+         [% INCLUDE print_css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" media="all" href="[% root %]main_files.css" />
+    <link rel="stylesheet" type="text/css" media="print" href="[% root %]main_files_print.css" />
+    [% END %]
+    
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="[% sav_basefilename %] ([% title %])";
+      }
+    </script>
+  </head>
+    
+  <body onload="setTitle();">
+      
+    [% INCLUDE_TEMPLATE navbar_filename %]
+    
+    <div id="container">
+
+      <h1 class="directory"><a href="directory-overview.html">[% sav_dir %]</a></h1>      
+      <h2 class="pro_file">[% sav_basefilename %]</h2>
+      
+      <table id="sav_attr" cellspacing="0">
+	<tr>
+	  <td>Description</td>
+	  <td class="value">[% sav_description %]</td>
+	</tr>
+	<tr>
+	  <td>Filetype</td>
+	  <td class="value">[% sav_filetype %]</td>
+	</tr>
+	<tr>
+	  <td>User</td>
+	  <td class="value">[% sav_user %]</td>
+	</tr>
+	<tr>
+	  <td>Host</td>
+	  <td class="value">[% sav_host %]</td>
+	</tr>
+	<tr>
+	  <td>Date</td>
+	  <td class="value">[% sav_date %]</td>
+	</tr>
+	<tr>
+	  <td>Architecture</td>
+	  <td class="value">[% sav_arch %]</td>
+	  </tr>
+	<tr>
+	  <td>Operating system</td>
+	  <td class="value">[% sav_os %]</td>
+	</tr>
+	<tr>
+	  <td>Release</td>
+	  <td class="value">[% sav_release %]</td>
+	</tr>
+	[% IF ncommon gt 0 %]
+	<tr>
+	  <td><a href="#common">Common blocks</a></td>
+	  <td class="value">[% ncommon %]</td>
+	</tr>
+	[% END %]
+	[% IF nvar gt 0 %]
+	<tr>
+	  <td><a href="#var">Variables</a></td>
+	  <td class="value">[% nvar %]</td>
+	</tr>
+	[% END %]
+	[% IF nsystem gt 0 %]
+	<tr>
+	  <td><a href="#system">System variables</a></td>
+	  <td class="value">[% nsystem %]</td>
+	</tr>
+	[% END %]
+	[% IF nproc gt 0 %]
+	<tr>
+	  <td><a href="#proc">Procedures</a></td>
+	  <td class="value">[% nproc %]</td>
+	</tr>
+	[% END %]
+	[% IF nfunc gt 0 %]
+	<tr>
+	  <td><a href="#func">Functions</a></td>
+	  <td class="value">[% nfunc %]</td>
+	</tr>
+	[% END %]
+	[% IF nobj gt 0 %]
+	<tr>
+	  <td><a href="#obj">Objects</a></td>
+	  <td class="value">[% nobj %]</td>
+	</tr>
+	[% END %]
+	[% IF nptr gt 0 %]
+	<tr>
+	  <td><a href="#ptr">Pointers</a></td>
+	  <td class="value">[% nptr %]</td>
+	</tr>
+	[% END %]
+	[% IF nstructdef gt 0 %]
+	<tr>
+	  <td><a href="#structdef">Structure definitions</a></td>
+	  <td class="value">[% nstructdef %]</td>
+	</tr>
+	[% END %]
+      </table>
+
+      [% IF ncommon gt 0 %] 
+      <h2 id="common">[% ncommon %] common block variables</h2>
+      <table class="variables">
+      [% FOREACH c IN common_info %]
+	<tr>
+	  <td class="image"></td>
+	  <td>[% c.declaration %]</td>
+	</tr>
+      [% END %]
+      </table>
+      [% END %]
+
+      [% IF nvar gt 0 %] 
+      <h2 id="var">[% nvar %] variable[% IF nvar gt 1 %]s[% END %]</h2>
+      <table class="variables">
+      [% FOREACH v IN var_info %]
+	<tr>
+	  <td class="image"><img src="[% v.filename %]"/></td>
+	  <td>[% v.name %] = [% v.declaration %]</td>
+	</tr>
+      [% END %]
+      </table>
+      [% END %]
+
+      [% IF nsystem gt 0 %] 
+      <h2 id="system">[% nsystem %] system variable[% IF nsystem gt 1 %]s[% END %]</h2>
+      <table class="variables">
+      [% FOREACH s IN system_info %]
+	<tr>
+	  <td class="image"></td>
+	  <td>[% s.name %]</td>
+	</tr>
+      [% END %]
+      </table>
+      [% END %]
+
+      [% IF nproc gt 0 %] 
+      <h2 id="proc">[% nproc %] procedure[% IF nproc gt 1 %]s[% END %]</h2>
+      [% END %]
+
+      [% IF nfunc gt 0 %] 
+      <h2 id="func">[% nfunc %] function[% IF nfunc gt 1 %]s[% END %]</h2>
+      [% END %]
+
+      [% IF nobj gt 0 %] 
+      <h2 id="obj">[% nobj %] object[% IF nobj gt 1 %]s[% END %]</h2>
+      <p class="sav_warning">Objects not referenced through a local variable are not displayed.</p>
+      [% END %]
+
+      [% IF nptr gt 0 %] 
+      <h2 id="ptr">[% nptr %] pointer[% IF nptr gt 1 %]s[% END %]</h2>
+      <p class="sav_warning">Pointers not referenced through a local variable are not displayed.</p>
+      [% END %]
+
+      [% IF nstructdef gt 0 %] 
+      <h2 id="structdef">[% nstructdef %] structure definition[% IF nstructdef gt 1 %]s[% END %]</h2>
+      <table class="variables">
+      [% FOREACH s IN structdef_info %]
+	<tr>
+	  <td class="image"></td>
+	  <td>[% s.name %]</td>
+	</tr>
+      [% END %]
+      </table>
+      [% END %]
+
+      [% IF footer NE '' %]<div id="footer">[% INCLUDE footer %]</div>[% END %]
+      
+      [% INCLUDE_TEMPLATE tagline_filename %]
+      
+    </div>
+    
+  </body>
+</html>
Index: trunk/Documentation/idldoc/templates/search-js.tt
===================================================================
--- trunk/Documentation/idldoc/templates/search-js.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/search-js.tt	(revision 69)
@@ -0,0 +1,410 @@
+a = new Array();
+
+[% FOREACH f IN files %]a[[% f.index %]] = new Array("[% f.filename %]", "[% f.basename %]", "", "[% f.search_string %]");
+[% END %]
+
+var URL         = 0;
+var FILENAME    = 1;
+var DESCRIPTION = 2;
+var CONTENTS    = 3;
+var MATCH_TYPE  = 4;
+var N_MATCHES   = 5;
+var SCORE       = 6;
+var i = 7;
+var MATCHES     = 8;
+
+var html;
+
+var searchString;
+var wildcard;
+var invalidSearchString;
+var origSearchString;
+var styles = "<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\" />"
+
+FILENAME_SCORE_ORDER    = 0;
+URL_SCORE_ORDER         = 1;
+DESCRIPTION_SCORE_ORDER = 2;
+CONTENT_SCORE_ORDER     = 3;
+
+SCORE_PER_TYPE = 15000;
+
+var sortResultsByType = true;
+var omitDescriptions = false;
+var addMatchSummary = true;
+
+var searchTitles = true;
+var searchDescriptions = true;
+var searchContent = true;
+
+var footer = "";
+
+function isAlnumAmp(ch) {
+  if ((ch >= "a" && ch <= "z") || (ch == "&") ||(ch >= "A" && ch <= "Z") || (ch >= "0" && ch <="9")) {
+    return true;
+  } else {
+    return false;
+  }
+}
+
+function searchElement(fileNumber, matchType, upperSearchString) {
+  var element = a[fileNumber][matchType].toUpperCase();
+  var w, x, y;
+  var z = 0;
+  
+  a[fileNumber][N_MATCHES] = 0;
+  w = element.indexOf(upperSearchString);
+  while (w >= 0){
+    z = z + w + 1;
+    if ((wildcard == -2) || (wildcard == -5)) {
+      x = false;
+    } else {
+      if (w == 0) {
+	x = false;
+      } else {
+	x = isAlnumAmp(element.charAt(w - 1));
+      }
+    }
+    if ((wildcard == -3) || (wildcard == -5)) {
+      y = false;
+    } else {
+      if (element.length - w == upperSearchString.length) {
+	y = false;
+      } else {
+	y = isAlnumAmp(element.charAt(w + upperSearchString.length));
+      }
+    }
+    if (!x && !y) {
+      a[fileNumber][MATCHES + a[fileNumber][N_MATCHES]] = z - 1;
+      a[fileNumber][N_MATCHES]++;
+          }
+    element = element.substring(w + 1, element.length);
+    while (isAlnumAmp(element.charAt(0)) && element.length > 0) {
+      element = element.substring(1, element.length);
+      z++;
+    }
+    w = element.indexOf(upperSearchString);
+  }
+}
+
+function searchFile(fileNumber, upperSearchString) {
+  var matchIndex = -1, matchType;
+  
+  a[fileNumber][MATCH_TYPE] = -1;
+  
+  while (++matchIndex <= CONTENTS && a[fileNumber][MATCH_TYPE] == -1) {
+    matchType = matchIndex == 0 ? FILENAME : (matchIndex == 1 ? DESCRIPTION : (matchIndex == 2 ? URL : CONTENTS));
+    if ((matchType == FILENAME || matchType == URL) && !searchTitles) {
+      continue;
+    }
+    
+    if (matchType == DESCRIPTION && !searchDescriptions) {
+      continue;
+    }
+    
+    if (matchType == CONTENTS && !searchContent) {
+      continue;
+    }
+    
+    searchElement(fileNumber, matchType, upperSearchString);
+    if (a[fileNumber][N_MATCHES] > 0) {
+      a[fileNumber][MATCH_TYPE] = matchType;
+    }
+  }
+}
+
+function sortResults() {
+  var fileNumber, t, tempScore, E;
+  
+  for (fileNumber = 1; fileNumber < a.length; fileNumber++) {
+    a[fileNumber][i] = fileNumber;
+  }
+  
+  if (sortResultsByType) {
+    for (fileNumber = 1; fileNumber < a.length; fileNumber++) {
+      if (a[fileNumber][MATCH_TYPE] == FILENAME) {
+	a[fileNumber][SCORE] = (4 - FILENAME_SCORE_ORDER) * SCORE_PER_TYPE;
+      } else if (a[fileNumber][MATCH_TYPE] == DESCRIPTION) {
+	a[fileNumber][SCORE] = (4 - DESCRIPTION_SCORE_ORDER) * SCORE_PER_TYPE;
+      } else if (a[fileNumber][MATCH_TYPE] == URL) {
+	a[fileNumber][SCORE] = (4 - URL_SCORE_ORDER) * SCORE_PER_TYPE;
+      } else {
+	a[fileNumber][SCORE] = (4 - CONTENT_SCORE_ORDER) * SCORE_PER_TYPE + a[fileNumber][N_MATCHES];
+      }
+    }
+    for (fileNumber = 2; fileNumber < a.length; fileNumber++) {
+      tempScore = a[fileNumber][SCORE];
+      E = a[fileNumber][i];
+      for (t = fileNumber; t > 1 && tempScore > a[t-1][SCORE]; t--) {
+	a[t][SCORE] = a[t-1][SCORE];
+	a[t][i] = a[t-1][i];
+      }
+      a[t][SCORE] = tempScore;
+      a[t][i] = E;
+    }
+  }
+}
+
+function putMatchSummary(fileNumber) {
+  var pluralSuffix = a[fileNumber][N_MATCHES]==1 ? "" : "es";
+  
+  html += "";
+  html += "<span class=\"match\">";
+  if (a[fileNumber][MATCH_TYPE] == FILENAME) {
+    html += " - matched title";
+  } else {
+    if (a[fileNumber][MATCH_TYPE] == DESCRIPTION) {
+      html += " - matched description";
+    } else {
+      if (a[fileNumber][MATCH_TYPE] == URL) {
+	html += " - matched URL";
+      } else {
+	html += " - " + a[fileNumber][N_MATCHES] + " match" + pluralSuffix + "";
+      }
+    }
+  }
+  html += "</span>";
+}
+
+function putMatchDescription(fileNumber, curMatch) {
+  var matchLocation = a[fileNumber][MATCHES + curMatch - 1];
+  var matchStart = matchLocation < 35 ? 0 : matchLocation - 35;
+  var matchEnd = (matchLocation + 35 > a[fileNumber][CONTENTS].length) ? a[fileNumber][CONTENTS].length : matchLocation + 35;
+  
+  var Q = false;
+  while ((matchStart >= 0) && !Q) {
+    if (isAlnumAmp(a[fileNumber][CONTENTS].charAt(matchStart))) {
+      matchStart--;
+    } else {
+      Q = true;
+    }
+  }
+  matchStart++;
+  
+  Q = false;
+  while ((matchEnd > matchLocation) && !Q) {
+    if (isAlnumAmp(a[fileNumber][CONTENTS].charAt(matchEnd))) {
+      matchEnd--;
+    } else {
+      Q = true;
+    }
+  }
+  
+  html += "<br>\".. " + a[fileNumber][CONTENTS].substring(matchStart, matchLocation);
+  html += "<span class=\"foundString\">" + a[fileNumber][CONTENTS].substring(matchLocation, matchLocation + searchString.length) + "</span>";
+  html += a[fileNumber][CONTENTS].substring(matchLocation + searchString.length, matchEnd) + " ..\"";
+}
+
+function putAllMatchDescriptions(fileNumber) {
+  if (omitDescriptions == false) {
+    var curMatch = 1;
+    while ((curMatch < 4) && (curMatch <= a[fileNumber][N_MATCHES])) {
+      putMatchDescription(fileNumber, curMatch);
+      curMatch++;
+    }
+  }
+}
+
+function putFoundString(v, R) {
+  html += v.substring(0, R);
+  html += "<span class=\"foundString\">" + v.substring(R, R + searchString.length) + "</span>";
+  html += v.substring(R + searchString.length, v.length);
+}
+
+function putItem(fileNumber, itemNumber) {
+  html += "<p>" + itemNumber + ". ";
+  html += "<a href=\"" + a[fileNumber][URL] + "\" target=\"file_frame\">" + a[fileNumber][FILENAME] + "</a>";
+  
+  if (a[fileNumber][MATCH_TYPE] == CONTENTS) {
+    putAllMatchDescriptions(fileNumber);
+  } else {
+    html += "";
+  }
+  
+  if (a[fileNumber][MATCH_TYPE] == DESCRIPTION) {
+    html += "<span class=\"description\">";
+    html += "<br>Description: ";
+    html += "</span>";
+    html += "";
+    putFoundString(a[fileNumber][DESCRIPTION], a[fileNumber][MATCHES]);
+  } else {
+    if( a[fileNumber][DESCRIPTION].length > 0 ) {
+      html += "<span class=\"description\">";
+      html += "<br>Description: ";
+      html += "</span>";
+      html += "" + a[fileNumber][DESCRIPTION];
+    } else {
+    }
+  }
+  html += "<br>";
+  html += "<span class=\"file\">";
+  if (a[fileNumber][MATCH_TYPE] == URL) {
+    putFoundString(a[fileNumber][URL], a[fileNumber][MATCHES]);
+  } else {
+    html += a[fileNumber][URL];
+  }
+  html += "</span>";
+  if (addMatchSummary) {
+    putMatchSummary(fileNumber);
+  }
+  html += "<br>";
+}
+
+function putResults() {
+  var itemNumber = 0;
+  
+  if (!(invalidSearchString)) {
+    for (var fileNumber = 1; fileNumber < a.length; fileNumber++) {
+      if (a[a[fileNumber][i]][N_MATCHES] > 0) {
+	putItem(a[fileNumber][i], ++itemNumber);
+      }
+    }
+  } else {
+    if (wildcard == -4) {
+      html += "<p><span class=\"error\">ERROR:</span>&nbsp;The wildcard chararcter (*) must be at the beginning or end of the text.</p>";
+    }
+  }
+}
+
+function putHeader() {
+  html += "<html><head><title>Search results for \"" + origSearchString + "\"</title>";
+  html += styles;
+  html += "</head><body>";
+  html += "<h1>Search Results</h1>";
+  html += "<div id=\"container\">";
+  html += "<p>You searched for <span class=\"foundString\">" + origSearchString +".</span></p>";
+}
+
+function putFooter() {
+  var nMatches = 0;
+  
+  if (!(invalidSearchString)) {
+    for (var fileNumber = 1; fileNumber < a.length; fileNumber++) {
+      if (a[fileNumber][N_MATCHES] > 0) {
+	nMatches++;
+      }
+    }
+  }
+  
+  if (nMatches == 0) {
+    html += "<p>No pages matched your search.</p>";
+  } else {
+    var plural = nMatches == 1 ? "" : "s";
+    html += "<p id=\"tagline\">" + nMatches + " page" + plural + " listed.</p>";
+  }
+  html += footer;
+  html += "</div></body></html>";
+}
+
+function launchBrowser() {
+  var htmlCode = html;
+  
+  iu = open("", "Object", "resizable=yes,scrollbars=yes,toolbar=no,menubar=no,location=no,directories=no,width=475,height=600");
+  
+  if ((navigator.appName.indexOf("Microsoft")!=-1) && (navigator.appVersion.indexOf("3.0") != -1)) {
+    alert("Click to see results");
+  }
+  
+  iu.document.open();
+  iu.document.write(htmlCode);
+  iu.document.close();
+}
+
+function replaceSpecialChars(str) {
+  var returnStr = "";
+  
+  for (var index = 0; index < str.length; index++) {
+    if (str.charAt(index) == "<") {
+      returnStr += "&lt;";
+    } else if (str.charAt(index) == ">") {
+      returnStr += "&gt;";
+    } else if (str.charAt(index) == "\"") {
+      returnStr += "&quot;";
+    } else {
+      returnStr += str.charAt(index);
+    }
+  }
+  return(returnStr);
+}
+
+function checkSearchString() {
+  wildcard = searchString.indexOf("*");
+  if (wildcard == 0) {
+    wildcard = -2;
+    invalidSearchString = false;
+  } else if (wildcard == searchString.length -1) {
+    wildcard = -3;
+    invalidSearchString = false;
+  } else if (wildcard > 0 ) {
+    wildcard = -4;
+    invalidSearchString = true;
+  } else {
+    invalidSearchString = false;
+  }
+  
+  if (searchString.indexOf("*") != searchString.lastIndexOf("*")) {
+    if (wildcard == -2) {
+      if (searchString.lastIndexOf("*") == searchString.length - 1) {
+	wildcard = -5;
+      } else {
+	wildcard = -4;
+	invalidSearchString = true;
+      }
+    }
+  }
+  
+  if ((wildcard == -2) || (wildcard == -5)) {
+    searchString = searchString.substring(1, searchString.length);
+  }
+  
+  if ((wildcard == -3) || (wildcard == -5)) {
+    searchString = searchString.substring(0, searchString.length - 1);
+  }
+}
+
+function toggleOmitDescriptions() {
+  omitDescriptions = !omitDescriptions;
+}
+
+function toggleSortResults() {
+  sortResultsByType = !sortResultsByType;
+}
+
+function toggleMatchSummary() {
+  addMatchSummary = !addMatchSummary;
+}
+
+function toggleSearchTitles() {
+  searchTitles = !searchTitles;
+}
+
+function toggleSearchDescriptions() {
+  searchDescriptions = !searchDescriptions;
+}
+
+function toggleSearchContent() {
+  searchContent = !searchContent;
+}
+
+function startsearch() {
+  var upperSearchString;
+  searchString = document.formSearch.txtSearch.value;
+  
+  if ((searchString.length > 0) && (searchString != "*")) {
+    html = "";
+    origSearchString = searchString;
+    searchString = replaceSpecialChars(searchString);
+    checkSearchString();
+    upperSearchString = searchString.toUpperCase();
+    if (!(invalidSearchString)) {
+      for (var fileNumber = 1; fileNumber < a.length; fileNumber++) {
+	searchFile(fileNumber, upperSearchString);
+      }
+      sortResults();
+    }
+    putHeader();
+    putResults();
+    putFooter();
+    launchBrowser();
+  }
+}
+
Index: trunk/Documentation/idldoc/templates/search.tt
===================================================================
--- trunk/Documentation/idldoc/templates/search.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/search.tt	(revision 69)
@@ -0,0 +1,104 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- Template needs structure with the following fields:
+       header :
+       styles :
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       idldoc_syntax_filename : file containing IDLdoc output for the idldoc routine
+       navbar_filename : filename of navbar template
+       footer : filename of footer file to include
+       tagline_filename : filename of tagline template
+     Plus stuff needed by the templates: navbar, tagline
+-->
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>Search Library ([% title %])</title>
+
+    [% IF embed %]
+    <style type="text/css" media="all">
+         [% INCLUDE css_location %]
+    </style>	
+    <style type="text/css" media="print">
+         [% INCLUDE print_css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" href="[% root %]/main_files.css" media="all"/>
+    <link rel="stylesheet" type="text/css" href="[% root %]/main_files_print.css" media="print"/>
+    [% END %]
+
+      <script type="text/javascript">
+	function setTitle() {
+	  document.formSearch.txtSearch.focus();
+	  parent.document.title="Search Library ([% title %])";
+	}
+      </script>
+      <script type="text/javascript" src="./search.js"></script>
+  </head>
+      
+  <body onload="setTitle();">
+    
+    [% INCLUDE_TEMPLATE navbar_filename %]
+    
+    <div id="container">
+	  
+      <h1>Search Library</h1>
+
+      <div id="search">
+	  
+	<form name="formSearch" action="javascript:startsearch() //">
+	  <input class="writein" name="txtSearch" size="50" />&nbsp; <input name="send" type="submit" value="Search" />
+	      <table>
+		<tr>
+		  <td>
+		    <input class="checkbox" name="searchTitles" type="checkbox" checked="checked" value="searchTitles" onClick="javascript:toggleSearchTitles() //" />Search titles
+		  </td>
+		  <td>
+		    <input class="checkbox" name="showDescriptions" type="checkbox" checked="checked" value="showDescriptions" onClick="javascript:toggleOmitDescriptions() //" />Show descriptions
+		  </td>
+		</tr>
+		<tr>
+		  <td>
+		    <input class="checkbox" name="searchDescriptions" type="checkbox" checked="checked" value="searchDescriptions" onClick="javascript:toggleSearchDescriptions() //" />Search descriptions
+		  </td>
+		  <td>
+		    
+		    <input class="checkbox" name="sortResults" type="checkbox" checked="checked" value="sortResults" onClick="javascript:toggleSortResults() //" />Sort results by type
+		  </td>
+		</tr>
+		<tr>
+		  <td>
+		    <input class="checkbox" name="searchContents" type="checkbox" checked="checked" value="searchContents" onClick="javascript:toggleSearchContent() //" />Search content
+		  </td>
+		  <td>
+		    <input class="checkbox" name="matchSummary" type="checkbox" checked="checked" value="matchSummary" onClick="javascript:toggleMatchSummary() //" />Match summary
+		  </td>
+		</tr>
+	      </table>
+	</form>
+
+	<p>For best results enter just one or two words.  Searches on
+	more than one word will be treated "as a phrase".  Use the
+	asterisk (*) character for wildcard searches.</p>
+
+      </div>
+
+      [% IF footer NE '' %]<div id="footer">[% INCLUDE footer %]</div>[% END %]
+      
+      [% INCLUDE_TEMPLATE tagline_filename %]
+      
+    </div>
+    
+  </body>
+</html>
+
+
+
+
Index: trunk/Documentation/idldoc/templates/tagline.tt
===================================================================
--- trunk/Documentation/idldoc/templates/tagline.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/tagline.tt	(revision 69)
@@ -0,0 +1,1 @@
+<div id="tagline">Produced by IDLdoc [% version %] on [% date %].</div>
Index: trunk/Documentation/idldoc/templates/warnings-begin.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings-begin.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings-begin.tt	(revision 69)
@@ -0,0 +1,84 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- warnings-begin.tt needs structure with the following fields:
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       navbar_filename : filename of navbar template
+     Plus fields needed by the templates: navbar, tagline
+-->
+
+<!-- warnings-todo-header.tt needs structure with the following fields:
+-->
+
+<!-- warnings-todo-file.tt needs structure with the following fields:
+-->
+
+<!-- warnings-bugs-header.tt needs structure with the following fields:
+-->
+
+<!-- warnings-bugs-file.tt needs structure with the following fields:
+-->
+
+<!-- warnings-undoc-header.tt needs structure with the following fields:
+-->
+
+<!-- warnings-undoc-file.tt needs structure with the following fields:
+-->
+
+<!-- warnings-end.tt needs structure with the following fields:
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       navbar_filename : filename of navbar template
+     Plus fields needed by the templates: navbar, tagline
+-->
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>Warnings ([% title %])</title>
+
+    [% IF embed %]
+    <style type="text/css" media="all">
+         [% INCLUDE css_location %]
+    </style>	
+    <style type="text/css" media="print">
+         [% INCLUDE print_css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" href="[% root %]/main_files.css" media="all"/>
+    <link rel="stylesheet" type="text/css" href="[% root %]/main_files_print.css" media="print"/>
+    [% END %]
+
+    <script type="text/javascript" src="./tree.js" />
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="Warnings ([% title %])";
+      }
+    </script>
+  </head>
+
+
+  <body onload="setTitle();">
+
+    [% INCLUDE_TEMPLATE navbar_filename %]
+
+    <div id="container">
+
+      <h1>Warnings</h1>
+      
+      <div class="toc">
+	<ol class="toc">
+	  <li><a href="#todo">Todo items</a></li>
+	  <li><a href="#bugs">Known bugs</a></li>
+	  <li><a href="#undoc">Undocumented routines</a></li>
+	  <li><a href="#obsolete">Obsolete routines</a></li>
+	  <li><a href="#statistics">Routine statistics warnings</a></li>
+	</ol>
+      </div>
Index: trunk/Documentation/idldoc/templates/warnings-bugs-file.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings-bugs-file.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings-bugs-file.tt	(revision 69)
@@ -0,0 +1,6 @@
+<a href="[% fileurl %]">[% filename %]</a>
+<dl>
+[% FOREACH bug IN bugs %]
+<dt><a href="[% bug.url %]">[% bug.name %]</a></dt>
+<dd>[% bug.comment %]</dd>
+</dl>
Index: trunk/Documentation/idldoc/templates/warnings-bugs-footer.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings-bugs-footer.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings-bugs-footer.tt	(revision 69)
@@ -0,0 +1,1 @@
+</div>
Index: trunk/Documentation/idldoc/templates/warnings-bugs-header.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings-bugs-header.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings-bugs-header.tt	(revision 69)
@@ -0,0 +1,3 @@
+
+<div id="bugs"> 
+  <h2>Known bugs</h2>
Index: trunk/Documentation/idldoc/templates/warnings-end.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings-end.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings-end.tt	(revision 69)
@@ -0,0 +1,9 @@
+
+      [% IF footer NE '' %]<div id="footer">[% INCLUDE footer %]</div>[% END %]
+
+      [% INCLUDE_TEMPLATE tagline_filename %]
+
+    </div>
+
+  </body>
+</html>
Index: trunk/Documentation/idldoc/templates/warnings-obsolete-file.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings-obsolete-file.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings-obsolete-file.tt	(revision 69)
@@ -0,0 +1,8 @@
+<a href="[% fileurl %]">[% filename %]</a>
+<table>
+[% FOREACH r IN routines %]
+<tr>
+<td class="obsroutine"><a href="[% r.url %]">[% r.name %]</a></td>
+</tr>
+[% END %]
+</table>
Index: trunk/Documentation/idldoc/templates/warnings-obsolete-footer.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings-obsolete-footer.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings-obsolete-footer.tt	(revision 69)
@@ -0,0 +1,1 @@
+</div>
Index: trunk/Documentation/idldoc/templates/warnings-obsolete-header.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings-obsolete-header.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings-obsolete-header.tt	(revision 69)
@@ -0,0 +1,3 @@
+
+<div id="obsolete"> 
+  <h2>Obsolete routines</h2>
Index: trunk/Documentation/idldoc/templates/warnings-stat-file.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings-stat-file.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings-stat-file.tt	(revision 69)
@@ -0,0 +1,9 @@
+<a href="[% fileurl %]">[% filename %]</a>
+<table>
+[% FOREACH r IN routines %]
+<tr>
+<td class="statroutine"><a href="[% r.url %]">[% r.name %]</a></td>
+<td class="stat [% IF r.cyclic lt 10 %]caution[% ELSE %]warning[% END %]">[% r.cyclic %]</td>
+</tr>
+[% END %]
+</table>
Index: trunk/Documentation/idldoc/templates/warnings-stat-footer.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings-stat-footer.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings-stat-footer.tt	(revision 69)
@@ -0,0 +1,1 @@
+</div>
Index: trunk/Documentation/idldoc/templates/warnings-stat-header.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings-stat-header.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings-stat-header.tt	(revision 69)
@@ -0,0 +1,3 @@
+
+<div id="statistics"> 
+  <h2>Statistics warnings</h2>
Index: trunk/Documentation/idldoc/templates/warnings-todo-file.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings-todo-file.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings-todo-file.tt	(revision 69)
@@ -0,0 +1,7 @@
+<h3><a href="[% fileurl %]">[% filename %]</a></h3>
+<dl>
+[% FOREACH item IN items %]
+<dt><a href="[% item.url %]">[% item.name %]</a></dt>
+<dd>[% item.comment %]</dd>
+[% END %]
+</dl>
Index: trunk/Documentation/idldoc/templates/warnings-todo-footer.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings-todo-footer.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings-todo-footer.tt	(revision 69)
@@ -0,0 +1,1 @@
+</div>
Index: trunk/Documentation/idldoc/templates/warnings-todo-header.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings-todo-header.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings-todo-header.tt	(revision 69)
@@ -0,0 +1,3 @@
+
+<div id="todo">
+  <h2>Todo items</h2>
Index: trunk/Documentation/idldoc/templates/warnings-undoc-file.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings-undoc-file.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings-undoc-file.tt	(revision 69)
@@ -0,0 +1,9 @@
+<a href="[% fileurl %]">[% filename %]</a>
+<table>
+[% FOREACH r IN routines %]
+<tr>
+<td class="docroutine"><a href="[% r.url %]">[% r.name %]</a></td>
+<td class="docstat [% IF r.partial %]partialdoc[% ELSE %]notdoc[% END %]">[% IF r.partial %]partially documented[% ELSE %]not documented[% END %]</td>
+</tr>
+[% END %]
+</table>
Index: trunk/Documentation/idldoc/templates/warnings-undoc-footer.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings-undoc-footer.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings-undoc-footer.tt	(revision 69)
@@ -0,0 +1,1 @@
+</div>
Index: trunk/Documentation/idldoc/templates/warnings-undoc-header.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings-undoc-header.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings-undoc-header.tt	(revision 69)
@@ -0,0 +1,3 @@
+
+<div id="undoc"> 
+  <h2>Undocumented routines</h2>
Index: trunk/Documentation/idldoc/templates/warnings.tt
===================================================================
--- trunk/Documentation/idldoc/templates/warnings.tt	(revision 69)
+++ trunk/Documentation/idldoc/templates/warnings.tt	(revision 69)
@@ -0,0 +1,153 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- warnings-begin.tt needs structure with the following fields:
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       navbar_filename : filename of navbar template
+     Plus fields needed by the templates: navbar, tagline
+-->
+
+<!-- warnings-todo-header.tt needs structure with the following fields:
+-->
+
+<!-- warnings-todo-file.tt needs structure with the following fields:
+-->
+
+<!-- warnings-bugs-header.tt needs structure with the following fields:
+-->
+
+<!-- warnings-bugs-file.tt needs structure with the following fields:
+-->
+
+<!-- warnings-undoc-header.tt needs structure with the following fields:
+-->
+
+<!-- warnings-undoc-file.tt needs structure with the following fields:
+-->
+
+<!-- warnings-end.tt needs structure with the following fields:
+       version : IDLdoc version
+       date : string containing date of file creation
+       embed : 0 for link to CSS, 1 for embed CSS
+       css_location : if embed then string filename of CSS file location, o/w href to CSS file
+       navbar_filename : filename of navbar template
+     Plus fields needed by the templates: navbar, tagline
+-->
+
+<!-- Generated by IDLdoc [% version %] on [% date %] -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>Warnings ([% title %])</title>
+
+    [% IF embed %]
+    <style type="text/css" media="all">
+         [% INCLUDE css_location %]
+    </style>	
+    <style type="text/css" media="print">
+         [% INCLUDE print_css_location %]
+    </style>
+    [% ELSE %]
+    <link rel="stylesheet" type="text/css" href="[% css_location %]" media="all"/>
+    <link rel="stylesheet" type="text/css" href="[% print_css_location %]" media="print"/>
+    [% END %]
+
+    <script type="text/javascript" src="./tree.js" />
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="Warnings ([% title %])";
+      }
+    </script>
+  </head>
+
+
+  <body onload="setTitle();">
+
+    [% INCLUDE_TEMPLATE navbar_filename %]
+
+    <div id="container">
+
+      <h1>Warnings</h1>
+      
+      <div class="toc">
+	<ol class="toc">
+	  <li><a href="#todo">Todo items</a></li>
+	  <li><a href="#bugs">Known bugs</a></li>
+	  <li><a href="#undoc">Undocumented routines</a></li>
+	  <li><a href="#obsolete">Obsolete routines</a></li>
+	  <li><a href="#statistics">Routine statistics warnings</a></li>
+	</ol>
+      </div>
+
+      <div id="todo">
+	<h2>Todo items</h2>
+
+	<h3><a href="[% fileurl %]">[% filename %]</a></h3>
+	<dl>
+	  [% FOREACH item IN items %]
+	  <dt><a href="[% item.url %]">[% item.name %]</a></dt>
+	  <dd>[% item.comment %]</dd>
+	  [% END %]
+	</dl>
+      </div>      
+
+      <div id="bugs"> 
+	<h2>Known bugs</h2>
+	<a href="[% fileurl %]">[% filename %]</a>
+	<dl>
+	  [% FOREACH bug IN bugs %]
+	  <dt><a href="[% bug.url %]">[% bug.name %]</a></dt>
+	  <dd>[% bug.comment %]</dd>
+	</dl>	
+      </div>
+
+      <div id="undoc"> 
+	<h2>Undocumented routines</h2>
+	<a href="[% fileurl %]">[% filename %]</a>
+	<table>
+	  [% FOREACH r IN routines %]
+	  <tr>
+	    <td class="docroutine"><a href="[% r.url %]">[% r.name %]</a></td>
+	    <td class="docstat [% IF r.partial %]partialdoc[% ELSE %]notdoc[% END %]">[% IF r.partial %]partially documented[% ELSE %]not documented[% END %]</td>
+	  </tr>
+	  [% END %]
+	</table>
+      </div>
+
+      <div id="obsolete"> 
+	<h2>Obsolete routines</h2>
+	<a href="[% fileurl %]">[% filename %]</a>
+	<table>
+	  [% FOREACH r IN routines %]
+	  <tr>
+	    <td class="obsroutine"><a href="[% r.url %]">[% r.name %]</a></td>
+	  </tr>
+	  [% END %]
+	</table>
+      </div>
+
+      <div id="statistics"> 
+	<h2>Statistics warnings</h2>
+	<a href="[% fileurl %]">[% filename %]</a>
+	<table>
+	  [% FOREACH r IN routines %]
+	  <tr>
+	    <td class="statroutine"><a href="[% r.url %]">[% r.name %]</a></td>
+	    <td class="stat [% IF r.cyclic lt 10 %]caution[% ELSE %]warning[% END %]">[% r.cyclic %]</td>
+	  </tr>
+	  [% END %]
+	</table>
+      </div>
+
+      [% IF footer NE '' %]<div id="footer">[% INCLUDE footer %]</div>[% END %]
+
+      [% INCLUDE_TEMPLATE tagline_filename %]
+
+    </div>
+
+  </body>
+</html>
Index: trunk/Documentation/idldoc/xidldoc.html
===================================================================
--- trunk/Documentation/idldoc/xidldoc.html	(revision 68)
+++ 	(revision )
@@ -1,1010 +1,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
-<HTML>
-<HEAD>
-<!-- Generated by IDLdoc 1.6, build date Fri Jan 14 15:57:17 2005 on Wed Feb 09 12:40:21 2005 -->
-<TITLE>xidldoc.pro</TITLE>
-<STYLE><!--
-a:link { color: #660000 }
-a:active { color: #660000 }
-a:visited {color: #660000 }
-
-/* Default font for body text */
-BODY {
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: Arial;
-    BACKGROUND-COLOR: #FFFFF9
-}
-
-/* Default font for text in tables */
-TD {
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: Arial
-}
-
-/* Format for body of all files */
-BODY.standard {
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: Arial;
-    BACKGROUND-COLOR: #FFFFF9
-}
-
-TABLE.parameters {
-    BORDER-TOP: 1px solid #FFFFCC;
-    BORDER-BOTTOM: 1px solid #88AA66;
-    BORDER-LEFT: 1px solid #FFFFCC;
-    BORDER-RIGHT: 1px solid #88AA66;
-    WIDTH: 95%;
-    MARGIN-LEFT: 5%
-}
-
-TR.parameters {
-    BORDER-RIGHT-WIDTH: 0px;
-    BORDER-TOP-WIDTH: 1px;
-    BORDER-LEFT-WIDTH: 0px;
-    WIDTH: 100%;
-    BORDER-BOTTOM-WIDTH: 1px;
-    BORDER-STYLE: solid
-}
-
-TD.index_selection_header {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 14pt;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-TABLE.minor_listing {
-    BORDER-TOP: 1px solid #EEEEFF;
-    BORDER-BOTTOM: 1px solid #6666AA;
-    BORDER-LEFT: 1px solid #EEEEFF;
-    BORDER-RIGHT: 1px solid #6666AA;
-    WIDTH: 100%
-}
-
-TABLE.listing {
-    BORDER-TOP: 1px solid #BBBBFF;
-    BORDER-BOTTOM: 1px solid #6666AA;
-    BORDER-LEFT: 1px solid #BBBBFF;
-    BORDER-RIGHT: 1px solid #6666AA;
-    WIDTH: 100%
-}
-
-TABLE.routine_listing {
-    BACKGROUND: #FFFFAA;
-    BORDER-TOP: 1px solid #FFEEAA;
-    BORDER-BOTTOM: 1px solid #AAAA66;
-    BORDER-LEFT: 1px solid #FFEEAA;
-    BORDER-RIGHT: 1px solid #AAAA66;
-    WIDTH: 100%
-}
-
-TD.title {
-    FONT-SIZE: 14pt;
-    BACKGROUND: #ccccff;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-TR.small_title {
-    FONT-WEIGHT: bold;
-    BACKGROUND: #eeeeff;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* #F0FFBA */
-TR.parameter_title {
-    FONT-WEIGHT: bold;
-    FONT-FAMILY: Helvetica, sans-serif;
-    BACKGROUND: #F0FFE0
-}
-
-/***** Navbar stuff *****/
-
-TD.navbar_unselected A:hover {
-    BACKGROUND: #AAAAFF;
-    BORDER-TOP: 3px solid #AAAAFF;
-    BORDER-BOTTOM: 3px solid #AAAAFF
-}
-
-/* Formatting for the row with the labels */
-TR.navbar {
-    FONT-WEIGHT: bold;
-    BACKGROUND: #ddddff;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for the table cell that is currently selected */
-TD.navbar_selected {
-    BORDER-TOP: 3px solid #0000AA;
-    BORDER-BOTTOM: 3px solid #DDDDFF
-}
-
-TD.navbar_unselected {
-    BORDER-TOP: 3px solid #DDDDFF;
-    BORDER-BOTTOM: 3px solid #DDDDFF
-}
-
-/* Formatting for the text that allows cycling through files and finding details vs. summary */
-TD.navbar_small {
-    FONT-WEIGHT: lighter;
-    FONT-SIZE: 8pt;
-    TEXT-TRANSFORM: lowercase;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for Research System's logo */
-FONT.logo {
-    FONT-SIZE: 16pt;
-    TEXT-TRANSFORM: uppercase;
-    FONT-FAMILY: 'Times New Roman', serif
-}
-
-/* Formatting for IDL version and User/Developer Documentation tag */
-FONT.version {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for directory name on a file page */
-FONT.directory {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    COLOR: darkolivegreen
-}
-
-/* Formatting for a file name on a file page */
-FONT.file {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 16pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for line at bottom of page indicating version of IDLdoc */
-FONT.tagline {
-    FONT-SIZE: 8pt;
-    FONT-STYLE: italic;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-FONT.code {
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: 'Courier New', monospace
-}
-
-/* Format for the attributes to a parameter or keyword in the table of parameters and keywords in the routine details */
-.param_attrib {
-    FONT-WEIGHT: 200;
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    COLOR: darkolivegreen
-}
-
-/* Format for a parameter or keyword name in the table of parameters and keywords in the routine details */
-FONT.param_name {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 10pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-TD.listing {
-    BORDER-RIGHT: 0px solid;
-    BORDER-TOP: 0px solid;
-    BORDER-LEFT: 0px solid;
-    BORDER-BOTTOM: 1px solid
-}
-
-.list {
-    FONT-SIZE: 9pt;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-.list_title {
-    FONT-SIZE: 9pt;
-    FONT-WEIGHT: bold;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-/* Font for the number of files or directories in the side frames */
-.list_tagline {
-    FONT-WEIGHT: lighter;
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    COLOR: darkolivegreen
-}
-
-.list_tagline_caution {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-.list_tagline_error {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    COLOR: #FF1111
-}
-
-P.code_header {
-    FONT-SIZE: 10pt;
-    MARGIN-TOP: 0pt;
-    MARGIN-BOTTOM: 0pt;
-    MARGIN-LEFT: 30pt;
-    TEXT-INDENT: -30pt;
-    FONT-FAMILY: 'Courier New', monospace
-}
-
-P.first_line {
-    MARGIN-TOP: 3pt;
-    MARGIN-BOTTOM: 0pt;
-    MARGIN-LEFT: 15pt;
-    FONT-WEIGHT: lighter;
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-}
-
-.routine {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 12pt;
-    FONT-FAMILY: Arial, Helvetica, sans-serif
-}
-
-/* Formatting for the attributes of a routine */
-DT.attribute {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 9pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
-
-/* Formatting for the attributes of a routine */
-.attribute_item {
-    FONT-SIZE: 9pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    MARGIN-BOTTOM: 4px;
-    FONT-WEIGHT: lighter;
-    COLOR: darkolivegreen
-}
-
-/* Formatting for the attributes of a routine */
-DT.index_item {
-    FONT-SIZE: 9pt;
-    FONT-WEIGHT: lighter;
-    FONT-FAMILY: Helvetica, sans-serif
-
-}
-
-/* Formatting for the attributes of a routine */
-DD.index_description {
-    FONT-SIZE: 8pt;
-    FONT-FAMILY: Helvetica, sans-serif;
-    FONT-WEIGHT: lighter;
-    COLOR: darkolivegreen
-}
-
-HR.divider {
-    COLOR: lightslateblue;
-    BORDER-TOP-WIDTH: 1px;
-    BORDER-BOTTOM-WIDTH: 0px;
-    BORDER-LEFT-WIDTH: 0px;
-    BORDER-RIGHT-WIDTH: 0px;
-    HEIGHT: 1px
-}
-
-HR.table_divider {
-    COLOR: rgb(200, 200, 255);
-    BORDER-TOP-WIDTH: 1px;
-    BORDER-BOTTOM-WIDTH: 0px;
-    BORDER-LEFT-WIDTH: 0px;
-    BORDER-RIGHT-WIDTH: 0px;
-    BORDER-STYLE: dotted;
-    HEIGHT: 1px
-}
-
-TR.table_divider {
-    HEIGHT: 1px;
-    MARGIN: 0px;
-    PADDING: 0px
-}
-
-SPAN.index_selection {
-    FONT-WEIGHT: bold;
-    FONT-SIZE: 12pt;
-    FONT-FAMILY: Helvetica, sans-serif
-}
---></STYLE>
-</HEAD>
-
-<SCRIPT>
-function setTitle()
-{
-parent.document.title="xidldoc.pro (IDL Library)";
-}
-</SCRIPT>
-
-<BODY CLASS="standard" onload="setTitle();">
-
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="100%">
-<TR><TD VALIGN="TOP" BGCOLOR="#DDDDFF" style="BORDER-TOP: 1px solid #BBBBFF; BORDER-BOTTOM: 1px solid #6666AA; BORDER-LEFT: 1px solid #BBBBFF; BORDER-RIGHT: 1px solid #6666AA;">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
-<TR CLASS="navbar">
-<TD class="navbar_unselected">&nbsp;<A HREF="../../overview.html">Overview</A>&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;<A HREF="directory-overview.html">Directory</A>&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;<A HREF="../../full-index.html">Index</A>&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;<A HREF="../../search-page.html">Search</A>&nbsp;</TD>
-<TD class="navbar_selected">&nbsp;File&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;<A HREF="xidldoc.pro">Source</A>&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;<A HREF="../../idldoc-help.html">Help</A>&nbsp;</TD>
-<TD class="navbar_unselected">&nbsp;Etc&nbsp;</TD>
-</TR>
-</TABLE>
-</TD>
-<TD>&nbsp;&nbsp;&nbsp;</TD>
-<TD ROWSPAN="3" ALIGN="right"><FONT CLASS="logo"><NOBR>IDL Library</NOBR></FONT><BR><FONT CLASS="version"><NOBR>Michael Galloy, RSI</NOBR></FONT><BR><FONT CLASS="version" STYLE="font-weight: bold">Developer&nbsp;Documentation</FONT></TD>
-</TR>
-<TR><TD CLASS="navbar_small">&nbsp;<A HREF="stroccur.html">prev&nbsp;file</A>&nbsp;|&nbsp;next&nbsp;file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<NOBR><A HREF="xidldoc.html" TARGET="_top">view single page</A>&nbsp;|&nbsp;<A HREF="../../index.html" TARGET="_top">view frames</A>&nbsp;|&nbsp;<A HREF="xidldoc-routines.html" TARGET="routine_frame">update routines</A></NOBR></TD></TR>
-<TR><TD CLASS="navbar_small">SUMMARY:&nbsp;fields&nbsp;|&nbsp;<A HREF="#_routine_summary">routine</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DETAILS:&nbsp;<A HREF="#_routine_details">routine</A></TD></TR>
-<TR><TD></TD></TR>
-</TABLE>
-
-<HR CLASS="divider">
-
-<P>
-<FONT CLASS="directory">.\tools\idldoc</FONT></BR>
-<FONT CLASS="file">xidldoc.pro</FONT>
-<P>
-<DL>
-<DT CLASS="attribute">Last modification date:
-<DD CLASS="attribute_item">Mon Jan 17 13:59:02 2005</DD></DT>
-</DL>
-<P>
- xIDLdoc is a graphical front-end for IDLdoc, the IDL
- documentation system developed by Mike Galloy of RSI.
-
- <p> To use xIDLdoc, IDLdoc should already be installed in a user's
- path or compiled in memory. IDLdoc messages, warnings and errors are
- displayed in the IDL output log.
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="listing">
-<TR><TD CLASS="title">
-<A NAME="_routine_summary">Routine Summary</A>
-&nbsp;<FONT CLASS="list_tagline">17 routines</FONT>
-</TD></TR>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">function <A HREF="#_xidldoc::get_value">xidldoc::get_value</A>(uname)</P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  Finds and returns the value of a widget (or, for a button widget,  whether it is set), given the uname of the widget.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_xidldoc::set_value">xidldoc::set_value</A>, uname, value</P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  Finds and sets the value of a widget, given the uname of the widget  and the value to set.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_xidldoc::run">xidldoc::run</A></P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  Runs IDLdoc, given the parameters set in the xIDLdoc UI.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_xidldoc::handle_events">xidldoc::handle_events</A>, event</P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  Handles events in the xIDLdoc UI.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_xidldoc::cleanup_widgets">xidldoc::cleanup_widgets</A>, top</P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  Destroys the UI and cleans up any resources associated with it.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_xidldoc::start_xmanager">xidldoc::start_xmanager</A></P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  Calls XMANAGER to register xIDLdoc's widget interface.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_xidldoc::display">xidldoc::display</A></P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  Displays the header image in the draw window, if present.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_xidldoc::realize">xidldoc::realize</A></P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  Realizes the widget hierarchy.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_xidldoc::center_ui">xidldoc::center_ui</A></P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  Centers the UI on the display.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_xidldoc::make_input_row">xidldoc::make_input_row</A>, parent, label, text, [/no_button]</P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  Makes a UI element consisting of a label, a text field and a  "Browse" button.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">function <A HREF="#_xidldoc::select_font">xidldoc::select_font</A>([/big], [/bold])</P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  Returns a string containing the name of a font that can be used in a  label or text widget.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_xidldoc::build_widgets">xidldoc::build_widgets</A></P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  Builds the widget hierarchy.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_xidldoc::destruct">xidldoc::destruct</A></P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  The actual class destructor.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_xidldoc::cleanup">xidldoc::cleanup</A></P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  The official class destructor.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">function <A HREF="#_xidldoc::init">xidldoc::init</A>([header_image=<EM>RGB image</EM>])</P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  Class constructor, used to load class data.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  STYLE="BORDER-BOTTOM: 1px groove" WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_xidldoc__define">xidldoc__define</A></P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  The xIDLdoc class data definition routine.</P></TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure <A HREF="#_xidldoc">xidldoc</A>, [/no_image]</P></TD><TD ALIGN="right" VALIGN="top"></TD><TR><TD><P class="first_line">  This is a wrapper for simplifying the creation and use of an  <code>xIDLdoc</code> object.</P></TD></TR></TABLE>
-</TABLE>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="listing">
-<TR><TD CLASS="title"><A NAME="_routine_details">Routine Details</A></TD></TR>
-</TABLE>
-<P>
-<A NAME="_xidldoc::get_value"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-xidldoc::get_value
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">function xidldoc::get_value(<A HREF=#_xidldoc::get_value_param_uname>uname</A>)</P></TD></TR></TABLE>
-<P>
-
- Finds and returns the value of a widget (or, for a button widget,
- whether it is set), given the uname of the widget.
-
-<P>
-<DL>
-<DT CLASS="attribute">Returns
-<DD CLASS="attribute_item">
- The value of the widget, or for a button, 1 if set, 0 if
-   not set.
-</DD></DT>
-</DL>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_xidldoc::get_value_param_uname"/>
-<FONT CLASS="param_name">uname</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, required</NOBR><BR>
-<NOBR>string</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- The user value of the
-   widget being manipulated.
-</TD>
-</TR>
-</TABLE>
-<P>
-<P>
-<A NAME="_xidldoc::set_value"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-xidldoc::set_value
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure xidldoc::set_value, <A HREF=#_xidldoc::set_value_param_uname>uname</A>, <A HREF=#_xidldoc::set_value_param_value>value</A></P></TD></TR></TABLE>
-<P>
-
- Finds and sets the value of a widget, given the uname of the widget
- and the value to set.
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_xidldoc::set_value_param_uname"/>
-<FONT CLASS="param_name">uname</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, required</NOBR><BR>
-<NOBR>string</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- The user value of the
-   widget being manipulated.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_xidldoc::set_value_param_value"/>
-<FONT CLASS="param_name">value</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, required</NOBR><BR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- The value to assign the widget.
-</TD>
-</TR>
-</TABLE>
-<P>
-<P>
-<A NAME="_xidldoc::run"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-xidldoc::run
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure xidldoc::run</P></TD></TR></TABLE>
-<P>
-
- Runs IDLdoc, given the parameters set in the xIDLdoc UI. IDLdoc
- messages, warnings and errors are displayed in the IDL output
- log. It is assumed that the user has IDLdoc installed, either in
- their path, or already compiled in memory.
-<P>
-<P>
-<P>
-<A NAME="_xidldoc::handle_events"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-xidldoc::handle_events
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure xidldoc::handle_events, <A HREF=#_xidldoc::handle_events_param_event>event</A></P></TD></TR></TABLE>
-<P>
-
- Handles events in the xIDLdoc UI. All events generated in the UI
- pass through the wrapper routine HANDLE_EVENTS and arrive here,
- where the event is parsed based on the generating widget's user
- name.
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_xidldoc::handle_events_param_event"/>
-<FONT CLASS="param_name">event</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, required</NOBR><BR>
-<NOBR>structure</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- The event structure
-   passed from XMANAGER.
-</TD>
-</TR>
-</TABLE>
-<P>
-<P>
-<A NAME="_xidldoc::cleanup_widgets"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-xidldoc::cleanup_widgets
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure xidldoc::cleanup_widgets, <A HREF=#_xidldoc::cleanup_widgets_param_top>top</A></P></TD></TR></TABLE>
-<P>
-
- Destroys the UI and cleans up any resources associated with it.
- Destroys the object in this case, as well.
-
- <p> This method is called by XMANAGER through the widget cleanup routine
- CLEANUP_WIDGETS.
-
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_xidldoc::cleanup_widgets_param_top"/>
-<FONT CLASS="param_name">top</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in</NOBR><BR>
-<NOBR>long</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- The top-level base widget identifier,
-   required in the call by XMANAGER.
-</TD>
-</TR>
-</TABLE>
-<P>
-<P>
-<A NAME="_xidldoc::start_xmanager"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-xidldoc::start_xmanager
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure xidldoc::start_xmanager</P></TD></TR></TABLE>
-<P>
-
- Calls XMANAGER to register xIDLdoc's widget interface. Events are
- passed through the wrapper routine HANDLE_EVENTS. The kill_notify
- signal is passed through CLEANUP_WIDGETS.
-
- <p> Note that the NO_BLOCK keyword is ignored by IDL Runtime/Virtual
- Machine for IDL < 6.0.
-
-<P>
-<DL>
-<DT CLASS="attribute">Uses
-<DD CLASS="attribute_item">
- HANDLE_EVENTS, CLEANUP_WIDGETS
-</DD></DT>
-</DL>
-<P>
-<P>
-<P>
-<A NAME="_xidldoc::display"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-xidldoc::display
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure xidldoc::display</P></TD></TR></TABLE>
-<P>
-
- Displays the header image in the draw window, if present.
-<P>
-<P>
-<P>
-<A NAME="_xidldoc::realize"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-xidldoc::realize
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure xidldoc::realize</P></TD></TR></TABLE>
-<P>
-
- Realizes the widget hierarchy.
-<P>
-<P>
-<P>
-<A NAME="_xidldoc::center_ui"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-xidldoc::center_ui
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure xidldoc::center_ui</P></TD></TR></TABLE>
-<P>
-
- Centers the UI on the display.
-<P>
-<P>
-<P>
-<A NAME="_xidldoc::make_input_row"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-xidldoc::make_input_row
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure xidldoc::make_input_row, <A HREF=#_xidldoc::make_input_row_param_parent>parent</A>, <A HREF=#_xidldoc::make_input_row_param_label>label</A>, <A HREF=#_xidldoc::make_input_row_param_text>text</A>, [/<A HREF=#_xidldoc::make_input_row_keyword_no_button>no_button</A>]</P></TD></TR></TABLE>
-<P>
-
- Makes a UI element consisting of a label, a text field and a
- "Browse" button.
-
-<P>
-<DL>
-<DT CLASS="attribute">Todo
-<DD CLASS="attribute_item">
- Make this into a compound widget.
-
-</DD></DT>
-</DL>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Parameters</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_xidldoc::make_input_row_param_parent"/>
-<FONT CLASS="param_name">parent</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, required</NOBR><BR>
-<NOBR>long</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- The widget identifier
-   of the parent base of this group of widgets.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_xidldoc::make_input_row_param_label"/>
-<FONT CLASS="param_name">label</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, required</NOBR><BR>
-<NOBR>string</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- The text to display in
-   the label widget.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_xidldoc::make_input_row_param_text"/>
-<FONT CLASS="param_name">text</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, required</NOBR><BR>
-<NOBR>string</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- The text to display in
-   the text widget.
-</TD>
-</TR>
-</TABLE>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_xidldoc::make_input_row_keyword_no_button"/>
-<FONT CLASS="param_name">no_button</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- Set to not
-   display the "Browse" button.
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_xidldoc::select_font"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-xidldoc::select_font
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">function xidldoc::select_font([/<A HREF=#_xidldoc::select_font_keyword_big>big</A>], [/<A HREF=#_xidldoc::select_font_keyword_bold>bold</A>])</P></TD></TR></TABLE>
-<P>
-
- Returns a string containing the name of a font that can be used in a
- label or text widget.
-
-<P>
-<DL>
-<DT CLASS="attribute">Todo
-<DD CLASS="attribute_item">
- Make this into an independent function outside this class
- definition.
-
-</DD></DT>
-<DT CLASS="attribute">Returns
-<DD CLASS="attribute_item">
- A string giving the name of the font.
-</DD></DT>
-</DL>
-<P>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_xidldoc::select_font_keyword_big"/>
-<FONT CLASS="param_name">big</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- Set this keyword to get
-   a larger font.
-</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_xidldoc::select_font_keyword_bold"/>
-<FONT CLASS="param_name">bold</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- Set this keyword to get
-   a bold font.
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_xidldoc::build_widgets"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-xidldoc::build_widgets
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure xidldoc::build_widgets</P></TD></TR></TABLE>
-<P>
-
- Builds the widget hierarchy. Lots of buttons and fields.
-<P>
-<P>
-<P>
-<A NAME="_xidldoc::destruct"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-xidldoc::destruct
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure xidldoc::destruct</P></TD></TR></TABLE>
-<P>
-
- The actual class destructor. All cleanup code goes here, since it
- can be called directly.
-<P>
-<P>
-<P>
-<A NAME="_xidldoc::cleanup"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-xidldoc::cleanup
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure xidldoc::cleanup</P></TD></TR></TABLE>
-<P>
-
- The official class destructor. This method can't be called
- directly, however, so all code is placed in the
- <code>destruct</code> method instead.
-<P>
-<P>
-<P>
-<A NAME="_xidldoc::init"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-xidldoc::init
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">function xidldoc::init([<A HREF=#_xidldoc::init_keyword_header_image>header_image</A>=<EM>RGB image</EM>])</P></TD></TR></TABLE>
-<P>
-
- Class constructor, used to load class data. Only one instance of
- xIDLdoc can run at any time.
-
- <p> Note that only a pixel-interleaved RGB image can be displayed at
- the top of the interface.
-
-<P>
-<DL>
-<DT CLASS="attribute">Returns
-<DD CLASS="attribute_item">
- 1 on success, 0 on failure.
-</DD></DT>
-</DL>
-<P>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_xidldoc::init_keyword_header_image"/>
-<FONT CLASS="param_name">header_image</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>RGB image</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- A
-   pixel-interleaved RGB image to be displayed at the top of the
-   xIDLdoc interface.
-</TD>
-</TR>
-</TABLE>
-<P>
-<A NAME="_xidldoc__define"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-xidldoc__define
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure xidldoc__define</P></TD></TR></TABLE>
-<P>
-
- The xIDLdoc class data definition routine.
-
-<P>
-<P>
-<P>
-<A NAME="_xidldoc"/>
-<TABLE CLASS="routine_listing">
-<TR><TD>
-<SPAN CLASS="routine">
-xidldoc
-</SPAN>
-</TD><TD ALIGN="right">
-
-</TD></TR></TABLE>
-<TABLE CELLSPACING="2" CELLPADDING="0" BORDER="0"  WIDTH="100%"><TR><TD ALIGN="left" VALIGN="top"><P CLASS="code_header">procedure xidldoc, [/<A HREF=#_xidldoc_keyword_no_image>no_image</A>]</P></TD></TR></TABLE>
-<P>
-
- This is a wrapper for simplifying the creation and use of an
- <code>xIDLdoc</code> object.
-
-<P>
-<DL>
-<DT CLASS="attribute">Pre-condition
-<DD CLASS="attribute_item">
- IDLdoc must be in the user's path or already compiled in the
-   user's IDL session.
-</DD></DT>
-<DT CLASS="attribute">Examples
-<DD CLASS="attribute_item">
-
-   <pre>
-   IDL> xidldoc
-   </pre>
-
-</DD></DT>
-<DT CLASS="attribute">Requires
-<DD CLASS="attribute_item">
- IDL 6.0
-</DD></DT>
-<DT CLASS="attribute">Uses
-<DD CLASS="attribute_item">
- Michael D. Galloy's IDLdoc. IDLdoc can be downloaded for free
-   from the RSI codebank: <code>(www.rsinc.com/codebank)</code>.
-</DD></DT>
-<DT CLASS="attribute">Author
-<DD CLASS="attribute_item">
- Mark Piper, RSI, 2004
-</DD></DT>
-</DL>
-<P>
-<P>
-<TABLE CELLPADDING="3" CELLSPACING="0" CLASS="parameters">
-<TR CLASS="parameter_title">
-<TD COLSPAN=2>Keywords</TD>
-</TR>
-<TR CLASS="parameters">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%">
-<A NAME="_xidldoc_keyword_no_image"/>
-<FONT CLASS="param_name">no_image</FONT><BR>
-<FONT CLASS="param_attrib">
-<NOBR>in, optional</NOBR><BR>
-<NOBR>boolean</NOBR>
-</FONT>
-</TD>
-<TD VALIGN="top">
- Set this keyword so
-   that no image is displayed at the top of the xIDLdoc interface.
-</TD>
-</TR>
-</TABLE>
-<P>
-<HR CLASS="divider">
-<CENTER>
-<FONT STYLE="font-family: Arial; font-size: 8pt">
-Personal IDL library of Michael Galloy, Professional Services Engineer - Trainer/Consultant, 
-<A HREF="http://www.rsinc.com">Research Systems</A> <BR>
-For more information about these routines contact <A HREF="mailto:mgalloy@rsinc.com">Michael Galloy</A> <BR>
-Feel free to <A HREF="mailto:mgalloy@rsinc.com">submit a bug or feature request</A> for any of these routines <BR> 
-</FONT>
-</CENTER>
-<HR CLASS="divider">
-<FONT CLASS="tagline">Produced by IDLdoc 1.6 on Wed Feb 09 12:40:21 2005</FONT>
-</BODY></HTML>
Index: trunk/Documentation/idldoc/xidldoc.pro
===================================================================
--- trunk/Documentation/idldoc/xidldoc.pro	(revision 68)
+++ 	(revision )
@@ -1,524 +1,0 @@
-;=============================================================================
-;+
-; Finds and returns the value of a widget (or, for a button widget,
-; whether it is set), given the uname of the widget.
-;
-; @returns The value of the widget, or for a button, 1 if set, 0 if
-;   not set.
-; @param uname {in}{required}{type=string} The user value of the
-;   widget being manipulated.
-;-
-function xidldoc::get_value, uname
-    compile_opt idl2, hidden
-
-    if n_params() ne 1 then begin
-        message, 'Need widget user name.', /continue
-        return, 0
-    endif
-
-    id = widget_info(self.top, find_by_uname=uname)
-    name = strlowcase(widget_info(id, /name))
-    if name eq 'button' then begin
-        value = widget_info(id, /button_set)
-    endif else begin
-        widget_control, id, get_value=value
-    endelse
-    return, value
-end
-
-
-
-;=============================================================================
-;+
-; Finds and sets the value of a widget, given the uname of the widget
-; and the value to set.
-;
-; @param uname {in}{required}{type=string} The user value of the
-;   widget being manipulated.
-; @param value {in}{required} The value to assign the widget.
-;-
-pro xidldoc::set_value, uname, value
-    compile_opt idl2, hidden
-
-    if n_params() ne 2 then begin
-        message, 'Need widget user name and value.', /continue
-        return
-    endif
-
-    id = widget_info(self.top, find_by_uname=uname)
-    widget_control, id, set_value=value
-end
-
-
-
-;=============================================================================
-;+
-; Runs IDLdoc, given the parameters set in the xIDLdoc UI. IDLdoc
-; messages, warnings and errors are displayed in the IDL output
-; log. It is assumed that the user has IDLdoc installed, either in
-; their path, or already compiled in memory.
-;-
-pro xidldoc::run
-    compile_opt idl2, hidden
-
-    ;; Get widget values.
-    root = self->get_value('root')
-    overview = self->get_value('overview')
-    output = self->get_value('output')
-    title = self->get_value('title')
-    subtitle = self->get_value('subtitle')
-    footer = self->get_value('footer')
-    user = self->get_value('user')
-    embed = self->get_value('embed')
-    stats = self->get_value('stats')
-    quiet = self->get_value('quiet')
-    silent = self->get_value('silent')
-    navbar = self->get_value('navbar')
-    browse = self->get_value('browse')
-
-    ;; Do more parameter checking here?
-
-    ;; Set up the call to IDLdoc.
-    keys = create_struct('root', root, 'title', title, 'subtitle', subtitle, $
-                         'user', user, 'embed', embed, 'statistics', stats, $
-                         'quiet', quiet, 'silent', silent, $
-                         'nonavbar', ~navbar, 'browse_routines', browse)
-    if overview ne '' then keys = create_struct(keys, 'overview', overview)
-    if output ne '' then keys = create_struct(keys, 'output', output)
-    if footer ne '' then keys = create_struct(keys, 'footer', footer)
-    idldoc, _extra=keys
-end
-
-
-
-;=============================================================================
-;+
-; Handles events in the xIDLdoc UI. All events generated in the UI
-; pass through the wrapper routine HANDLE_EVENTS and arrive here,
-; where the event is parsed based on the generating widget's user
-; name.
-;
-; @param event {in}{required}{type=structure} The event structure
-;   passed from XMANAGER.
-;-
-pro xidldoc::handle_events, event
-    compile_opt idl2, hidden
-
-    uname = widget_info(event.id, /uname)
-    case uname of
-        'run': self->run
-        'cancel': widget_control, self.top, /destroy
-        'draw': self->display
-        'root_browse': begin
-            dir = dialog_pickfile(/directory, dialog_parent=self.top, $
-                                  title='Select IDLdoc Root Directory')
-            if ~dir then return
-            self->set_value, 'root', dir
-            output = self->get_value('output')
-            if ~output then self->set_value, 'output', dir
-        end
-        'overview_browse': begin
-            root = self->get_value('root')
-            file = dialog_pickfile(dialog_parent=self.top, /must_exist, $
-                                   path=root, title='Select Overview File')
-            if ~file then return
-            self->set_value, 'overview', file
-        end
-       'output_browse': begin
-            root = self->get_value('root')
-            dir = dialog_pickfile(/directory, dialog_parent=self.top, $
-                                  title='Select IDLdoc Output Directory', $
-                                  path=root)
-            if ~dir then return
-            self->set_value, 'output', dir
-        end
-       'footer_browse': begin
-            root = self->get_value('root')
-            file = dialog_pickfile(dialog_parent=self.top, /must_exist, $
-                                   path=root, title='Select Footer File')
-            if ~file then return
-            self->set_value, 'footer', file
-            end
-        else:
-    endcase
-end
-
-
-
-;=============================================================================
-;+
-; Destroys the UI and cleans up any resources associated with it.
-; Destroys the object in this case, as well.
-;
-; <p> This method is called by XMANAGER through the widget cleanup routine
-; CLEANUP_WIDGETS.
-;
-; @param top {in}{type=long} The top-level base widget identifier,
-;   required in the call by XMANAGER.
-;-
-pro xidldoc::cleanup_widgets, top
-    compile_opt idl2, hidden
-
-    obj_destroy, self
-end
-
-
-
-;=============================================================================
-;+
-; Calls XMANAGER to register xIDLdoc's widget interface. Events are
-; passed through the wrapper routine HANDLE_EVENTS. The kill_notify
-; signal is passed through CLEANUP_WIDGETS.
-;
-; <p> Note that the NO_BLOCK keyword is ignored by IDL Runtime/Virtual
-; Machine for IDL < 6.0.
-;
-; @uses HANDLE_EVENTS, CLEANUP_WIDGETS
-;-
-pro xidldoc::start_xmanager
-    compile_opt idl2, hidden
-
-    xmanager, obj_class(self), self.top, $
-              /no_block, $
-              event_handler='handle_events', $
-              cleanup='cleanup_widgets'
-end
-
-
-
-;=============================================================================
-;+
-; Displays the header image in the draw window, if present.
-;-
-pro xidldoc::display
-    compile_opt idl2, hidden
-
-    device, get_decomposed=odec
-    if odec eq 0 then begin
-        tvlct, r, g, b, /get
-        loadct, 0, /silent
-    endif
-    if self.has_image then tv, *self.image, true=1
-    if odec eq 0 then tvlct, r, g, b
-end
-
-
-
-;=============================================================================
-;+
-; Realizes the widget hierarchy.
-;-
-pro xidldoc::realize
-    compile_opt idl2, hidden
-
-    widget_control, self.top, /realize
-    if self.has_image then begin
-        widget_control, self.draw, get_value=window_id
-        self.win_id = window_id
-    endif
-end
-
-
-
-;=============================================================================
-;+
-; Centers the UI on the display.
-;-
-pro xidldoc::center_ui
-    compile_opt idl2, hidden
-
-    geom = widget_info(self.top, /geometry)
-    ss = get_screen_size()
-    xoffset = ((ss[0] - geom.scr_xsize)/2) > 0
-    yoffset = ((ss[1] - geom.scr_ysize)/2) > 0
-    widget_control, self.top, xoffset=xoffset, yoffset=yoffset
-end
-
-
-
-;=============================================================================
-;+
-; Makes a UI element consisting of a label, a text field and a
-; "Browse" button.
-;
-; @todo Make this into a compound widget.
-;
-; @param parent {in}{required}{type=long} The widget identifier
-;   of the parent base of this group of widgets.
-; @param label {in}{required}{type=string} The text to display in
-;   the label widget.
-; @param text {in}{required}{type=string} The text to display in
-;   the text widget.
-; @keyword no_button {in}{optional}{type=boolean} Set to not
-;   display the "Browse" button.
-;-
-pro xidldoc::make_input_row, parent, label, text, no_button=no_button
-    compile_opt idl2, hidden
-
-    under_base = widget_base(parent, /row)
-    base = widget_base(under_base, /row, space=5)
-    labl = widget_label(base, value=label+':', $
-                        font=self->select_font(/bold))
-    text  = widget_text(base, value=text, xsize=40, /editable, $
-                        uname=strlowcase(label))
-    button_base = widget_base(under_base, /row, map=~keyword_set(no_button))
-    butn  = widget_button(button_base, value='Browse', $
-                          uname=strlowcase(label)+'_browse')
-end
-
-
-
-;=============================================================================
-;+
-; Returns a string containing the name of a font that can be used in a
-; label or text widget.
-;
-; @todo Make this into an independent function outside this class
-; definition.
-;
-; @keyword big {in}{optional}{type=boolean} Set this keyword to get
-;   a larger font.
-; @keyword bold {in}{optional}{type=boolean} Set this keyword to get
-;   a bold font.
-; @returns A string giving the name of the font.
-;-
-function xidldoc::select_font, big=big, bold=bold
-    compile_opt idl2, hidden
-
-    case self.os of
-        'windows' : begin
-            font = 'Helvetica'
-            if keyword_set(big) then font += '*36' else font += '*14'
-            if keyword_set(bold) then font += '*Bold'
-            return, font
-        end
-        'unix' : begin
-            if keyword_set(big) then font = '9x15' else font = '6x13'
-            if keyword_set(bold) then font += 'bold'
-            return, font
-        end
-        else:
-    endcase
-end
-
-
-
-;=============================================================================
-;+
-; Builds the widget hierarchy. Lots of buttons and fields.
-;-
-pro xidldoc::build_widgets
-    compile_opt idl2, hidden
-
-    self.top = widget_base(title='IDLdoc', /column, base_align_right=0, $
-                           xpad=10, ypad=10)
-    widget_control, self.top, set_uvalue=self
-
-    if self.has_image then begin
-        self.draw = widget_draw(self.top, xsize=self.image_xs, $
-                                ysize=self.image_ys, graphics_level=0, $
-                                retain=0, /expose_events, uname='draw')
-    endif else begin
-        self.draw = -1
-        label = widget_label(self.top, value=' ')
-        label_row = widget_base(self.top, /row, /align_left, space=15)
-        label = widget_label(label_row, value='IDLdoc', $
-                             font=self->select_font(/big, /bold))
-        label_col = widget_base(label_row, /column, /align_bottom, ypad=5)
-        label = widget_label(label_col, $
-                             value='An IDL documentation system.', $
-                             font=self->select_font())
-        label = widget_label(self.top, value=' ')
-    endelse
-
-    base = widget_base(self.top, /column, /base_align_right)
-
-    self->make_input_row, base, 'Root', '.'
-    self->make_input_row, base, 'Overview', ''
-    self->make_input_row, base, 'Output', ''
-    self->make_input_row, base, 'Title', 'Research Systems, Inc.', $
-                          /no_button
-    self->make_input_row, base, 'Subtitle', 'IDL ' + !version.release, $
-                          /no_button
-    self->make_input_row, base, 'Footer', ''
-
-    doc_level_base = widget_base(self.top, /row)
-    label = widget_label(doc_level_base, value='Documentation level:', $
-                         font=self->select_font(/bold))
-
-    butn_base = widget_base(doc_level_base, /row, /exclusive)
-    butn = widget_button(butn_base, value='User', uname='user')
-    butn = widget_button(butn_base, value='Developer', uname='developer')
-    widget_control, butn, set_button=1
-
-    options_base = widget_base(self.top, /row, space=5)
-    label = widget_label(options_base, value='Options:  ', $
-                         font=self->select_font(/bold))
-
-    check_base1 = widget_base(options_base, /column, /nonexclusive)
-    butn = widget_button(check_base1, value='Embed', uname='embed')
-    butn = widget_button(check_base1, value='Statistics', uname='stats', $
-    	sensitive=0s)
-
-    check_base2 = widget_base(options_base, /column, /nonexclusive)
-    butn = widget_button(check_base2, value='Quiet', uname='quiet')
-    butn = widget_button(check_base2, value='Silent', uname='silent')
-
-    check_base3 = widget_base(options_base, /column, /nonexclusive)
-    butn = widget_button(check_base3, value='Navigation Bar', uname='navbar')
-    widget_control, butn, set_button=1
-    butn = widget_button(check_base3, value='Browse Window', uname='browse')
-
-    choice = widget_base(self.top, /row, frame=0, /align_right)
-    run = widget_button(choice, value='Run IDLdoc...', uname='run', xsize=100)
-    cancel = widget_button(choice, value='Cancel', uname='cancel', xsize=100)
-end
-
-
-
-;=============================================================================
-;+
-; The actual class destructor. All cleanup code goes here, since it
-; can be called directly.
-;-
-pro xidldoc::destruct
-    compile_opt idl2, hidden
-
-    if ptr_valid(self.image) then ptr_free, self.image
-end
-
-
-
-;=============================================================================
-;+
-; The official class destructor. This method can't be called
-; directly, however, so all code is placed in the
-; <code>destruct</code> method instead.
-;-
-pro xidldoc::cleanup
-    compile_opt idl2, hidden
-
-    self->destruct
-end
-
-
-
-;=============================================================================
-;+
-; Class constructor, used to load class data. Only one instance of
-; xIDLdoc can run at any time.
-;
-; <p> Note that only a pixel-interleaved RGB image can be displayed at
-; the top of the interface.
-;
-; @keyword header_image {in}{optional}{type=RGB image} A
-;   pixel-interleaved RGB image to be displayed at the top of the
-;   xIDLdoc interface.
-; @returns 1 on success, 0 on failure.
-;-
-function xidldoc::init, header_image=image
-    compile_opt idl2, hidden
-
-    if xregistered(obj_class(self)) then return, 0
-
-    self.os = strlowcase(!version.os_family) ;; 'windows' or 'unix'
-
-    if n_elements(image) ne 0 then begin
-        info = size(image, /structure)
-        fail = 0
-        if info.dimensions[0] ne 3 then ++fail
-        if info.n_dimensions ne 3 then ++fail
-        if fail eq 0 then begin
-            self.has_image = 1
-            self.image = ptr_new(image)
-            self.image_xs = info.dimensions[1]
-            self.image_ys = info.dimensions[2]
-        endif
-    endif
-
-    self->build_widgets
-    self->center_ui
-    self->realize
-    self->display
-    if ~(lmgr(/vm) || lmgr(/runtime)) then self->start_xmanager
-    return, 1
-end
-
-
-
-;=============================================================================
-;+
-; The xIDLdoc class data definition routine.
-;
-; @field top The top-level base widget identifier.
-; @field draw The draw widget identifier. Only present if an image is
-;   to be displayed at the top of the xIDLdoc interface.
-; @field win_id The window index of the draw widget, if present.
-; @field has_image 1 if an image is present, 0 otherwise.
-; @field image A pointer to the image data.
-; @field image_xs The xsize of the image.
-; @field image_ys The ysize of the image.
-; @field os The operating system IDL is running on.
-;-
-pro xidldoc__define
-    compile_opt idl2, hidden
-
-    a = { xidldoc, $
-          top       : 0, $
-          draw      : 0, $
-          win_id    : 0, $
-          has_image : 0, $
-          image     : ptr_new(), $
-          image_xs  : 0, $
-          image_ys  : 0, $
-          os        : '' $
-         }
-end
-
-
-
-;=============================================================================
-;+
-; This is a wrapper for simplifying the creation and use of an
-; <code>xIDLdoc</code> object.
-;
-; @file_comments xIDLdoc is a graphical front-end for IDLdoc, the IDL
-; documentation system developed by Mike Galloy of RSI.
-;
-; <p> To use xIDLdoc, IDLdoc should already be installed in a user's
-; path or compiled in memory. IDLdoc messages, warnings and errors are
-; displayed in the IDL output log.
-;
-; @keyword no_image {in}{optional}{type=boolean} Set this keyword so
-;   that no image is displayed at the top of the xIDLdoc interface.
-; @examples
-;   <pre>
-;   IDL> xidldoc
-;   </pre>
-;
-; @pre IDLdoc must be in the user's path or already compiled in the
-;   user's IDL session.
-; @uses Michael D. Galloy's IDLdoc. IDLdoc can be downloaded for free
-;   from the RSI codebank: <code>(www.rsinc.com/codebank)</code>.
-; @requires IDL 6.0
-; @author Mark Piper, RSI, 2004
-;-
-pro xidldoc, no_image=no_image
-    compile_opt idl2, logical_predicate
-
-    home = sourceroot()
-
-    if ~keyword_set(no_image) then begin
-        file = home + 'idldoc_splash1.png'
-        if file_test(file) then begin
-            splash_color = read_image(file)
-            odoc = obj_new('xidldoc', header_image=splash_color)
-        endif
-    endif else $
-        odoc = obj_new('xidldoc')
-
-    if ~obj_valid(odoc) then return
-
-    ;; Start XMANAGER last in runtime/vm mode for IDL < 6.1.
-    if lmgr(/vm) || lmgr(/runtime) then odoc->start_xmanager
-end
Index: trunk/Documentation/idldoc/xidldoc/dir-files.html
===================================================================
--- trunk/Documentation/idldoc/xidldoc/dir-files.html	(revision 69)
+++ trunk/Documentation/idldoc/xidldoc/dir-files.html	(revision 69)
@@ -0,0 +1,35 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<!-- Generated by IDLdoc 2.0 on Tue Mar 21 17:54:34 2006 -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>Documentation/idldoc/xidldoc/</title>
+    
+    <link rel="stylesheet" type="text/css" href="../../../listings.css" />
+    
+  </head>
+
+  <body>
+    <div id="container">
+      <h1><a href="directory-overview.html" target="file_frame">Documentation/idldoc/xidldoc/</a></h1>
+
+      
+
+      
+      <h1>SAV files</h1>
+
+      <ul>
+	
+	<li><a href="xidldoc-sav.html" target="file_frame">xidldoc.sav</a></li>
+      </ul>
+
+      <div id="tagline">1 file</div>
+
+      
+    </div>
+  </body>
+</html>
Index: trunk/Documentation/idldoc/xidldoc/directory-overview.html
===================================================================
--- trunk/Documentation/idldoc/xidldoc/directory-overview.html	(revision 69)
+++ trunk/Documentation/idldoc/xidldoc/directory-overview.html	(revision 69)
@@ -0,0 +1,105 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<!-- Generated by IDLdoc 2.0 on Tue Mar 21 17:54:48 2006 -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>Documentation/idldoc/xidldoc/ (IDLdoc API documentation)</title>
+
+    
+    <link rel="stylesheet" type="text/css" href="../../../main_files.css" media="all"/>
+    <link rel="stylesheet" type="text/css" href="../../../main_files_print.css" media="print"/>
+    
+
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="Documentation/idldoc/xidldoc/ (IDLdoc API documentation)";
+      }
+    </script>
+  </head>
+
+
+  <body onload="setTitle();">
+
+    <div id="navbar_title">
+  <h1>IDLdoc API documentation</h1>
+  <h2>Produced on Tue Mar 21 17:52:16 2006</h2>
+</div>
+
+
+<div id="main_navbar">
+
+  <table cellspacing="0">
+    <tr>
+      
+      <td><a href="../../../overview.html" title="Overview of library">Overview</a></td>
+      
+
+      
+      <td id="selected">Directory</td>
+      
+
+      
+      <td><a href="../../../idldoc-categories.html" title="Browse library by category">Categories</a></td>
+      
+
+      
+      <td><a href="../../../idldoc-index.html" title="Index of files, routines, and parameters">Index</a></td>
+      
+
+      
+      <td><a href="../../../search-page.html" title="Search library">Search</a></td>
+      
+
+      <td >File</td>
+
+      
+      <td >Source</td>
+      
+
+      
+      <td><a href="../../../idldoc-help.html" title="Help on IDLdoc">Help</a></td>
+      
+
+      <td >Etc</td>
+
+      <td id="flexible">Developer&nbsp;documentation</td>
+    </tr>
+  </table>
+
+</div>
+
+<div id="secondary_navbar">
+
+&lt;&lt; prev file | next file &gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;<a href="./directory-overview.html" target="_TOP">view single page</a> | <a href="../../../index.html" target="_TOP">view frames</a>&nbsp;&nbsp;&nbsp;&nbsp;summary: fields | routine&nbsp;&nbsp;&nbsp;&nbsp;details: routine
+
+</div>
+
+
+    <div id="container">
+
+      <h1>Directory overview for Documentation/idldoc/xidldoc/</h1>
+
+      
+
+      
+
+      
+      <h2>SAV files</h2>
+
+      <dl>
+	
+	<dt><a href="xidldoc-sav.html" target="file_frame">xidldoc.sav</a></dt>
+      </dl>
+      
+
+      
+
+      <div id="tagline">Produced by IDLdoc 2.0 on Tue Mar 21 17:54:48 2006.</div>
+
+    </div>
+
+  </body>
+</html>
Index: trunk/Documentation/idldoc/xidldoc/xidldoc-sav.html
===================================================================
--- trunk/Documentation/idldoc/xidldoc/xidldoc-sav.html	(revision 69)
+++ trunk/Documentation/idldoc/xidldoc/xidldoc-sav.html	(revision 69)
@@ -0,0 +1,165 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!-- Generated by IDLdoc 2.0 on Tue Mar 21 17:54:33 2006 -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>xidldoc.sav (IDLdoc API documentation)</title>
+
+    
+    <link rel="stylesheet" type="text/css" media="all" href="../../../main_files.css" />
+    <link rel="stylesheet" type="text/css" media="print" href="../../../main_files_print.css" />
+    
+
+    <script type="text/javascript">
+      function setTitle() {
+        parent.document.title="xidldoc.sav (IDLdoc API documentation)";
+      }
+    </script>
+  </head>
+
+  <body onload="setTitle();">
+
+    <div id="navbar_title">
+  <h1>IDLdoc API documentation</h1>
+  <h2>Produced on Tue Mar 21 17:52:16 2006</h2>
+</div>
+
+
+<div id="main_navbar">
+
+  <table cellspacing="0">
+    <tr>
+      
+      <td><a href="../../../overview.html" title="Overview of library">Overview</a></td>
+      
+
+      
+      <td >Directory</td>
+      
+
+      
+      <td><a href="../../../idldoc-categories.html" title="Browse library by category">Categories</a></td>
+      
+
+      
+      <td><a href="../../../idldoc-index.html" title="Index of files, routines, and parameters">Index</a></td>
+      
+
+      
+      <td><a href="../../../search-page.html" title="Search library">Search</a></td>
+      
+
+      <td id="selected">File</td>
+
+      
+      <td >Source</td>
+      
+
+      
+      <td><a href="../../../idldoc-help.html" title="Help on IDLdoc">Help</a></td>
+      
+
+      <td >Etc</td>
+
+      <td id="flexible">Developer&nbsp;documentation</td>
+    </tr>
+  </table>
+
+</div>
+
+<div id="secondary_navbar">
+
+&lt;&lt; prev file | next file &gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;<a href="xidldoc-sav.html" target="_TOP">view single page</a> | <a href="../../../index.html" target="_TOP">view frames</a>&nbsp;&nbsp;&nbsp;&nbsp;summary: fields | routine&nbsp;&nbsp;&nbsp;&nbsp;details: routine
+
+</div>
+
+
+    <div id="container">
+
+      <h1 class="directory"><a href="directory-overview.html">Documentation/idldoc/xidldoc</a></h1>
+      <h2 class="pro_file">xidldoc.sav</h2>
+
+      <table id="sav_attr" cellspacing="0">
+	<tr>
+	  <td>Description</td>
+	  <td class="value"></td>
+	</tr>
+	<tr>
+	  <td>Filetype</td>
+	  <td class="value">Portable (XDR) compressed</td>
+	</tr>
+	<tr>
+	  <td>User</td>
+	  <td class="value">mgalloy</td>
+	</tr>
+	<tr>
+	  <td>Host</td>
+	  <td class="value">GSGMGALLOY-LT</td>
+	</tr>
+	<tr>
+	  <td>Date</td>
+	  <td class="value">Sat Mar 11 21:43:08 2006</td>
+	</tr>
+	<tr>
+	  <td>Architecture</td>
+	  <td class="value">x86</td>
+	  </tr>
+	<tr>
+	  <td>Operating system</td>
+	  <td class="value">Win32</td>
+	</tr>
+	<tr>
+	  <td>Release</td>
+	  <td class="value">6.0</td>
+	</tr>
+	
+	
+	
+	
+	<tr>
+	  <td><a href="#proc">Procedures</a></td>
+	  <td class="value">                    30</td>
+	</tr>
+	
+	
+	<tr>
+	  <td><a href="#func">Functions</a></td>
+	  <td class="value">                    28</td>
+	</tr>
+	
+	
+	
+	
+      </table>
+
+      
+
+      
+
+      
+
+      
+      <h2 id="proc">                    30 procedures</h2>
+      
+
+      
+      <h2 id="func">                    28 functions</h2>
+      
+
+      
+
+      
+
+      
+
+      
+
+      <div id="tagline">Produced by IDLdoc 2.0 on Tue Mar 21 17:54:33 2006.</div>
+
+    </div>
+
+  </body>
+</html>
