diff docs/scripts/html/code/SDFilesToHTML.html @ 0:4816e4a8ae95 draft default tip

Uploaded
author deepakjadmin
date Wed, 20 Jan 2016 09:23:18 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/scripts/html/code/SDFilesToHTML.html	Wed Jan 20 09:23:18 2016 -0500
@@ -0,0 +1,1943 @@
+<html>
+<head>
+<title>MayaChemTools:Code:SDFilesToHTML.pl</title>
+<meta http-equiv="content-type" content="text/html;charset=utf-8">
+<link rel="stylesheet" type="text/css" href="../../../css/MayaChemToolsCode.css">
+</head>
+<body leftmargin="20" rightmargin="20" topmargin="10" bottommargin="10">
+<br/>
+<center>
+<a href="http://www.mayachemtools.org" title="MayaChemTools Home"><img src="../../../images/MayaChemToolsLogo.gif" border="0" alt="MayaChemTools"></a>
+</center>
+<br/>
+<pre>
+   1 #!/usr/bin/perl -w
+   2 <span class="c">#</span>
+   3 <span class="c"># $RCSfile: SDFilesToHTML.pl,v $</span>
+   4 <span class="c"># $Date: 2015/02/28 20:46:20 $</span>
+   5 <span class="c"># $Revision: 1.50 $</span>
+   6 <span class="c">#</span>
+   7 <span class="c"># Author: Manish Sud &lt;msud@san.rr.com&gt;</span>
+   8 <span class="c">#</span>
+   9 <span class="c"># Copyright (C) 2015 Manish Sud. All rights reserved.</span>
+  10 <span class="c">#</span>
+  11 <span class="c"># This file is part of MayaChemTools.</span>
+  12 <span class="c">#</span>
+  13 <span class="c"># MayaChemTools is free software; you can redistribute it and/or modify it under</span>
+  14 <span class="c"># the terms of the GNU Lesser General Public License as published by the Free</span>
+  15 <span class="c"># Software Foundation; either version 3 of the License, or (at your option) any</span>
+  16 <span class="c"># later version.</span>
+  17 <span class="c">#</span>
+  18 <span class="c"># MayaChemTools is distributed in the hope that it will be useful, but without</span>
+  19 <span class="c"># any warranty; without even the implied warranty of merchantability of fitness</span>
+  20 <span class="c"># for a particular purpose.  See the GNU Lesser General Public License for more</span>
+  21 <span class="c"># details.</span>
+  22 <span class="c">#</span>
+  23 <span class="c"># You should have received a copy of the GNU Lesser General Public License</span>
+  24 <span class="c"># along with MayaChemTools; if not, see &lt;http://www.gnu.org/licenses/&gt; or</span>
+  25 <span class="c"># write to the Free Software Foundation Inc., 59 Temple Place, Suite 330,</span>
+  26 <span class="c"># Boston, MA, 02111-1307, USA.</span>
+  27 <span class="c">#</span>
+  28 
+  29 <span class="k">use</span> <span class="w">strict</span><span class="sc">;</span>
+  30 <span class="k">use</span> <span class="w">FindBin</span><span class="sc">;</span> <span class="k">use</span> <span class="w">lib</span> <span class="q">&quot;$FindBin::Bin/../lib&quot;</span><span class="sc">;</span>
+  31 <span class="k">use</span> <span class="w">Getopt::Long</span><span class="sc">;</span>
+  32 <span class="k">use</span> <span class="w">File::Basename</span><span class="sc">;</span>
+  33 <span class="k">use</span> <span class="w">File::Spec</span><span class="sc">;</span>
+  34 <span class="k">use</span> <span class="w">Text::ParseWords</span><span class="sc">;</span>
+  35 <span class="k">use</span> <span class="w">Benchmark</span><span class="sc">;</span>
+  36 <span class="k">use</span> <span class="w">Cwd</span><span class="sc">;</span>
+  37 <span class="k">use</span> <span class="w">FileUtil</span><span class="sc">;</span>
+  38 <span class="k">use</span> <span class="w">SDFileUtil</span><span class="sc">;</span>
+  39 <span class="k">use</span> <span class="w">TextUtil</span><span class="sc">;</span>
+  40 <span class="k">use</span> <span class="w">HTMLUtil</span><span class="sc">;</span>
+  41 
+  42 <span class="k">my</span><span class="s">(</span><span class="i">$ScriptName</span><span class="cm">,</span> <span class="i">%Options</span><span class="cm">,</span> <span class="i">$StartTime</span><span class="cm">,</span> <span class="i">$EndTime</span><span class="cm">,</span> <span class="i">$TotalTime</span><span class="s">)</span><span class="sc">;</span>
+  43 
+  44 <span class="c"># Autoflush STDOUT</span>
+  45 <span class="i">$|</span> = <span class="n">1</span><span class="sc">;</span>
+  46 
+  47 <span class="c"># Starting message...</span>
+  48 <span class="i">$ScriptName</span> = <span class="i">basename</span><span class="s">(</span><span class="i">$0</span><span class="s">)</span><span class="sc">;</span>
+  49 <span class="k">print</span> <span class="q">&quot;\n$ScriptName: Starting...\n\n&quot;</span><span class="sc">;</span>
+  50 <span class="i">$StartTime</span> = <span class="w">new</span> <span class="w">Benchmark</span><span class="sc">;</span>
+  51 
+  52 <span class="c"># Get the options and setup script...</span>
+  53 <span class="i">SetupScriptUsage</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+  54 <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">help</span>} || <span class="i">@ARGV</span> &lt; <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
+  55   <span class="k">die</span> <span class="i">GetUsageFromPod</span><span class="s">(</span><span class="q">&quot;$FindBin::Bin/$ScriptName&quot;</span><span class="s">)</span><span class="sc">;</span>
+  56 <span class="s">}</span>
+  57 
+  58 <span class="k">my</span><span class="s">(</span><span class="i">@SDFilesList</span><span class="s">)</span><span class="sc">;</span>
+  59 <span class="i">@SDFilesList</span> = <span class="i">ExpandFileNames</span><span class="s">(</span>\<span class="i">@ARGV</span><span class="cm">,</span> <span class="q">&quot;sdf sd&quot;</span><span class="s">)</span><span class="sc">;</span>
+  60 
+  61 <span class="c">#Make sure appropriate mode specific option values are specified...</span>
+  62 <span class="k">print</span> <span class="q">&quot;Processing options...\n&quot;</span><span class="sc">;</span>
+  63 <span class="k">my</span><span class="s">(</span><span class="i">%OptionsInfo</span><span class="s">)</span><span class="sc">;</span>
+  64 <span class="i">ProcessOptions</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+  65 
+  66 <span class="c"># Collect information about SD files...</span>
+  67 <span class="k">print</span> <span class="q">&quot;Checking input SD file(s)...\n&quot;</span><span class="sc">;</span>
+  68 <span class="k">my</span><span class="s">(</span><span class="i">%SDFilesInfo</span><span class="s">)</span><span class="sc">;</span>
+  69 <span class="i">RetrieveSDFilesInfo</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+  70 <span class="i">SetupMultipleTablesAndMiscInfo</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+  71 
+  72 <span class="c"># Generate output files...</span>
+  73 <span class="k">my</span><span class="s">(</span><span class="i">$FileIndex</span><span class="s">)</span><span class="sc">;</span>
+  74 <span class="k">if</span> <span class="s">(</span><span class="i">@SDFilesList</span> &gt; <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
+  75   <span class="k">print</span> <span class="q">&quot;\nProcessing SD files...\n&quot;</span><span class="sc">;</span>
+  76 <span class="s">}</span>
+  77 <span class="k">for</span> <span class="i">$FileIndex</span> <span class="s">(</span><span class="n">0</span> .. <span class="i">$#SDFilesList</span><span class="s">)</span> <span class="s">{</span>
+  78   <span class="k">if</span> <span class="s">(</span><span class="i">$SDFilesInfo</span>{<span class="w">FileOkay</span>}[<span class="i">$FileIndex</span>]<span class="s">)</span> <span class="s">{</span>
+  79     <span class="k">print</span> <span class="q">&quot;\nProcessing file $SDFilesList[$FileIndex]...\n&quot;</span><span class="sc">;</span>
+  80     <span class="i">GenerateHTMLTable</span><span class="s">(</span><span class="i">$FileIndex</span><span class="s">)</span><span class="sc">;</span>
+  81   <span class="s">}</span>
+  82 <span class="s">}</span>
+  83 <span class="k">print</span> <span class="q">&quot;\n$ScriptName:Done...\n\n&quot;</span><span class="sc">;</span>
+  84 
+  85 <span class="i">$EndTime</span> = <span class="w">new</span> <span class="w">Benchmark</span><span class="sc">;</span>
+  86 <span class="i">$TotalTime</span> = <span class="w">timediff</span> <span class="s">(</span><span class="i">$EndTime</span><span class="cm">,</span> <span class="i">$StartTime</span><span class="s">)</span><span class="sc">;</span>
+  87 <span class="k">print</span> <span class="q">&quot;Total time: &quot;</span><span class="cm">,</span> <span class="i">timestr</span><span class="s">(</span><span class="i">$TotalTime</span><span class="s">)</span><span class="cm">,</span> <span class="q">&quot;\n&quot;</span><span class="sc">;</span>
+  88 
+  89 <span class="c">###############################################################################</span>
+  90 
+  91 <span class="c"># Generate HTML table(s)...</span>
+<a name="GenerateHTMLTable-"></a>  92 <span class="k">sub </span><span class="m">GenerateHTMLTable</span> <span class="s">{</span>
+  93   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+  94 
+  95   <span class="k">if</span> <span class="s">(</span><span class="i">$SDFilesInfo</span>{<span class="w">MultipleHTMLTables</span>}[<span class="i">$Index</span>]<span class="s">)</span> <span class="s">{</span>
+  96     <span class="i">GenerateMultipleHTMLTables</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span><span class="sc">;</span>
+  97   <span class="s">}</span>
+  98   <span class="k">else</span> <span class="s">{</span>
+  99     <span class="i">GenerateOneHTMLTable</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span><span class="sc">;</span>
+ 100   <span class="s">}</span>
+ 101 <span class="s">}</span>
+ 102 
+ 103 <span class="c"># Generate one HTML table...</span>
+<a name="GenerateOneHTMLTable-"></a> 104 <span class="k">sub </span><span class="m">GenerateOneHTMLTable</span> <span class="s">{</span>
+ 105   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 106   <span class="k">my</span><span class="s">(</span><span class="i">$SDFile</span><span class="cm">,</span> <span class="i">$TopHTMLDir</span><span class="cm">,</span> <span class="i">$HTMLFile</span><span class="cm">,</span> <span class="i">$StartCmpdNum</span><span class="cm">,</span> <span class="i">$EndCmpdNum</span><span class="cm">,</span> <span class="i">$CSSFile</span><span class="cm">,</span> <span class="i">$CSSRef</span><span class="cm">,</span> <span class="i">$CSSFilePath</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="s">)</span><span class="sc">;</span>
+ 107 
+ 108   <span class="i">$HTMLFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">&quot;.html&quot;</span><span class="sc">;</span>
+ 109   <span class="i">$SDFile</span> = <span class="i">$SDFilesList</span>[<span class="i">$Index</span>]<span class="sc">;</span>
+ 110 
+ 111   <span class="c"># Setup data directories...</span>
+ 112   <span class="s">(</span><span class="i">$TopHTMLDir</span><span class="s">)</span> = <span class="i">SetupDataDirs</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span><span class="sc">;</span>
+ 113 
+ 114   <span class="c"># Setup stylesheet file...</span>
+ 115   <span class="i">$CSSRef</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 116   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">stylesheet</span>} =~ <span class="q">/^new$/i</span><span class="s">)</span> <span class="s">{</span>
+ 117     <span class="i">$CSSFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">&quot;.css&quot;</span><span class="sc">;</span> <span class="i">$CSSRef</span> = <span class="q">&quot;.\/&quot;</span> . <span class="q">&quot;$CSSFile&quot;</span><span class="sc">;</span>
+ 118     <span class="i">$CSSFilePath</span> = <span class="q">&quot;$TopHTMLDir&quot;</span> . <span class="q">&quot;\/&quot;</span> . <span class="i">$CSSFile</span><span class="sc">;</span>
+ 119     <span class="i">GenerateStyleSheetFile</span><span class="s">(</span><span class="i">$CSSFilePath</span><span class="s">)</span><span class="sc">;</span>
+ 120   <span class="s">}</span>
+ 121   <span class="k">elsif</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">stylesheet</span>} =~ <span class="q">/^old$/i</span><span class="s">)</span> <span class="s">{</span>
+ 122     <span class="i">$CSSRef</span> = <span class="i">$Options</span>{<span class="w">stylesheetname</span>}<span class="sc">;</span>
+ 123   <span class="s">}</span>
+ 124 
+ 125   <span class="c"># Set HTML file location...</span>
+ 126   <span class="i">$HTMLFile</span> = <span class="q">&quot;$TopHTMLDir&quot;</span> . <span class="q">&quot;\/&quot;</span> . <span class="i">$HTMLFile</span><span class="sc">;</span>
+ 127 
+ 128   <span class="k">print</span> <span class="q">&quot;Generating HTML file $HTMLFile...\n&quot;</span><span class="sc">;</span>
+ 129   <span class="k">open</span> <span class="w">HTMLFILE</span><span class="cm">,</span> <span class="q">&quot;&gt;$HTMLFile&quot;</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Error: Can&#39;t open $HTMLFile: $! \n&quot;</span><span class="sc">;</span>
+ 130   <span class="k">open</span> <span class="w">SDFILE</span><span class="cm">,</span> <span class="q">&quot;$SDFile&quot;</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Error: Can&#39;t open $SDFile: $! \n&quot;</span><span class="sc">;</span>
+ 131 
+ 132   <span class="c"># Write out HTML page header...</span>
+ 133   <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLPageHeader</span><span class="s">(</span><span class="i">$SDFilesInfo</span>{<span class="w">HTMLTitle</span>}[<span class="i">$Index</span>]<span class="cm">,</span> <span class="i">$CSSRef</span><span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">TopHTMLDirStrViewerJSFileRef</span>}<span class="s">)</span><span class="sc">;</span>
+ 134 
+ 135   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerJSFileRef</span>}<span class="s">)</span> <span class="s">{</span>
+ 136     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupStrViewerJSInitCmd</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">TopHTMLDirStrViewerCodeBase</span>}<span class="s">)</span><span class="sc">;</span>
+ 137   <span class="s">}</span>
+ 138 
+ 139   <span class="c"># Setup page title...</span>
+ 140   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">TitleDisplay</span>}<span class="s">)</span> <span class="s">{</span>
+ 141     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLPageTitle</span><span class="s">(</span><span class="i">$SDFilesInfo</span>{<span class="w">HTMLTitle</span>}[<span class="i">$Index</span>]<span class="s">)</span><span class="sc">;</span>
+ 142   <span class="s">}</span>
+ 143   <span class="k">else</span> <span class="s">{</span>
+ 144     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLEmptyLines</span><span class="s">(</span><span class="n">1</span><span class="s">)</span><span class="sc">;</span>
+ 145   <span class="s">}</span>
+ 146 
+ 147   <span class="c"># Start the table...</span>
+ 148   <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLAlignmentBegin</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 149   <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLTableHeader</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">TableBorder</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">TableCellPadding</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">TableCellSpacing</span>}<span class="s">)</span><span class="sc">;</span>
+ 150 
+ 151   <span class="c"># Generate table rows...</span>
+ 152   <span class="i">$StartCmpdNum</span> = <span class="n">1</span><span class="sc">;</span>
+ 153   <span class="i">$EndCmpdNum</span> = <span class="i">$SDFilesInfo</span>{<span class="w">CmpdCount</span>}[<span class="i">$Index</span>]<span class="sc">;</span>
+ 154   <span class="i">$TableNum</span> = <span class="n">1</span><span class="sc">;</span>
+ 155   <span class="i">GenerateTableRows</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$StartCmpdNum</span><span class="cm">,</span> <span class="i">$EndCmpdNum</span><span class="cm">,</span> \<span class="i">*SDFILE</span><span class="cm">,</span> \<span class="i">*HTMLFILE</span><span class="s">)</span><span class="sc">;</span>
+ 156 
+ 157   <span class="c"># Finish up the table...</span>
+ 158   <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLTableEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 159   <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLAlignmentEnd</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 160 
+ 161   <span class="c"># Write out HTML page end...</span>
+ 162   <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLPageEnd</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">FooterMsg</span>}<span class="s">)</span><span class="sc">;</span>
+ 163 
+ 164   <span class="k">close</span> <span class="w">HTMLFILE</span><span class="sc">;</span>
+ 165   <span class="k">close</span> <span class="w">SDFILE</span><span class="sc">;</span>
+ 166 <span class="s">}</span>
+ 167 
+ 168 <span class="c"># Generate multiple tables...</span>
+<a name="GenerateMultipleHTMLTables-"></a> 169 <span class="k">sub </span><span class="m">GenerateMultipleHTMLTables</span> <span class="s">{</span>
+ 170   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 171   <span class="k">my</span><span class="s">(</span><span class="i">$TopHTMLDir</span><span class="cm">,</span> <span class="i">$SubHTMLDir</span><span class="cm">,</span> <span class="i">$SDFile</span><span class="cm">,</span> <span class="i">$HTMLFile</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$TableCount</span><span class="cm">,</span> <span class="i">$TableIndex</span><span class="cm">,</span> <span class="i">$TableStartCmpdNum</span><span class="cm">,</span> <span class="i">$TableEndCmpdNum</span><span class="cm">,</span> <span class="i">$PrintMsg</span><span class="cm">,</span> <span class="i">$CSSFile</span><span class="cm">,</span> <span class="i">$CSSRef</span><span class="cm">,</span> <span class="i">$CSSFilePath</span><span class="cm">,</span> <span class="i">$NewStyleSheet</span><span class="cm">,</span> <span class="i">$StrViewerCodeBase</span><span class="cm">,</span> <span class="i">$StrViewerJSFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 172 
+ 173   <span class="c"># Open SD file...</span>
+ 174   <span class="i">$SDFile</span> = <span class="i">$SDFilesList</span>[<span class="i">$Index</span>]<span class="sc">;</span>
+ 175   <span class="k">open</span> <span class="w">SDFILE</span><span class="cm">,</span> <span class="q">&quot;$SDFile&quot;</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Error: Can&#39;t open $SDFile: $! \n&quot;</span><span class="sc">;</span>
+ 176 
+ 177   <span class="c"># Set up data directories to hold various html files...</span>
+ 178   <span class="s">(</span><span class="i">$TopHTMLDir</span><span class="cm">,</span> <span class="i">$SubHTMLDir</span><span class="s">)</span> = <span class="i">SetupDataDirs</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span><span class="sc">;</span>
+ 179 
+ 180   <span class="c"># Create stylesheet file...</span>
+ 181   <span class="i">$CSSRef</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 182   <span class="i">$NewStyleSheet</span> = <span class="n">0</span><span class="sc">;</span>
+ 183   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">stylesheet</span>} =~ <span class="q">/^new$/i</span><span class="s">)</span> <span class="s">{</span>
+ 184     <span class="i">$NewStyleSheet</span> = <span class="n">1</span><span class="sc">;</span>
+ 185     <span class="i">$CSSFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">&quot;.css&quot;</span><span class="sc">;</span>
+ 186     <span class="i">$CSSFilePath</span> = <span class="q">&quot;$TopHTMLDir&quot;</span> . <span class="q">&quot;\/&quot;</span> . <span class="i">$CSSFile</span><span class="sc">;</span>
+ 187     <span class="i">GenerateStyleSheetFile</span><span class="s">(</span><span class="i">$CSSFilePath</span><span class="s">)</span><span class="sc">;</span>
+ 188   <span class="s">}</span>
+ 189   <span class="k">elsif</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">stylesheet</span>} =~ <span class="q">/^old$/i</span><span class="s">)</span> <span class="s">{</span>
+ 190     <span class="i">$CSSRef</span> = <span class="i">$Options</span>{<span class="w">stylesheetname</span>}<span class="sc">;</span>
+ 191   <span class="s">}</span>
+ 192 
+ 193   <span class="i">$PrintMsg</span> = <span class="n">1</span><span class="sc">;</span>
+ 194   <span class="c"># Generate HTML files for all the tables...</span>
+ 195   <span class="i">$TableCount</span> = <span class="i">$SDFilesInfo</span>{<span class="w">TableCount</span>}[<span class="i">$Index</span>]<span class="sc">;</span>
+ 196   <span class="k">for</span> <span class="i">$TableNum</span> <span class="s">(</span><span class="n">1</span> .. <span class="i">$TableCount</span><span class="s">)</span> <span class="s">{</span>
+ 197     <span class="i">$TableIndex</span> = <span class="i">$TableNum</span> - <span class="n">1</span><span class="sc">;</span>
+ 198     <span class="i">$HTMLFile</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableHTMLFiles</span>}[<span class="i">$Index</span>]}[<span class="i">$TableIndex</span>]<span class="sc">;</span>
+ 199     <span class="i">$TableStartCmpdNum</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableStartCmpdNum</span>}[<span class="i">$Index</span>]}[<span class="i">$TableIndex</span>]<span class="sc">;</span>
+ 200     <span class="i">$TableEndCmpdNum</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableEndCmpdNum</span>}[<span class="i">$Index</span>]}[<span class="i">$TableIndex</span>]<span class="sc">;</span>
+ 201 
+ 202     <span class="c"># Setup file name...</span>
+ 203     <span class="k">if</span> <span class="s">(</span><span class="i">$TableNum</span> == <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
+ 204       <span class="i">$HTMLFile</span> = <span class="q">&quot;$TopHTMLDir&quot;</span> . <span class="q">&quot;\/&quot;</span> . <span class="i">$HTMLFile</span><span class="sc">;</span>
+ 205       <span class="k">print</span> <span class="q">&quot;Generating HTML file $HTMLFile...\n&quot;</span><span class="sc">;</span>
+ 206     <span class="s">}</span>
+ 207     <span class="k">else</span> <span class="s">{</span>
+ 208       <span class="i">$HTMLFile</span> = <span class="q">&quot;$SubHTMLDir&quot;</span> . <span class="q">&quot;\/&quot;</span> . <span class="i">$HTMLFile</span><span class="sc">;</span>
+ 209       <span class="k">if</span> <span class="s">(</span><span class="i">$PrintMsg</span><span class="s">)</span> <span class="s">{</span>
+ 210         <span class="i">$PrintMsg</span> = <span class="n">0</span><span class="sc">;</span>
+ 211         <span class="k">if</span> <span class="s">(</span><span class="i">$TableCount</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
+ 212           <span class="k">print</span> <span class="q">&quot;Generating HTML file $HTMLFile...\n&quot;</span><span class="sc">;</span>
+ 213         <span class="s">}</span>
+ 214         <span class="k">else</span> <span class="s">{</span>
+ 215           <span class="k">print</span> <span class="q">&quot;Generating &quot;</span><span class="cm">,</span> <span class="s">(</span><span class="i">$TableCount</span> - <span class="n">1</span><span class="s">)</span><span class="cm">,</span> <span class="q">&quot; other HTML files: $SubHTMLDir\/$SDFilesInfo{HTMLRoot}[$Index]\*.html...\n&quot;</span><span class="sc">;</span>
+ 216         <span class="s">}</span>
+ 217       <span class="s">}</span>
+ 218     <span class="s">}</span>
+ 219     <span class="c"># Setup stylesheet reference...</span>
+ 220     <span class="k">if</span> <span class="s">(</span><span class="i">$NewStyleSheet</span><span class="s">)</span> <span class="s">{</span>
+ 221       <span class="i">$CSSRef</span> = <span class="s">(</span><span class="i">$TableNum</span> == <span class="n">1</span><span class="s">)</span> ? <span class="q">&quot;.\/&quot;</span> <span class="co">:</span> <span class="q">&quot;..\/&quot;</span><span class="sc">;</span>
+ 222       <span class="i">$CSSRef</span> .= <span class="i">$CSSFile</span><span class="sc">;</span>
+ 223     <span class="s">}</span>
+ 224 
+ 225     <span class="k">open</span> <span class="w">HTMLFILE</span><span class="cm">,</span> <span class="q">&quot;&gt;$HTMLFile&quot;</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Error: Can&#39;t open $HTMLFile: $! \n&quot;</span><span class="sc">;</span>
+ 226     <span class="c"># Write out HTML page header...</span>
+ 227     <span class="i">$StrViewerJSFileRef</span> = <span class="s">(</span><span class="i">$TableNum</span> == <span class="n">1</span><span class="s">)</span> ? <span class="i">$OptionsInfo</span>{<span class="w">TopHTMLDirStrViewerJSFileRef</span>} <span class="co">:</span> <span class="i">$OptionsInfo</span>{<span class="w">SubHTMLDirStrViewerJSFileRef</span>}<span class="sc">;</span>
+ 228     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLPageHeader</span><span class="s">(</span><span class="i">$SDFilesInfo</span>{<span class="w">HTMLTitle</span>}[<span class="i">$Index</span>]<span class="cm">,</span> <span class="i">$CSSRef</span><span class="cm">,</span> <span class="i">$StrViewerJSFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 229 
+ 230     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerJSFileRef</span>}<span class="s">)</span> <span class="s">{</span>
+ 231       <span class="i">$StrViewerCodeBase</span> = <span class="s">(</span><span class="i">$TableNum</span> == <span class="n">1</span><span class="s">)</span> ? <span class="i">$OptionsInfo</span>{<span class="w">TopHTMLDirStrViewerCodeBase</span>} <span class="co">:</span> <span class="i">$OptionsInfo</span>{<span class="w">SubHTMLDirStrViewerCodeBase</span>}<span class="sc">;</span>
+ 232       <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupStrViewerJSInitCmd</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>}<span class="cm">,</span> <span class="i">$StrViewerCodeBase</span><span class="s">)</span><span class="sc">;</span>
+ 233     <span class="s">}</span>
+ 234 
+ 235     <span class="c"># Set up the navigation links for this table...</span>
+ 236     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">NavLinksAtTop</span>}<span class="s">)</span> <span class="s">{</span>
+ 237       <span class="i">WriteNavigationLinks</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> \<span class="i">*HTMLFILE</span><span class="s">)</span><span class="sc">;</span>
+ 238     <span class="s">}</span>
+ 239     <span class="c"># Setup page title...</span>
+ 240     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">TitleDisplay</span>}<span class="s">)</span> <span class="s">{</span>
+ 241       <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLPageTitle</span><span class="s">(</span><span class="i">$SDFilesInfo</span>{<span class="w">HTMLTitle</span>}[<span class="i">$Index</span>]<span class="s">)</span><span class="sc">;</span>
+ 242     <span class="s">}</span>
+ 243     <span class="k">else</span> <span class="s">{</span>
+ 244       <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLEmptyLines</span><span class="s">(</span><span class="n">1</span><span class="s">)</span><span class="sc">;</span>
+ 245     <span class="s">}</span>
+ 246 
+ 247     <span class="c"># Start the table...</span>
+ 248     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLAlignmentBegin</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 249     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLTableHeader</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">TableBorder</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">TableCellPadding</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">TableCellSpacing</span>}<span class="s">)</span><span class="sc">;</span>
+ 250 
+ 251     <span class="c"># Generate table content...</span>
+ 252     <span class="i">GenerateTableRows</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$TableStartCmpdNum</span><span class="cm">,</span> <span class="i">$TableEndCmpdNum</span><span class="cm">,</span> \<span class="i">*SDFILE</span><span class="cm">,</span> \<span class="i">*HTMLFILE</span><span class="s">)</span><span class="sc">;</span>
+ 253 
+ 254     <span class="c"># Finish up the table...</span>
+ 255     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLTableEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 256     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLAlignmentEnd</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 257 
+ 258     <span class="c"># Set up the navigation links for this table...</span>
+ 259     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">NavLinksAtBottom</span>}<span class="s">)</span> <span class="s">{</span>
+ 260       <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLEmptyLines</span><span class="s">(</span><span class="n">1</span><span class="s">)</span><span class="sc">;</span>
+ 261       <span class="i">WriteNavigationLinks</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> \<span class="i">*HTMLFILE</span><span class="s">)</span><span class="sc">;</span>
+ 262     <span class="s">}</span>
+ 263 
+ 264     <span class="c"># Write out HTML page end...</span>
+ 265     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLPageEnd</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">FooterMsg</span>}<span class="s">)</span><span class="sc">;</span>
+ 266     <span class="k">close</span> <span class="w">HTMLFILE</span><span class="sc">;</span>
+ 267   <span class="s">}</span>
+ 268   <span class="k">close</span> <span class="w">SDFILE</span><span class="sc">;</span>
+ 269 
+ 270 <span class="s">}</span>
+ 271 
+ 272 <span class="c"># Generate table content...</span>
+<a name="GenerateTableRows-"></a> 273 <span class="k">sub </span><span class="m">GenerateTableRows</span> <span class="s">{</span>
+ 274   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$StartCmpdNum</span><span class="cm">,</span> <span class="i">$EndCmpdNum</span><span class="cm">,</span> <span class="i">$SDFileRef</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 275 
+ 276   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StructuresOnlyMode</span>}<span class="s">)</span> <span class="s">{</span>
+ 277     <span class="i">WriteRowStructures</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$StartCmpdNum</span><span class="cm">,</span> <span class="i">$EndCmpdNum</span><span class="cm">,</span> <span class="i">$SDFileRef</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 278   <span class="s">}</span>
+ 279   <span class="k">else</span> <span class="s">{</span>
+ 280     <span class="i">WriteColLabels</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$SDFileRef</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 281     <span class="i">WriteRowValues</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$StartCmpdNum</span><span class="cm">,</span> <span class="i">$EndCmpdNum</span><span class="cm">,</span> <span class="i">$SDFileRef</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 282   <span class="s">}</span>
+ 283 <span class="s">}</span>
+ 284 
+ 285 <span class="c"># Create stylesheet file...</span>
+<a name="GenerateStyleSheetFile-"></a> 286 <span class="k">sub </span><span class="m">GenerateStyleSheetFile</span> <span class="s">{</span>
+ 287   <span class="k">my</span><span class="s">(</span><span class="i">$CSSFile</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 288     <span class="k">print</span> <span class="q">&quot;Generating stylesheet file $CSSFile...\n&quot;</span><span class="sc">;</span>
+ 289     <span class="k">open</span> <span class="w">CSSFILE</span><span class="cm">,</span> <span class="q">&quot;&gt;$CSSFile&quot;</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Error: Can&#39;t open $CSSFile: $! \n&quot;</span><span class="sc">;</span>
+ 290     <span class="k">print</span> <span class="i">CSSFILE</span> <span class="i">SetupHTMLStyleSheetTags</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 291     <span class="k">close</span> <span class="w">CSSFILE</span><span class="sc">;</span>
+ 292 <span class="s">}</span>
+ 293 
+ 294 <span class="c"># Write out table header using column labels...</span>
+<a name="WriteColLabels-"></a> 295 <span class="k">sub </span><span class="m">WriteColLabels</span> <span class="s">{</span>
+ 296   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$SDFileRef</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 297 
+ 298   <span class="k">my</span><span class="s">(</span><span class="i">@ColLabels</span><span class="cm">,</span> <span class="i">$Label</span><span class="s">)</span><span class="sc">;</span>
+ 299   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$SDFilesInfo</span>{<span class="w">TableRowHeaderTags</span>}<span class="sc">;</span>
+ 300 
+ 301   <span class="c"># Write out structure label...</span>
+ 302   <span class="i">$Label</span> = <span class="q">&quot;Structure&quot;</span><span class="sc">;</span>
+ 303   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowHeaderValue</span><span class="s">(</span><span class="i">$Label</span><span class="s">)</span><span class="sc">;</span>
+ 304 
+ 305   <span class="c"># Write out field values..</span>
+ 306   <span class="i">@ColLabels</span> = <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">SpecifiedDataFieldLabels</span>}[<span class="i">$Index</span>]}<span class="sc">;</span>
+ 307   <span class="k">for</span> <span class="i">$Label</span> <span class="s">(</span><span class="i">@ColLabels</span><span class="s">)</span> <span class="s">{</span>
+ 308     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowHeaderValue</span><span class="s">(</span><span class="i">$Label</span><span class="s">)</span><span class="sc">;</span>
+ 309   <span class="s">}</span>
+ 310   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+ 311 <span class="s">}</span>
+ 312 
+ 313 <span class="c"># Write out the rows value...</span>
+<a name="WriteRowValues-"></a> 314 <span class="k">sub </span><span class="m">WriteRowValues</span> <span class="s">{</span>
+ 315   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$StartCmpdNum</span><span class="cm">,</span> <span class="i">$EndCmpdNum</span><span class="cm">,</span> <span class="i">$SDFileRef</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 316   <span class="k">my</span><span class="s">(</span><span class="i">$BackgroundColor</span><span class="cm">,</span> <span class="i">$FontColor</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">@CmpdLines</span><span class="cm">,</span> <span class="i">$Label</span><span class="cm">,</span> <span class="i">%DataFieldValues</span><span class="cm">,</span> <span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 317 
+ 318   <span class="i">$RowNum</span> = <span class="n">0</span><span class="sc">;</span>
+ 319   <span class="k">for</span> <span class="i">$CmpdNum</span> <span class="s">(</span><span class="i">$StartCmpdNum</span> .. <span class="i">$EndCmpdNum</span><span class="s">)</span> <span class="s">{</span>
+ 320     <span class="i">$RowNum</span>++<span class="sc">;</span>
+ 321     <span class="i">$CmpdString</span> = <span class="i">ReadCmpdString</span><span class="s">(</span><span class="i">$SDFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 322     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">ShadeRowsStatus</span>}<span class="s">)</span> <span class="s">{</span>
+ 323       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="s">(</span><span class="i">$RowNum</span> % <span class="n">2</span><span class="s">)</span> ? <span class="i">$SDFilesInfo</span>{<span class="w">BgFilledOddRowHeaderTags</span>} <span class="co">:</span> <span class="i">$SDFilesInfo</span>{<span class="w">BgFilledEvenRowHeaderTags</span>}<span class="sc">;</span>
+ 324     <span class="s">}</span>
+ 325     <span class="k">else</span> <span class="s">{</span>
+ 326       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowHeaderTags</span>}<span class="sc">;</span>
+ 327     <span class="s">}</span>
+ 328     <span class="i">@CmpdLines</span> = <span class="k">split</span> <span class="q">&quot;\n&quot;</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span>
+ 329     <span class="i">%DataFieldValues</span> = <span class="i">GetCmpdDataHeaderLabelsAndValues</span><span class="s">(</span>\<span class="i">@CmpdLines</span><span class="s">)</span><span class="sc">;</span>
+ 330 
+ 331     <span class="c"># Setup structure column...</span>
+ 332     <span class="i">SetupStructureColumn</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 333     <span class="c"># Write out field values..</span>
+ 334     <span class="k">for</span> <span class="i">$Label</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">SpecifiedDataFieldLabels</span>}[<span class="i">$Index</span>]}<span class="s">)</span> <span class="s">{</span>
+ 335       <span class="i">$Value</span> = <span class="s">(</span><span class="i">IsNotEmpty</span><span class="s">(</span><span class="i">$DataFieldValues</span>{<span class="i">$Label</span>}<span class="s">)</span><span class="s">)</span> ? <span class="i">$DataFieldValues</span>{<span class="i">$Label</span>} <span class="co">:</span> <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 336       <span class="i">$BackgroundColor</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$FontColor</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 337       <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">HighlightStatus</span>}<span class="s">)</span> <span class="s">{</span>
+ 338         <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">SpecifiedHighlightDataFieldLabelsMap</span>}{<span class="i">$Label</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 339           <span class="s">(</span><span class="i">$BackgroundColor</span><span class="cm">,</span> <span class="i">$FontColor</span><span class="s">)</span> = <span class="i">GetValueHighlightColors</span><span class="s">(</span><span class="i">$Label</span><span class="cm">,</span> <span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 340         <span class="s">}</span>
+ 341       <span class="s">}</span>
+ 342       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="cm">,</span> <span class="i">$BackgroundColor</span><span class="cm">,</span> <span class="i">$FontColor</span><span class="s">)</span><span class="sc">;</span>
+ 343     <span class="s">}</span>
+ 344     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+ 345   <span class="s">}</span>
+ 346 <span class="s">}</span>
+ 347 
+ 348 <span class="c"># Write only structures...</span>
+<a name="WriteRowStructures-"></a> 349 <span class="k">sub </span><span class="m">WriteRowStructures</span> <span class="s">{</span>
+ 350   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$StartCmpdNum</span><span class="cm">,</span> <span class="i">$EndCmpdNum</span><span class="cm">,</span> <span class="i">$SDFileRef</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 351   <span class="k">my</span><span class="s">(</span><span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$StartRowFlag</span><span class="cm">,</span> <span class="i">$ColNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$RowBgColor</span><span class="cm">,</span> <span class="i">$RowStartTags</span><span class="cm">,</span> <span class="i">$ColumnHeaderTags</span><span class="cm">,</span> <span class="i">$ColumnEndTags</span><span class="cm">,</span> <span class="i">$CmpdDataFieldValue</span><span class="cm">,</span> <span class="i">$CmpdHTMLFileRef</span><span class="cm">,</span> <span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 352 
+ 353   <span class="i">$StartRowFlag</span> = <span class="n">1</span><span class="sc">;</span> <span class="i">$ColNum</span> = <span class="n">0</span><span class="sc">;</span> <span class="i">$RowNum</span> = <span class="n">0</span><span class="sc">;</span>
+ 354   <span class="i">$ColumnHeaderTags</span> = <span class="i">SetupHTMLTableColumnHeader</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 355   <span class="i">$ColumnEndTags</span> = <span class="i">SetupHTMLTableColumnEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 356 
+ 357   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StructuresOnlyMode</span>} &amp;&amp; !<span class="i">$OptionsInfo</span>{<span class="w">TableBorder</span>} &amp;&amp; <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">OddRowsShadeColor</span>} =~ <span class="q">/^(#ffffff|white)$/i</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 358     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">RowHAlignment</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowColor</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">RowVAlignment</span>}<span class="s">)</span><span class="sc">;</span>
+ 359     <span class="i">$Value</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 360     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">InsertHTMLTags</span><span class="s">(</span><span class="i">$Value</span><span class="cm">,</span> <span class="q">&quot;colspan&quot;</span><span class="cm">,</span> <span class="q">&quot;$OptionsInfo{StrTableCols}&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 361     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+ 362   <span class="s">}</span>
+ 363 
+ 364   <span class="k">for</span> <span class="i">$CmpdNum</span> <span class="s">(</span><span class="i">$StartCmpdNum</span> .. <span class="i">$EndCmpdNum</span><span class="s">)</span> <span class="s">{</span>
+ 365     <span class="i">$CmpdString</span> = <span class="i">ReadCmpdString</span><span class="s">(</span><span class="i">$SDFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 366     <span class="k">if</span> <span class="s">(</span><span class="i">$StartRowFlag</span><span class="s">)</span> <span class="s">{</span>
+ 367       <span class="i">$StartRowFlag</span> = <span class="n">0</span><span class="sc">;</span>
+ 368       <span class="i">$RowNum</span>++<span class="sc">;</span>
+ 369       <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">ShadeRowsStatus</span>}<span class="s">)</span> <span class="s">{</span>
+ 370         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="s">(</span><span class="i">$RowNum</span> % <span class="n">2</span><span class="s">)</span> ? <span class="i">$SDFilesInfo</span>{<span class="w">BgFilledOddRowHeaderTags</span>} <span class="co">:</span> <span class="i">$SDFilesInfo</span>{<span class="w">BgFilledEvenRowHeaderTags</span>}<span class="sc">;</span>
+ 371       <span class="s">}</span>
+ 372       <span class="k">else</span> <span class="s">{</span>
+ 373         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowHeaderTags</span>}<span class="sc">;</span>
+ 374       <span class="s">}</span>
+ 375     <span class="s">}</span>
+ 376     <span class="i">$ColNum</span>++<span class="sc">;</span>
+ 377 
+ 378     <span class="i">$CmpdDataFieldValue</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 379     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">CmpdDataField</span>}<span class="s">)</span> <span class="s">{</span>
+ 380       <span class="k">my</span><span class="s">(</span><span class="i">$CmpdDataField</span><span class="cm">,</span> <span class="i">@CmpdLines</span><span class="cm">,</span> <span class="i">%DataFieldValues</span><span class="s">)</span><span class="sc">;</span>
+ 381       <span class="i">$CmpdDataField</span> = <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataField</span>}<span class="sc">;</span>
+ 382       <span class="i">@CmpdLines</span> = <span class="k">split</span> <span class="q">&quot;\n&quot;</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span>
+ 383       <span class="i">%DataFieldValues</span> = <span class="i">GetCmpdDataHeaderLabelsAndValues</span><span class="s">(</span>\<span class="i">@CmpdLines</span><span class="s">)</span><span class="sc">;</span>
+ 384       <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$DataFieldValues</span>{<span class="i">$CmpdDataField</span>}<span class="s">)</span> &amp;&amp; <span class="k">length</span><span class="s">(</span><span class="i">$DataFieldValues</span>{<span class="i">$CmpdDataField</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 385         <span class="i">$CmpdDataFieldValue</span> = <span class="i">$DataFieldValues</span>{<span class="i">$CmpdDataField</span>}<span class="sc">;</span>
+ 386         <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldLabel</span>} =~ <span class="q">/^yes$/i</span><span class="s">)</span> <span class="s">{</span>
+ 387           <span class="i">$CmpdDataFieldValue</span> = <span class="q">&quot;${CmpdDataField}: ${CmpdDataFieldValue}&quot;</span><span class="sc">;</span>
+ 388         <span class="s">}</span>
+ 389         <span class="c"># Make sure it&#39;s not to looong...</span>
+ 390         <span class="k">if</span> <span class="s">(</span><span class="k">length</span><span class="s">(</span><span class="i">$CmpdDataFieldValue</span><span class="s">)</span> &gt; <span class="n">30</span><span class="s">)</span> <span class="s">{</span>
+ 391           <span class="i">$CmpdDataFieldValue</span> = <span class="k">substr</span><span class="s">(</span><span class="i">$CmpdDataFieldValue</span><span class="cm">,</span> <span class="n">0</span><span class="cm">,</span> <span class="n">30</span><span class="s">)</span> . <span class="q">&quot;...&quot;</span><span class="sc">;</span>
+ 392         <span class="s">}</span>
+ 393       <span class="s">}</span>
+ 394     <span class="s">}</span>
+ 395     <span class="k">if</span> <span class="s">(</span><span class="i">$CmpdDataFieldValue</span><span class="s">)</span> <span class="s">{</span>
+ 396       <span class="i">$RowBgColor</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 397       <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">ShadeRowsStatus</span>}<span class="s">)</span> <span class="s">{</span>
+ 398         <span class="i">$RowBgColor</span> = <span class="s">(</span><span class="i">$RowNum</span> % <span class="n">2</span><span class="s">)</span> ? <span class="i">$OptionsInfo</span>{<span class="w">OddRowsShadeColor</span>} <span class="co">:</span> <span class="i">$OptionsInfo</span>{<span class="w">EvenRowsShadeColor</span>}<span class="sc">;</span>
+ 399       <span class="s">}</span>
+ 400       <span class="i">$RowStartTags</span> = <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldAlignment</span>}<span class="cm">,</span> <span class="i">$RowBgColor</span><span class="cm">,</span> <span class="q">&quot;middle&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 401       <span class="c"># Start  a new table in current column...</span>
+ 402       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$ColumnHeaderTags</span><span class="sc">;</span>
+ 403       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLAlignmentBegin</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 404       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableHeader</span><span class="s">(</span><span class="n">0</span><span class="cm">,</span> <span class="n">0</span><span class="cm">,</span> <span class="n">0</span><span class="s">)</span><span class="sc">;</span>
+ 405 
+ 406       <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldPosition</span>} =~ <span class="q">/^top$/i</span> <span class="s">)</span> <span class="s">{</span>
+ 407         <span class="c"># Add an empty row...</span>
+ 408         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$RowStartTags</span><span class="sc">;</span>
+ 409         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 410         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+ 411 
+ 412         <span class="c"># Display the label value...</span>
+ 413         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$RowStartTags</span><span class="sc">;</span>
+ 414         <span class="i">$CmpdHTMLFileRef</span> = <span class="i">SetupCompoundSummaryFileAndLink</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="s">)</span><span class="sc">;</span>
+ 415         <span class="i">$Value</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">&quot;$CmpdDataFieldValue&quot;</span><span class="cm">,</span> <span class="i">$CmpdHTMLFileRef</span><span class="cm">,</span> <span class="q">&quot;Compound Summary&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 416         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 417         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+ 418       <span class="s">}</span>
+ 419       <span class="c"># Display the structure...</span>
+ 420       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="cm">,</span> <span class="i">$RowBgColor</span><span class="cm">,</span> <span class="q">&quot;middle&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 421       <span class="i">SetupStructureDisplay</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 422       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+ 423 
+ 424       <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldPosition</span>} =~ <span class="q">/^bottom$/i</span> <span class="s">)</span> <span class="s">{</span>
+ 425         <span class="c"># Display the label value...</span>
+ 426         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$RowStartTags</span><span class="sc">;</span>
+ 427         <span class="i">$CmpdHTMLFileRef</span> = <span class="i">SetupCompoundSummaryFileAndLink</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="s">)</span><span class="sc">;</span>
+ 428         <span class="i">$Value</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">&quot;$CmpdDataFieldValue&quot;</span><span class="cm">,</span> <span class="i">$CmpdHTMLFileRef</span><span class="cm">,</span> <span class="q">&quot;Compound Summary&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 429         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 430         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+ 431 
+ 432         <span class="c"># Add an empty row...</span>
+ 433         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$RowStartTags</span><span class="sc">;</span>
+ 434         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 435         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+ 436       <span class="s">}</span>
+ 437 
+ 438       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 439       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLAlignmentEnd</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 440       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$ColumnEndTags</span><span class="sc">;</span>
+ 441     <span class="s">}</span>
+ 442     <span class="k">else</span> <span class="s">{</span>
+ 443       <span class="i">SetupStructureDisplay</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 444     <span class="s">}</span>
+ 445 
+ 446     <span class="k">if</span> <span class="s">(</span><span class="i">$ColNum</span> == <span class="i">$OptionsInfo</span>{<span class="w">StrTableCols</span>}<span class="s">)</span> <span class="s">{</span>
+ 447       <span class="c"># Finish up the current row and get ready for starting a new row...</span>
+ 448       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+ 449       <span class="i">$ColNum</span> = <span class="n">0</span><span class="sc">;</span>
+ 450       <span class="i">$StartRowFlag</span> = <span class="n">1</span><span class="sc">;</span>
+ 451     <span class="s">}</span>
+ 452   <span class="s">}</span>
+ 453   <span class="k">if</span> <span class="s">(</span>!<span class="i">$StartRowFlag</span><span class="s">)</span> <span class="s">{</span>
+ 454     <span class="c"># Finish up an existing row...</span>
+ 455     <span class="k">my</span><span class="s">(</span><span class="i">$ColIndex</span><span class="cm">,</span> <span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 456     <span class="i">$Value</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 457     <span class="k">for</span> <span class="i">$ColIndex</span> <span class="s">(</span><span class="i">$ColNum</span> .. <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrTableCols</span>} - <span class="n">1</span><span class="s">)</span> <span class="s">)</span> <span class="s">{</span>
+ 458       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 459     <span class="s">}</span>
+ 460     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+ 461   <span class="s">}</span>
+ 462 <span class="s">}</span>
+ 463 
+ 464 <span class="c"># Setup structure column...</span>
+<a name="SetupStructureColumn-"></a> 465 <span class="k">sub </span><span class="m">SetupStructureColumn</span> <span class="s">{</span>
+ 466   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 467 
+ 468   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">DisplayStructure</span>}<span class="s">)</span> <span class="s">{</span>
+ 469     <span class="i">SetupStructureDisplay</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 470   <span class="s">}</span>
+ 471   <span class="k">else</span> <span class="s">{</span>
+ 472     <span class="i">SetupStructureLink</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 473   <span class="s">}</span>
+ 474 <span class="s">}</span>
+ 475 
+ 476 <span class="c"># Setup structure display for compound summary page...</span>
+<a name="SetupStructureDisplayForCmpdSummaryPage-"></a> 477 <span class="k">sub </span><span class="m">SetupStructureDisplayForCmpdSummaryPage</span> <span class="s">{</span>
+ 478   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 479   <span class="k">my</span><span class="s">(</span><span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="s">)</span><span class="sc">;</span>
+ 480 
+ 481   <span class="c"># Use table num 0 to force usage of &quot;../mol&quot; prefix for all MOL file references. Row num</span>
+ 482   <span class="c"># doesn&#39;t matter...</span>
+ 483   <span class="i">$TableNum</span> = <span class="n">0</span><span class="sc">;</span>
+ 484   <span class="i">$RowNum</span> = <span class="n">1</span><span class="sc">;</span>
+ 485 
+ 486   <span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>} = <span class="n">1</span><span class="sc">;</span>
+ 487 
+ 488   <span class="c"># Setup size and bgcolor parameters for linking structures...</span>
+ 489   <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">width</span>} = <span class="i">$OptionsInfo</span>{<span class="w">StrLinkWidth</span>}<span class="sc">;</span>
+ 490   <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">height</span>} = <span class="i">$OptionsInfo</span>{<span class="w">StrLinkHeight</span>}<span class="sc">;</span>
+ 491   <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">bgcolor</span>} = <span class="i">$OptionsInfo</span>{<span class="w">StrLinkBgColorSpecified</span>}<span class="sc">;</span>
+ 492 
+ 493   <span class="i">SetupStructureDisplay</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 494 
+ 495   <span class="c"># Reset size and bgcolor parameters back to displaying structures in tables...</span>
+ 496   <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">width</span>} = <span class="i">$OptionsInfo</span>{<span class="w">StrWidth</span>}<span class="sc">;</span>
+ 497   <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">height</span>} = <span class="i">$OptionsInfo</span>{<span class="w">StrHeight</span>}<span class="sc">;</span>
+ 498   <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">bgcolor</span>} = <span class="i">$OptionsInfo</span>{<span class="w">StrBgColorSpecified</span>} ? <span class="i">$OptionsInfo</span>{<span class="w">StrBgColorSpecified</span>} <span class="co">:</span> <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 499 
+ 500   <span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>} = <span class="n">0</span><span class="sc">;</span>
+ 501 <span class="s">}</span>
+ 502 
+ 503 
+ 504 <span class="c"># Setup structure column display...</span>
+<a name="SetupStructureDisplay-"></a> 505 <span class="k">sub </span><span class="m">SetupStructureDisplay</span> <span class="s">{</span>
+ 506   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 507   <span class="k">my</span><span class="s">(</span><span class="i">$Nothing</span><span class="s">)</span><span class="sc">;</span>
+ 508 
+ 509  <span class="j">STRVIEWERTYPE:</span> <span class="s">{</span>
+ 510     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} =~ <span class="q">/^JME$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">SetupJMEDisplay</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span><span class="sc">;</span> <span class="k">last</span> <span class="j">STRVIEWERTYPE</span><span class="sc">;</span> <span class="s">}</span>
+ 511     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} =~ <span class="q">/^Jmol$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">SetupJmolDisplay</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span><span class="sc">;</span> <span class="k">last</span> <span class="j">STRVIEWERTYPE</span><span class="sc">;</span> <span class="s">}</span>
+ 512     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} =~ <span class="q">/^Chime$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">SetupChimeDisplay</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span><span class="sc">;</span> <span class="k">last</span> <span class="j">STRVIEWERTYPE</span><span class="sc">;</span> <span class="s">}</span>
+ 513     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} =~ <span class="q">/^(Chem3DActiveX|ChemDrawActiveX|ChemDrawPlugIn)$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">SetupCambridgeSoftDisplay</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>}<span class="cm">,</span> <span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span><span class="sc">;</span> <span class="k">last</span> <span class="j">STRVIEWERTYPE</span><span class="sc">;</span> <span class="s">}</span>
+ 514     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} =~ <span class="q">/^MarvinView$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">SetupMarvinDisplay</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span><span class="sc">;</span> <span class="k">last</span> <span class="j">STRVIEWERTYPE</span><span class="sc">;</span> <span class="s">}</span>
+ 515     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} =~ <span class="q">/^ViewerActiveX$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">SetupViewerAccelrysActiveXDisplay</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span><span class="sc">;</span> <span class="k">last</span> <span class="j">STRVIEWERTYPE</span><span class="sc">;</span> <span class="s">}</span>
+ 516     <span class="i">$Nothing</span> = <span class="n">1</span><span class="sc">;</span>
+ 517   <span class="s">}</span>
+ 518 <span class="s">}</span>
+ 519 
+ 520 <span class="c"># Setup JME display...</span>
+<a name="SetupJMEDisplay-"></a> 521 <span class="k">sub </span><span class="m">SetupJMEDisplay</span> <span class="s">{</span>
+ 522   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 523   <span class="k">my</span><span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$AppletBGColor</span><span class="cm">,</span> <span class="i">$Value</span><span class="cm">,</span> <span class="i">$ValueTag</span><span class="cm">,</span> <span class="i">$AppletName</span><span class="cm">,</span> <span class="i">$StrViewerCodeBase</span><span class="s">)</span><span class="sc">;</span>
+ 524 
+ 525   <span class="i">$Value</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 526   <span class="s">(</span><span class="i">$MolString</span><span class="s">)</span> = <span class="k">split</span> <span class="q">&quot;$SDFilesInfo{MolEndTag}&quot;</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span>
+ 527   <span class="k">if</span> <span class="s">(</span><span class="i">IsNotEmpty</span><span class="s">(</span><span class="i">$MolString</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 528     <span class="i">$AppletBGColor</span> = <span class="i">SetupStructureBGColor</span><span class="s">(</span><span class="i">$RowNum</span><span class="s">)</span><span class="sc">;</span>
+ 529     <span class="i">$MolString</span> .= <span class="q">&quot;$SDFilesInfo{MolEndTag}&quot;</span><span class="sc">;</span>
+ 530 
+ 531     <span class="c"># JME viewer doesn&#39;t appear to support &quot;bgcolor&quot; param. So, always use white background for</span>
+ 532     <span class="c"># structure cell...</span>
+ 533     <span class="i">$AppletName</span> = <span class="q">&quot;JME&quot;</span> . <span class="i">$CmpdNum</span><span class="sc">;</span>
+ 534     <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">name</span>} = <span class="i">$AppletName</span><span class="sc">;</span>
+ 535     <span class="k">if</span> <span class="s">(</span>!<span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>}<span class="s">)</span> <span class="s">{</span>
+ 536       <span class="k">if</span> <span class="s">(</span>!<span class="i">$OptionsInfo</span>{<span class="w">StrBgColorSpecified</span>}<span class="s">)</span> <span class="s">{</span>
+ 537         <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">bgcolor</span>} = <span class="i">$AppletBGColor</span><span class="sc">;</span>
+ 538       <span class="s">}</span>
+ 539     <span class="s">}</span>
+ 540     <span class="i">$StrViewerCodeBase</span> = <span class="s">(</span><span class="i">$TableNum</span> == <span class="n">1</span><span class="s">)</span> ? <span class="i">$OptionsInfo</span>{<span class="w">TopHTMLDirStrViewerCodeBase</span>} <span class="co">:</span> <span class="i">$OptionsInfo</span>{<span class="w">SubHTMLDirStrViewerCodeBase</span>}<span class="sc">;</span>
+ 541     <span class="i">$Value</span> = <span class="i">SetupStrViewerJMEApplet</span><span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$StrViewerCodeBase</span><span class="cm">,</span> \<span class="i">%</span>{<span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}}<span class="s">)</span><span class="sc">;</span>
+ 542     <span class="i">$ValueTag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="cm">,</span> <span class="i">$SDFilesInfo</span>{<span class="w">White</span>}<span class="s">)</span><span class="sc">;</span>
+ 543   <span class="s">}</span>
+ 544   <span class="k">else</span> <span class="s">{</span>
+ 545     <span class="i">$ValueTag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 546   <span class="s">}</span>
+ 547   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>}<span class="s">)</span> <span class="s">{</span>
+ 548     <span class="i">$ValueTag</span> = <span class="i">InsertHTMLTags</span><span class="s">(</span><span class="i">$ValueTag</span><span class="cm">,</span> <span class="s">(</span><span class="q">&quot;class&quot;</span><span class="cm">,</span> <span class="q">&quot;box&quot;</span><span class="s">)</span><span class="s">)</span><span class="sc">;</span>
+ 549   <span class="s">}</span>
+ 550   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$ValueTag</span><span class="sc">;</span>
+ 551 <span class="s">}</span>
+ 552 
+ 553 <span class="c"># Setup Marvin display...</span>
+<a name="SetupMarvinDisplay-"></a> 554 <span class="k">sub </span><span class="m">SetupMarvinDisplay</span> <span class="s">{</span>
+ 555   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 556   <span class="k">my</span><span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$AppletBGColor</span><span class="cm">,</span> <span class="i">$Value</span><span class="cm">,</span> <span class="i">$ValueTag</span><span class="cm">,</span> <span class="i">$AppletName</span><span class="cm">,</span> <span class="i">$StrViewerCodeBase</span><span class="s">)</span><span class="sc">;</span>
+ 557 
+ 558   <span class="i">$Value</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 559   <span class="s">(</span><span class="i">$MolString</span><span class="s">)</span> = <span class="k">split</span> <span class="q">&quot;$SDFilesInfo{MolEndTag}&quot;</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span>
+ 560   <span class="k">if</span> <span class="s">(</span><span class="i">IsNotEmpty</span><span class="s">(</span><span class="i">$MolString</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 561     <span class="i">$AppletBGColor</span> = <span class="i">SetupStructureBGColor</span><span class="s">(</span><span class="i">$RowNum</span><span class="s">)</span><span class="sc">;</span>
+ 562     <span class="i">$MolString</span> .= <span class="q">&quot;$SDFilesInfo{MolEndTag}&quot;</span><span class="sc">;</span>
+ 563 
+ 564     <span class="i">$AppletName</span> = <span class="q">&quot;MView&quot;</span> . <span class="i">$CmpdNum</span><span class="sc">;</span>
+ 565     <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">name</span>} = <span class="i">$AppletName</span><span class="sc">;</span>
+ 566     <span class="k">if</span> <span class="s">(</span>!<span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>}<span class="s">)</span> <span class="s">{</span>
+ 567       <span class="k">if</span> <span class="s">(</span>!<span class="i">$OptionsInfo</span>{<span class="w">StrBgColorSpecified</span>}<span class="s">)</span> <span class="s">{</span>
+ 568         <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">bgcolor</span>} = <span class="i">$AppletBGColor</span><span class="sc">;</span>
+ 569       <span class="s">}</span>
+ 570     <span class="s">}</span>
+ 571     <span class="i">$StrViewerCodeBase</span> = <span class="s">(</span><span class="i">$TableNum</span> == <span class="n">1</span><span class="s">)</span> ? <span class="i">$OptionsInfo</span>{<span class="w">TopHTMLDirStrViewerCodeBase</span>} <span class="co">:</span> <span class="i">$OptionsInfo</span>{<span class="w">SubHTMLDirStrViewerCodeBase</span>}<span class="sc">;</span>
+ 572     <span class="i">$Value</span> = <span class="i">SetupStrViewerMarvinViewApplet</span><span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$StrViewerCodeBase</span><span class="cm">,</span> \<span class="i">%</span>{<span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}}<span class="s">)</span><span class="sc">;</span>
+ 573     <span class="i">$ValueTag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 574   <span class="s">}</span>
+ 575   <span class="k">else</span> <span class="s">{</span>
+ 576     <span class="i">$ValueTag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 577   <span class="s">}</span>
+ 578   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>}<span class="s">)</span> <span class="s">{</span>
+ 579     <span class="i">$ValueTag</span> = <span class="i">InsertHTMLTags</span><span class="s">(</span><span class="i">$ValueTag</span><span class="cm">,</span> <span class="s">(</span><span class="q">&quot;class&quot;</span><span class="cm">,</span> <span class="q">&quot;box&quot;</span><span class="s">)</span><span class="s">)</span><span class="sc">;</span>
+ 580   <span class="s">}</span>
+ 581   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$ValueTag</span><span class="sc">;</span>
+ 582 <span class="s">}</span>
+ 583 
+ 584 <span class="c"># Setup Jmol display...</span>
+<a name="SetupJmolDisplay-"></a> 585 <span class="k">sub </span><span class="m">SetupJmolDisplay</span> <span class="s">{</span>
+ 586   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 587   <span class="k">my</span><span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$AppletBGColor</span><span class="cm">,</span> <span class="i">$Value</span><span class="cm">,</span> <span class="i">$ValueTag</span><span class="cm">,</span> <span class="i">$AppletName</span><span class="cm">,</span> <span class="i">$StrViewerCodeBase</span><span class="s">)</span><span class="sc">;</span>
+ 588 
+ 589   <span class="i">$Value</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$ValueTag</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 590   <span class="s">(</span><span class="i">$MolString</span><span class="s">)</span> = <span class="k">split</span> <span class="q">&quot;$SDFilesInfo{MolEndTag}&quot;</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span>
+ 591   <span class="k">if</span> <span class="s">(</span><span class="i">IsNotEmpty</span><span class="s">(</span><span class="i">$MolString</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 592     <span class="i">$AppletBGColor</span> = <span class="i">SetupStructureBGColor</span><span class="s">(</span><span class="i">$RowNum</span><span class="s">)</span><span class="sc">;</span>
+ 593     <span class="i">$MolString</span> .= <span class="q">&quot;$SDFilesInfo{MolEndTag}&quot;</span><span class="sc">;</span>
+ 594 
+ 595     <span class="c"># Make sure MolName line is not empty; otherwise, JMol doesn&#39;t display structure...</span>
+ 596     <span class="k">my</span><span class="s">(</span><span class="i">@MolLines</span><span class="s">)</span> = <span class="k">split</span> <span class="q">&quot;\n&quot;</span><span class="cm">,</span> <span class="i">$MolString</span><span class="sc">;</span>
+ 597     <span class="k">if</span> <span class="s">(</span><span class="i">IsEmpty</span><span class="s">(</span><span class="i">$MolLines</span>[<span class="n">0</span>]<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 598       <span class="i">$MolLines</span>[<span class="n">0</span>] = <span class="q">&quot;Cmpd${CmpdNum}&quot;</span><span class="sc">;</span>
+ 599       <span class="i">$MolString</span> = <span class="k">join</span> <span class="q">&quot;\n&quot;</span><span class="cm">,</span> <span class="i">@MolLines</span><span class="sc">;</span>
+ 600     <span class="s">}</span>
+ 601 
+ 602     <span class="c"># Setup the applet...</span>
+ 603     <span class="i">$AppletName</span> = <span class="q">&quot;Jmol&quot;</span> . <span class="i">$CmpdNum</span><span class="sc">;</span>
+ 604     <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">name</span>} = <span class="i">$AppletName</span><span class="sc">;</span>
+ 605     <span class="k">if</span> <span class="s">(</span>!<span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>}<span class="s">)</span> <span class="s">{</span>
+ 606       <span class="k">if</span> <span class="s">(</span>!<span class="i">$OptionsInfo</span>{<span class="w">StrBgColorSpecified</span>}<span class="s">)</span> <span class="s">{</span>
+ 607         <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">bgcolor</span>} = <span class="i">$AppletBGColor</span><span class="sc">;</span>
+ 608       <span class="s">}</span>
+ 609     <span class="s">}</span>
+ 610     <span class="i">$StrViewerCodeBase</span> = <span class="s">(</span><span class="i">$TableNum</span> == <span class="n">1</span><span class="s">)</span> ? <span class="i">$OptionsInfo</span>{<span class="w">TopHTMLDirStrViewerCodeBase</span>} <span class="co">:</span> <span class="i">$OptionsInfo</span>{<span class="w">SubHTMLDirStrViewerCodeBase</span>}<span class="sc">;</span>
+ 611     <span class="i">$Value</span> = <span class="i">SetupStrViewerJmolApplet</span><span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$StrViewerCodeBase</span><span class="cm">,</span> \<span class="i">%</span>{<span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}}<span class="s">)</span><span class="sc">;</span>
+ 612     <span class="i">$ValueTag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 613   <span class="s">}</span>
+ 614   <span class="k">else</span> <span class="s">{</span>
+ 615     <span class="i">$ValueTag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 616   <span class="s">}</span>
+ 617   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>}<span class="s">)</span> <span class="s">{</span>
+ 618     <span class="i">$ValueTag</span> = <span class="i">InsertHTMLTags</span><span class="s">(</span><span class="i">$ValueTag</span><span class="cm">,</span> <span class="s">(</span><span class="q">&quot;class&quot;</span><span class="cm">,</span> <span class="q">&quot;box&quot;</span><span class="s">)</span><span class="s">)</span><span class="sc">;</span>
+ 619   <span class="s">}</span>
+ 620   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$ValueTag</span><span class="sc">;</span>
+ 621 <span class="s">}</span>
+ 622 
+ 623 <span class="c"># Setup Chime display...</span>
+<a name="SetupChimeDisplay-"></a> 624 <span class="k">sub </span><span class="m">SetupChimeDisplay</span> <span class="s">{</span>
+ 625   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 626   <span class="k">my</span><span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$BGColor</span><span class="cm">,</span> <span class="i">$Value</span><span class="cm">,</span> <span class="i">$ValueTag</span><span class="cm">,</span> <span class="i">$MolFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 627 
+ 628   <span class="i">$Value</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 629   <span class="s">(</span><span class="i">$MolString</span><span class="s">)</span> = <span class="k">split</span> <span class="q">&quot;$SDFilesInfo{MolEndTag}&quot;</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span>
+ 630   <span class="k">if</span> <span class="s">(</span><span class="i">IsNotEmpty</span><span class="s">(</span><span class="i">$MolString</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 631     <span class="i">$BGColor</span> = <span class="i">SetupStructureBGColor</span><span class="s">(</span><span class="i">$RowNum</span><span class="s">)</span><span class="sc">;</span>
+ 632     <span class="i">$MolString</span> .= <span class="q">&quot;$SDFilesInfo{MolEndTag}&quot;</span><span class="sc">;</span>
+ 633     <span class="c"># Write out MOL file...</span>
+ 634     <span class="i">$MolFileRef</span> = <span class="i">SetupMOLFile</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$MolString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="s">)</span><span class="sc">;</span>
+ 635     <span class="c"># Setup the applet...</span>
+ 636     <span class="k">if</span> <span class="s">(</span>!<span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>}<span class="s">)</span> <span class="s">{</span>
+ 637       <span class="k">if</span> <span class="s">(</span>!<span class="i">$OptionsInfo</span>{<span class="w">StrBgColorSpecified</span>}<span class="s">)</span> <span class="s">{</span>
+ 638         <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">bgcolor</span>} = <span class="i">$BGColor</span><span class="sc">;</span>
+ 639       <span class="s">}</span>
+ 640     <span class="s">}</span>
+ 641     <span class="i">$Value</span> = <span class="i">SetupStrViewerChimePlugIn</span><span class="s">(</span><span class="i">$MolFileRef</span><span class="cm">,</span> \<span class="i">%</span>{<span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}}<span class="s">)</span><span class="sc">;</span>
+ 642     <span class="i">$ValueTag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 643   <span class="s">}</span>
+ 644   <span class="k">else</span> <span class="s">{</span>
+ 645     <span class="i">$ValueTag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 646   <span class="s">}</span>
+ 647   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>}<span class="s">)</span> <span class="s">{</span>
+ 648     <span class="i">$ValueTag</span> = <span class="i">InsertHTMLTags</span><span class="s">(</span><span class="i">$ValueTag</span><span class="cm">,</span> <span class="s">(</span><span class="q">&quot;class&quot;</span><span class="cm">,</span> <span class="q">&quot;box&quot;</span><span class="s">)</span><span class="s">)</span><span class="sc">;</span>
+ 649   <span class="s">}</span>
+ 650   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$ValueTag</span><span class="sc">;</span>
+ 651 <span class="s">}</span>
+ 652 
+ 653 <span class="c"># Setup displays for various viewers available from CambridgeSoft...</span>
+<a name="SetupCambridgeSoftDisplay-"></a> 654 <span class="k">sub </span><span class="m">SetupCambridgeSoftDisplay</span> <span class="s">{</span>
+ 655   <span class="k">my</span><span class="s">(</span><span class="i">$ViewerType</span><span class="cm">,</span> <span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 656   <span class="k">my</span><span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$BGColor</span><span class="cm">,</span> <span class="i">$Value</span><span class="cm">,</span> <span class="i">$ValueTag</span><span class="cm">,</span> <span class="i">$MolFileRef</span><span class="cm">,</span> <span class="i">$Name</span><span class="s">)</span><span class="sc">;</span>
+ 657 
+ 658   <span class="i">$Value</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 659   <span class="s">(</span><span class="i">$MolString</span><span class="s">)</span> = <span class="k">split</span> <span class="q">&quot;$SDFilesInfo{MolEndTag}&quot;</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span>
+ 660   <span class="k">if</span> <span class="s">(</span><span class="i">IsNotEmpty</span><span class="s">(</span><span class="i">$MolString</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 661     <span class="i">$BGColor</span> = <span class="i">SetupStructureBGColor</span><span class="s">(</span><span class="i">$RowNum</span><span class="s">)</span><span class="sc">;</span>
+ 662     <span class="i">$MolString</span> .= <span class="q">&quot;$SDFilesInfo{MolEndTag}&quot;</span><span class="sc">;</span>
+ 663     <span class="c"># Write out MOL file...</span>
+ 664     <span class="i">$MolFileRef</span> = <span class="i">SetupMOLFile</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$MolString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="s">)</span><span class="sc">;</span>
+ 665     <span class="c"># Setup the viewer...</span>
+ 666     <span class="i">$Name</span> = <span class="q">&quot;CS&quot;</span> . <span class="i">$CmpdNum</span><span class="sc">;</span>
+ 667     <span class="k">if</span> <span class="s">(</span><span class="i">$ViewerType</span> =~ <span class="q">/^Chem3DActiveX$/</span><span class="s">)</span> <span class="s">{</span>
+ 668       <span class="c"># Use white background for Chem3D and cell; otherwise, it doesn&#39;t look good:</span>
+ 669       <span class="c"># cell size is larger than Chem3D window size and different colors don&#39;t work</span>
+ 670       <span class="i">$BGColor</span> = <span class="i">$SDFilesInfo</span>{<span class="w">White</span>}<span class="sc">;</span>
+ 671       <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">name</span>} = <span class="i">$Name</span><span class="sc">;</span>
+ 672       <span class="k">if</span> <span class="s">(</span>!<span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>}<span class="s">)</span> <span class="s">{</span>
+ 673         <span class="k">if</span> <span class="s">(</span>!<span class="i">$OptionsInfo</span>{<span class="w">StrBgColorSpecified</span>}<span class="s">)</span> <span class="s">{</span>
+ 674           <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">bgcolor</span>} = <span class="i">$BGColor</span><span class="sc">;</span>
+ 675         <span class="s">}</span>
+ 676       <span class="s">}</span>
+ 677       <span class="i">$Value</span> = <span class="i">SetupStrViewerChem3DActiveX</span><span class="s">(</span><span class="i">$MolFileRef</span><span class="cm">,</span> \<span class="i">%</span>{<span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}}<span class="s">)</span><span class="sc">;</span>
+ 678       <span class="i">$ValueTag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="cm">,</span> <span class="i">$BGColor</span><span class="s">)</span><span class="sc">;</span>
+ 679     <span class="s">}</span>
+ 680     <span class="k">elsif</span> <span class="s">(</span><span class="i">$ViewerType</span> =~ <span class="q">/^ChemDrawActiveX$/i</span><span class="s">)</span> <span class="s">{</span>
+ 681       <span class="c"># BGColor is not supported. So, make it all white...</span>
+ 682       <span class="i">$BGColor</span> = <span class="i">$SDFilesInfo</span>{<span class="w">White</span>}<span class="sc">;</span>
+ 683       <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">name</span>} = <span class="i">$Name</span><span class="sc">;</span>
+ 684       <span class="k">if</span> <span class="s">(</span>!<span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>}<span class="s">)</span> <span class="s">{</span>
+ 685         <span class="k">if</span> <span class="s">(</span>!<span class="i">$OptionsInfo</span>{<span class="w">StrBgColorSpecified</span>}<span class="s">)</span> <span class="s">{</span>
+ 686           <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">bgcolor</span>} = <span class="i">$BGColor</span><span class="sc">;</span>
+ 687         <span class="s">}</span>
+ 688       <span class="s">}</span>
+ 689       <span class="i">$Value</span> = <span class="i">SetupStrViewerChemDrawActiveX</span><span class="s">(</span><span class="i">$MolFileRef</span><span class="cm">,</span> \<span class="i">%</span>{<span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}}<span class="s">)</span><span class="sc">;</span>
+ 690       <span class="i">$ValueTag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="cm">,</span> <span class="i">$BGColor</span><span class="s">)</span><span class="sc">;</span>
+ 691     <span class="s">}</span>
+ 692     <span class="k">elsif</span> <span class="s">(</span><span class="i">$ViewerType</span> =~ <span class="q">/^ChemDrawPlugIn$/i</span><span class="s">)</span> <span class="s">{</span>
+ 693       <span class="c"># BGColor is not supported. So, make it all white...</span>
+ 694       <span class="i">$BGColor</span> = <span class="i">$SDFilesInfo</span>{<span class="w">White</span>}<span class="sc">;</span>
+ 695       <span class="k">if</span> <span class="s">(</span>!<span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>}<span class="s">)</span> <span class="s">{</span>
+ 696         <span class="k">if</span> <span class="s">(</span>!<span class="i">$OptionsInfo</span>{<span class="w">StrBgColorSpecified</span>}<span class="s">)</span> <span class="s">{</span>
+ 697           <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">bgcolor</span>} = <span class="i">$BGColor</span><span class="sc">;</span>
+ 698         <span class="s">}</span>
+ 699       <span class="s">}</span>
+ 700       <span class="i">$Value</span> = <span class="i">SetupStrViewerChemDrawPlugIn</span><span class="s">(</span><span class="i">$MolFileRef</span><span class="cm">,</span> \<span class="i">%</span>{<span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}}<span class="s">)</span><span class="sc">;</span>
+ 701       <span class="i">$ValueTag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="cm">,</span> <span class="i">$BGColor</span><span class="s">)</span><span class="sc">;</span>
+ 702     <span class="s">}</span>
+ 703   <span class="s">}</span>
+ 704   <span class="k">else</span> <span class="s">{</span>
+ 705     <span class="i">$ValueTag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 706   <span class="s">}</span>
+ 707   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>}<span class="s">)</span> <span class="s">{</span>
+ 708     <span class="i">$ValueTag</span> = <span class="i">InsertHTMLTags</span><span class="s">(</span><span class="i">$ValueTag</span><span class="cm">,</span> <span class="s">(</span><span class="q">&quot;class&quot;</span><span class="cm">,</span> <span class="q">&quot;box&quot;</span><span class="s">)</span><span class="s">)</span><span class="sc">;</span>
+ 709   <span class="s">}</span>
+ 710   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$ValueTag</span><span class="sc">;</span>
+ 711 <span class="s">}</span>
+ 712 
+ 713 <span class="c"># Setup Accelrys Viewer ActiveX display...</span>
+<a name="SetupViewerAccelrysActiveXDisplay-"></a> 714 <span class="k">sub </span><span class="m">SetupViewerAccelrysActiveXDisplay</span> <span class="s">{</span>
+ 715   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 716   <span class="k">my</span><span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$BGColor</span><span class="cm">,</span> <span class="i">$Value</span><span class="cm">,</span> <span class="i">$ValueTag</span><span class="cm">,</span> <span class="i">$Name</span><span class="cm">,</span> <span class="i">$MolFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 717 
+ 718   <span class="i">$Value</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 719   <span class="s">(</span><span class="i">$MolString</span><span class="s">)</span> = <span class="k">split</span> <span class="q">&quot;$SDFilesInfo{MolEndTag}&quot;</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span>
+ 720   <span class="k">if</span> <span class="s">(</span><span class="i">IsNotEmpty</span><span class="s">(</span><span class="i">$MolString</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 721     <span class="i">$BGColor</span> = <span class="i">SetupStructureBGColor</span><span class="s">(</span><span class="i">$RowNum</span><span class="s">)</span><span class="sc">;</span>
+ 722     <span class="i">$MolString</span> .= <span class="q">&quot;$SDFilesInfo{MolEndTag}&quot;</span><span class="sc">;</span>
+ 723     <span class="c"># Write out MOL file. Accelrys ActiveX viewer doesn&#39;t load mol files with relative path names.</span>
+ 724     <span class="c"># So, set up a complete path name for now; however, it may lead to issues during web</span>
+ 725     <span class="c"># deployment.</span>
+ 726     <span class="k">my</span><span class="s">(</span><span class="i">$CompletePath</span><span class="s">)</span> = <span class="n">1</span><span class="sc">;</span>
+ 727     <span class="i">$MolFileRef</span> = <span class="i">SetupMOLFile</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$MolString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$CompletePath</span><span class="s">)</span><span class="sc">;</span>
+ 728     <span class="c"># Setup the viewer...</span>
+ 729     <span class="i">$Name</span> = <span class="q">&quot;ViewerActiveX&quot;</span> . <span class="i">$CmpdNum</span><span class="sc">;</span>
+ 730     <span class="k">if</span> <span class="s">(</span>!<span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>}<span class="s">)</span> <span class="s">{</span>
+ 731       <span class="k">if</span> <span class="s">(</span>!<span class="i">$OptionsInfo</span>{<span class="w">StrBgColorSpecified</span>}<span class="s">)</span> <span class="s">{</span>
+ 732         <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">bgcolor</span>} = <span class="i">$BGColor</span><span class="sc">;</span>
+ 733       <span class="s">}</span>
+ 734     <span class="s">}</span>
+ 735     <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">name</span>} = <span class="i">$Name</span><span class="sc">;</span>
+ 736     <span class="i">$Value</span> = <span class="i">SetupStrViewerAccelrysActiveX</span><span class="s">(</span><span class="i">$MolFileRef</span><span class="cm">,</span> \<span class="i">%</span>{<span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}}<span class="s">)</span><span class="sc">;</span>
+ 737     <span class="i">$ValueTag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 738   <span class="s">}</span>
+ 739   <span class="k">else</span> <span class="s">{</span>
+ 740     <span class="i">$ValueTag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 741   <span class="s">}</span>
+ 742   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>}<span class="s">)</span> <span class="s">{</span>
+ 743     <span class="i">$ValueTag</span> = <span class="i">InsertHTMLTags</span><span class="s">(</span><span class="i">$ValueTag</span><span class="cm">,</span> <span class="s">(</span><span class="q">&quot;class&quot;</span><span class="cm">,</span> <span class="q">&quot;box&quot;</span><span class="s">)</span><span class="s">)</span><span class="sc">;</span>
+ 744   <span class="s">}</span>
+ 745   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$ValueTag</span><span class="sc">;</span>
+ 746 <span class="s">}</span>
+ 747 
+ 748 
+ 749 <span class="c"># Setup structure background color...</span>
+<a name="SetupStructureBGColor-"></a> 750 <span class="k">sub </span><span class="m">SetupStructureBGColor</span> <span class="s">{</span>
+ 751   <span class="k">my</span><span class="s">(</span><span class="i">$RowNum</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 752   <span class="k">my</span><span class="s">(</span><span class="i">$BGColor</span><span class="s">)</span><span class="sc">;</span>
+ 753 
+ 754   <span class="i">$BGColor</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 755   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">ShadeRowsStatus</span>}<span class="s">)</span> <span class="s">{</span>
+ 756     <span class="i">$BGColor</span> =  <span class="s">(</span><span class="i">$RowNum</span> % <span class="n">2</span><span class="s">)</span> ? <span class="i">$OptionsInfo</span>{<span class="w">OddRowsShadeColor</span>} <span class="co">:</span> <span class="i">$OptionsInfo</span>{<span class="w">EvenRowsShadeColor</span>}<span class="sc">;</span>
+ 757   <span class="s">}</span>
+ 758   <span class="k">else</span> <span class="s">{</span>
+ 759     <span class="i">$BGColor</span> = <span class="i">$SDFilesInfo</span>{<span class="w">White</span>}<span class="sc">;</span>
+ 760   <span class="s">}</span>
+ 761   <span class="k">return</span> <span class="i">$BGColor</span><span class="sc">;</span>
+ 762 <span class="s">}</span>
+ 763 
+ 764 <span class="c"># Setup  MDL MOL file...</span>
+<a name="SetupMOLFile-"></a> 765 <span class="k">sub </span><span class="m">SetupMOLFile</span> <span class="s">{</span>
+ 766   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$MolString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$CompletePath</span><span class="s">)</span><span class="sc">;</span>
+ 767   <span class="k">my</span><span class="s">(</span><span class="i">$SubMolDir</span><span class="cm">,</span> <span class="i">$MolFileName</span><span class="cm">,</span> <span class="i">$MolFile</span><span class="cm">,</span> <span class="i">$MolFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 768 
+ 769   <span class="i">$CompletePath</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 770   <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">5</span><span class="s">)</span> <span class="s">{</span>
+ 771     <span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$MolString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$CompletePath</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 772   <span class="s">}</span>
+ 773   <span class="k">else</span> <span class="s">{</span>
+ 774     <span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$MolString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 775   <span class="s">}</span>
+ 776 
+ 777   <span class="i">$SubMolDir</span> = <span class="i">$SDFilesInfo</span>{<span class="w">SubMolDir</span>}[<span class="i">$Index</span>]<span class="sc">;</span>
+ 778   <span class="i">$MolFileName</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">&quot;Cmpd&quot;</span> . <span class="i">$CmpdNum</span> . <span class="q">&quot;.mol&quot;</span><span class="sc">;</span>
+ 779   <span class="i">$MolFile</span> = <span class="i">$SubMolDir</span> . <span class="q">&quot;\/&quot;</span> . <span class="i">$MolFileName</span><span class="sc">;</span>
+ 780 
+ 781   <span class="k">open</span> <span class="w">MOLFILE</span><span class="cm">,</span> <span class="q">&quot;&gt;$MolFile&quot;</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Error: Can&#39;t open $MolFile: $! \n&quot;</span><span class="sc">;</span>
+ 782   <span class="k">print</span> <span class="i">MOLFILE</span> <span class="q">&quot;$MolString\n&quot;</span><span class="sc">;</span>
+ 783   <span class="k">close</span> <span class="w">MOLFILE</span><span class="sc">;</span>
+ 784 
+ 785   <span class="k">if</span> <span class="s">(</span><span class="i">$CompletePath</span><span class="s">)</span> <span class="s">{</span>
+ 786     <span class="k">my</span><span class="s">(</span><span class="i">$CWD</span><span class="cm">,</span> <span class="i">$NewCWD</span><span class="s">)</span><span class="sc">;</span>
+ 787     <span class="i">$CWD</span> = <span class="i">cwd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 788     <span class="i">$NewCWD</span> = <span class="i">ConvertCygwinPath</span><span class="s">(</span><span class="i">$CWD</span><span class="s">)</span><span class="sc">;</span>
+ 789     <span class="i">$MolFileRef</span> = <span class="i">$NewCWD</span> . <span class="q">&quot;\/&quot;</span> . <span class="i">$SDFilesInfo</span>{<span class="w">TopHTMLDir</span>}[<span class="i">$Index</span>] .  <span class="q">&quot;\/mol\/$MolFileName&quot;</span> <span class="sc">;</span>
+ 790   <span class="s">}</span>
+ 791   <span class="k">else</span> <span class="s">{</span>
+ 792     <span class="i">$MolFileRef</span> = <span class="s">(</span><span class="i">$TableNum</span> == <span class="n">1</span><span class="s">)</span> ? <span class="q">&quot;.\/mol\/$MolFileName&quot;</span> <span class="co">:</span> <span class="q">&quot;..\/mol\/$MolFileName&quot;</span><span class="sc">;</span>
+ 793   <span class="s">}</span>
+ 794 
+ 795   <span class="k">return</span> <span class="i">$MolFileRef</span><span class="sc">;</span>
+ 796 <span class="s">}</span>
+ 797 
+ 798 <span class="c"># Setup a link to structure and other available information...</span>
+<a name="SetupStructureLink-"></a> 799 <span class="k">sub </span><span class="m">SetupStructureLink</span> <span class="s">{</span>
+ 800   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$RowNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 801   <span class="k">my</span><span class="s">(</span><span class="i">$CmpdHTMLFileRef</span><span class="cm">,</span> <span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 802 
+ 803   <span class="i">$CmpdHTMLFileRef</span> = <span class="i">SetupCompoundSummaryFileAndLink</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="s">)</span><span class="sc">;</span>
+ 804 
+ 805   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">strlinktype</span>} =~ <span class="q">/^button$/i</span><span class="s">)</span> <span class="s">{</span>
+ 806     <span class="i">$Value</span> = <span class="i">SetupHTMLButtonRef</span><span class="s">(</span><span class="q">&quot;View&quot;</span><span class="cm">,</span> <span class="i">$CmpdHTMLFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 807   <span class="s">}</span>
+ 808   <span class="k">else</span> <span class="s">{</span>
+ 809     <span class="i">$Value</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">&quot;View&quot;</span><span class="cm">,</span> <span class="i">$CmpdHTMLFileRef</span><span class="s">)</span><span class="sc">;</span>
+ 810   <span class="s">}</span>
+ 811   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 812 <span class="s">}</span>
+ 813 
+ 814 <span class="c"># Setup HTML compound summary file and link...</span>
+<a name="SetupCompoundSummaryFileAndLink-"></a> 815 <span class="k">sub </span><span class="m">SetupCompoundSummaryFileAndLink</span> <span class="s">{</span>
+ 816   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 817   <span class="k">my</span><span class="s">(</span><span class="i">$CmpdHTMLFile</span><span class="cm">,</span> <span class="i">$CmpdHTMLFileName</span><span class="cm">,</span> <span class="i">$CmpdHTMLFileRef</span><span class="cm">,</span> <span class="i">$CSSRef</span><span class="cm">,</span> <span class="i">@CmpdLines</span><span class="cm">,</span> <span class="i">$Label</span><span class="cm">,</span> <span class="i">@DataFieldLabels</span><span class="cm">,</span> <span class="i">%DataFieldValues</span><span class="cm">,</span> <span class="i">$Value</span><span class="cm">,</span> <span class="i">$Tag</span><span class="s">)</span><span class="sc">;</span>
+ 818 
+ 819   <span class="c"># Setup compound file names...</span>
+ 820   <span class="i">$CmpdHTMLFileName</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">&quot;Cmpd&quot;</span> . <span class="i">$CmpdNum</span> . <span class="q">&quot;.html&quot;</span><span class="sc">;</span>
+ 821   <span class="i">$CmpdHTMLFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">SubHTMLDir</span>}[<span class="i">$Index</span>] . <span class="q">&quot;\/&quot;</span> . <span class="i">$CmpdHTMLFileName</span><span class="sc">;</span>
+ 822 
+ 823   <span class="c"># Setup stylesheet reference....</span>
+ 824   <span class="i">$CSSRef</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+ 825   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">stylesheet</span>} =~ <span class="q">/^old$/i</span><span class="s">)</span> <span class="s">{</span>
+ 826     <span class="i">$CSSRef</span> = <span class="i">$Options</span>{<span class="w">stylesheetname</span>}<span class="sc">;</span>
+ 827   <span class="s">}</span>
+ 828   <span class="k">else</span> <span class="s">{</span>
+ 829     <span class="i">$CSSRef</span> = <span class="q">&quot;..\/&quot;</span> . <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">&quot;.css&quot;</span><span class="sc">;</span>
+ 830   <span class="s">}</span>
+ 831 
+ 832   <span class="c"># Write out compound data in a new HTML file. For summary page, usage of even and odd row shade color</span>
+ 833   <span class="c"># is reversed: it causes structure background to be white by default...</span>
+ 834   <span class="k">open</span> <span class="w">CMPDHTMLFILE</span><span class="cm">,</span> <span class="q">&quot;&gt;$CmpdHTMLFile&quot;</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Error: Can&#39;t open $CmpdHTMLFile: $! \n&quot;</span><span class="sc">;</span>
+ 835   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLPageHeader</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrLinkTitle</span>}<span class="cm">,</span> <span class="i">$CSSRef</span><span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">SubHTMLDirStrViewerJSFileRef</span>}<span class="s">)</span><span class="sc">;</span>
+ 836 
+ 837   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerJSFileRef</span>}<span class="s">)</span> <span class="s">{</span>
+ 838     <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupStrViewerJSInitCmd</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">SubHTMLDirStrViewerCodeBase</span>}<span class="s">)</span><span class="sc">;</span>
+ 839   <span class="s">}</span>
+ 840 
+ 841   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrLinkTitleDisplay</span>}<span class="s">)</span> <span class="s">{</span>
+ 842     <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLPageTitle</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrLinkTitle</span>}<span class="cm">,</span> <span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 843   <span class="s">}</span>
+ 844   <span class="k">else</span> <span class="s">{</span>
+ 845     <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLEmptyLines</span><span class="s">(</span><span class="n">1</span><span class="s">)</span><span class="sc">;</span>
+ 846   <span class="s">}</span>
+ 847   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLAlignmentBegin</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 848 
+ 849   <span class="c"># Setup structure display ...</span>
+ 850   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLTableHeader</span><span class="s">(</span><span class="n">0</span><span class="cm">,</span> <span class="n">5</span><span class="cm">,</span> <span class="n">2</span><span class="s">)</span><span class="sc">;</span>
+ 851 
+ 852   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="cm">,</span> <span class="q">&quot;#ffffff&quot;</span><span class="cm">,</span> <span class="q">&quot;middle&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 853 
+ 854   <span class="i">SetupStructureDisplayForCmpdSummaryPage</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> \<span class="i">*CMPDHTMLFILE</span><span class="s">)</span><span class="sc">;</span>
+ 855   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+ 856 
+ 857   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">strlinkmode</span>} =~ <span class="q">/^plain$/i</span><span class="s">)</span> <span class="s">{</span>
+ 858     <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">StrLinkShadeColor</span>}<span class="s">)</span><span class="sc">;</span>
+ 859     <span class="i">$Tag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 860     <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">$Tag</span><span class="sc">;</span>
+ 861     <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+ 862   <span class="s">}</span>
+ 863 
+ 864   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="q">&quot;left&quot;</span><span class="cm">,</span> <span class="q">&quot;&quot;</span><span class="cm">,</span> <span class="q">&quot;middle&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 865   <span class="c"># Start a new table with two columns, one each for data field labels and values, in</span>
+ 866   <span class="c"># current column...</span>
+ 867   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLTableColumnHeader</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 868   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLAlignmentBegin</span><span class="s">(</span><span class="q">&quot;left&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 869   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLTableHeader</span><span class="s">(</span><span class="n">0</span><span class="cm">,</span> <span class="n">5</span><span class="cm">,</span> <span class="n">2</span><span class="s">)</span><span class="sc">;</span>
+ 870 
+ 871   <span class="c"># Setup table for other available data...</span>
+ 872   <span class="k">my</span><span class="s">(</span><span class="i">$CmpdRowHeaderTags</span><span class="s">)</span><span class="sc">;</span>
+ 873   <span class="i">$CmpdRowHeaderTags</span> = <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="q">&quot;left&quot;</span><span class="cm">,</span> <span class="q">&quot;&quot;</span><span class="cm">,</span> <span class="q">&quot;middle&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 874 
+ 875   <span class="i">@CmpdLines</span> = <span class="k">split</span> <span class="q">&quot;\n&quot;</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span>
+ 876 
+ 877   <span class="i">@DataFieldLabels</span> = <span class="i">GetCmpdDataHeaderLabels</span><span class="s">(</span>\<span class="i">@CmpdLines</span><span class="s">)</span><span class="sc">;</span>
+ 878   <span class="i">%DataFieldValues</span> = <span class="i">GetCmpdDataHeaderLabelsAndValues</span><span class="s">(</span>\<span class="i">@CmpdLines</span><span class="s">)</span><span class="sc">;</span>
+ 879 
+ 880   <span class="k">my</span><span class="s">(</span><span class="i">$LabelWrapLength</span><span class="cm">,</span> <span class="i">$ValueWrapLength</span><span class="cm">,</span> <span class="i">$LabelColWidth</span><span class="s">)</span><span class="sc">;</span>
+ 881   <span class="i">$LabelWrapLength</span> = <span class="n">30</span><span class="sc">;</span> <span class="i">$ValueWrapLength</span> = <span class="n">60</span><span class="sc">;</span> <span class="i">$LabelColWidth</span> = <span class="n">40</span><span class="sc">;</span>
+ 882 
+ 883   <span class="k">for</span> <span class="i">$Label</span> <span class="s">(</span><span class="i">@DataFieldLabels</span><span class="s">)</span> <span class="s">{</span>
+ 884     <span class="i">$Value</span> =  <span class="i">$DataFieldValues</span>{<span class="i">$Label</span>}<span class="sc">;</span>
+ 885     <span class="i">$Label</span> .= <span class="q">&quot;:&quot;</span><span class="sc">;</span>
+ 886     <span class="k">if</span> <span class="s">(</span><span class="i">$Label</span> &amp;&amp; <span class="s">(</span><span class="k">length</span><span class="s">(</span><span class="i">$Label</span><span class="s">)</span> &gt; <span class="i">$LabelWrapLength</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+ 887       <span class="i">$Label</span> = <span class="i">WrapText</span><span class="s">(</span><span class="i">$Label</span><span class="cm">,</span>  <span class="i">$LabelWrapLength</span><span class="cm">,</span> <span class="q">&quot;&lt;br&gt;&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 888     <span class="s">}</span>
+ 889     <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">$CmpdRowHeaderTags</span><span class="sc">;</span>
+ 890     <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">strlinkmode</span>} =~ <span class="q">/^plain$/i</span><span class="s">)</span> <span class="s">{</span>
+ 891       <span class="i">$Tag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Label</span><span class="cm">,</span> <span class="q">&quot;&quot;</span><span class="cm">,</span> <span class="q">&quot;&quot;</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span>
+ 892     <span class="s">}</span>
+ 893     <span class="k">else</span> <span class="s">{</span>
+ 894       <span class="i">$Tag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Label</span><span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">StrLinkShadeColor</span>}<span class="s">)</span><span class="sc">;</span>
+ 895     <span class="s">}</span>
+ 896     <span class="i">$Tag</span> = <span class="i">InsertHTMLTags</span><span class="s">(</span><span class="i">$Tag</span><span class="cm">,</span> <span class="q">&quot;width&quot;</span><span class="cm">,</span> <span class="q">&quot;$LabelColWidth&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 897     <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">$Tag</span><span class="sc">;</span>
+ 898 
+ 899     <span class="k">if</span> <span class="s">(</span><span class="i">$Value</span> &amp;&amp; <span class="s">(</span><span class="k">length</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span> &gt;=<span class="i">$ValueWrapLength</span><span class="s">)</span> &amp;&amp; <span class="i">$Value</span> !~ <span class="q">/a href/i</span><span class="s">)</span> <span class="s">{</span>
+ 900       <span class="i">$Value</span> =~ <span class="q">s/(\r\n)|(\r)|\n//g</span><span class="sc">;</span>
+ 901       <span class="i">$Value</span> = <span class="i">WrapText</span><span class="s">(</span><span class="i">$Value</span><span class="cm">,</span>  <span class="i">$ValueWrapLength</span><span class="cm">,</span> <span class="q">&quot;&lt;br&gt;&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 902     <span class="s">}</span>
+ 903     <span class="i">$Tag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+ 904     <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">$Tag</span><span class="sc">;</span>
+ 905     <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+ 906   <span class="s">}</span>
+ 907 
+ 908   <span class="c"># Finish up table holding numerical data...</span>
+ 909   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLTableEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 910   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLAlignmentEnd</span><span class="s">(</span><span class="q">&quot;left&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 911   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLTableColumnEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 912   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+ 913 
+ 914   <span class="c"># Finish up main table...</span>
+ 915   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLTableEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+ 916   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLAlignmentEnd</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 917 
+ 918   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrLinkNavigation</span>} &amp;&amp; <span class="s">(</span><span class="i">$SDFilesInfo</span>{<span class="w">CmpdCount</span>}[<span class="i">$Index</span>] &gt; <span class="n">1</span><span class="s">)</span> <span class="s">)</span> <span class="s">{</span>
+ 919     <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLEmptyLines</span><span class="s">(</span><span class="n">1</span><span class="s">)</span><span class="sc">;</span>
+ 920     <span class="i">WriteCompoundSummaryNavigationLinks</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$CmpdNum</span><span class="cm">,</span> \<span class="i">*CMPDHTMLFILE</span><span class="s">)</span><span class="sc">;</span>
+ 921   <span class="s">}</span>
+ 922 
+ 923   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLPageEnd</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">FooterMsg</span>}<span class="s">)</span><span class="sc">;</span>
+ 924   <span class="k">close</span> <span class="w">CMPDHTMLFILE</span><span class="sc">;</span>
+ 925 
+ 926   <span class="c"># Add a link to compound&#39;s HTML file in table cell...</span>
+ 927   <span class="i">$CmpdHTMLFileRef</span> = <span class="s">(</span><span class="i">$TableNum</span> == <span class="n">1</span><span class="s">)</span> ? <span class="q">&quot;.\/html\/&quot;</span> <span class="co">:</span> <span class="q">&quot;.\/&quot;</span><span class="sc">;</span>
+ 928   <span class="i">$CmpdHTMLFileRef</span> .= <span class="i">$CmpdHTMLFileName</span><span class="sc">;</span>
+ 929 
+ 930   <span class="k">return</span> <span class="i">$CmpdHTMLFileRef</span><span class="sc">;</span>
+ 931 <span class="s">}</span>
+ 932 
+ 933 <span class="c"># Write navigation link information for compound summary page...</span>
+<a name="WriteCompoundSummaryNavigationLinks-"></a> 934 <span class="k">sub </span><span class="m">WriteCompoundSummaryNavigationLinks</span> <span class="s">{</span>
+ 935   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$CurTableNum</span><span class="cm">,</span> <span class="i">$CurCmpdNum</span><span class="cm">,</span> <span class="i">$CmpdHTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+ 936   <span class="k">my</span><span class="s">(</span><span class="i">$FirstTableNum</span><span class="cm">,</span> <span class="i">$CurTableIndex</span><span class="cm">,</span> <span class="i">$FirstCmpdNum</span><span class="cm">,</span> <span class="i">$LastCmpdNum</span><span class="cm">,</span> <span class="i">$PreviousCmpdNum</span><span class="cm">,</span> <span class="i">$NextCmpdNum</span><span class="cm">,</span> <span class="i">$HTMLFile</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="i">$HTMLRefValue</span><span class="s">)</span><span class="sc">;</span>
+ 937 
+ 938   <span class="i">$FirstTableNum</span> = <span class="n">1</span><span class="sc">;</span>
+ 939   <span class="i">$FirstCmpdNum</span> = <span class="n">1</span><span class="sc">;</span>
+ 940 
+ 941   <span class="i">$CurTableIndex</span> = <span class="i">$CurTableNum</span> - <span class="n">1</span><span class="sc">;</span>
+ 942 
+ 943   <span class="k">if</span> <span class="s">(</span><span class="i">$SDFilesInfo</span>{<span class="w">MultipleHTMLTables</span>}[<span class="i">$Index</span>]<span class="s">)</span> <span class="s">{</span>
+ 944     <span class="k">my</span><span class="s">(</span><span class="i">$FirstTableIndex</span><span class="cm">,</span> <span class="i">$LastTableNum</span><span class="cm">,</span> <span class="i">$LastTableIndex</span><span class="s">)</span><span class="sc">;</span>
+ 945     <span class="i">$FirstTableIndex</span> = <span class="i">$FirstTableNum</span> - <span class="n">1</span><span class="sc">;</span>
+ 946     <span class="i">$LastTableNum</span> = <span class="i">$SDFilesInfo</span>{<span class="w">TableCount</span>}[<span class="i">$Index</span>]<span class="sc">;</span> <span class="i">$LastTableIndex</span> = <span class="i">$LastTableNum</span> - <span class="n">1</span><span class="sc">;</span>
+ 947     <span class="i">$LastCmpdNum</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableEndCmpdNum</span>}[<span class="i">$Index</span>]}[<span class="i">$LastTableIndex</span>]<span class="sc">;</span>
+ 948   <span class="s">}</span>
+ 949   <span class="k">else</span> <span class="s">{</span>
+ 950     <span class="i">$LastCmpdNum</span> = <span class="i">$SDFilesInfo</span>{<span class="w">CmpdCount</span>}[<span class="i">$Index</span>]<span class="sc">;</span>
+ 951   <span class="s">}</span>
+ 952 
+ 953   <span class="i">$PreviousCmpdNum</span> = <span class="s">(</span><span class="i">$CurCmpdNum</span> == <span class="i">$FirstCmpdNum</span><span class="s">)</span> ? <span class="n">0</span> <span class="co">:</span> <span class="s">(</span><span class="i">$CurCmpdNum</span> - <span class="n">1</span><span class="s">)</span><span class="sc">;</span>
+ 954   <span class="i">$NextCmpdNum</span> = <span class="s">(</span><span class="i">$CurCmpdNum</span> == <span class="i">$LastCmpdNum</span><span class="s">)</span> ? <span class="n">0</span> <span class="co">:</span> <span class="s">(</span><span class="i">$CurCmpdNum</span> + <span class="n">1</span><span class="s">)</span><span class="sc">;</span>
+ 955 
+ 956   <span class="k">my</span><span class="s">(</span><span class="i">$InactiveLinkNumColor</span><span class="cm">,</span> <span class="i">$InactiveLinkFontBold</span><span class="s">)</span> = <span class="s">(</span><span class="q">&quot;#8e2323&quot;</span><span class="cm">,</span> <span class="q">&quot;1&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 957   <span class="k">my</span><span class="s">(</span><span class="i">$LinkTextColor</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$LinkFontBold</span><span class="s">)</span> = <span class="s">(</span><span class="q">&quot;&quot;</span><span class="cm">,</span> <span class="q">&quot;&quot;</span><span class="cm">,</span> <span class="q">&quot;0&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 958   <span class="k">my</span><span class="s">(</span><span class="i">$BorderWidth</span><span class="cm">,</span> <span class="i">$CellPadding</span><span class="cm">,</span> <span class="i">$CellSpacing</span><span class="s">)</span> = <span class="s">(</span><span class="n">0</span><span class="cm">,</span> <span class="n">2</span><span class="cm">,</span> <span class="n">2</span><span class="s">)</span><span class="sc">;</span>
+ 959 
+ 960   <span class="c"># Start link table...</span>
+ 961   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLAlignmentBegin</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 962   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLDivBegin</span><span class="s">(</span><span class="q">&quot;tablenav&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 963   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span>  <span class="i">SetupHTMLTableHeader</span><span class="s">(</span><span class="i">$BorderWidth</span><span class="cm">,</span> <span class="i">$CellPadding</span><span class="cm">,</span> <span class="i">$CellSpacing</span><span class="s">)</span><span class="sc">;</span>
+ 964   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowHeaderTags</span>}<span class="sc">;</span>
+ 965 
+ 966   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;Compounds: &quot;</span><span class="s">)</span><span class="sc">;</span>
+ 967 
+ 968   <span class="c"># Setup a link to first compound...</span>
+ 969   <span class="k">if</span> <span class="s">(</span><span class="i">$CurCmpdNum</span> != <span class="i">$FirstCmpdNum</span><span class="s">)</span> <span class="s">{</span>
+ 970     <span class="i">$HTMLFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">&quot;Cmpd&quot;</span> . <span class="i">$FirstCmpdNum</span> . <span class="q">&quot;.html&quot;</span><span class="sc">;</span>
+ 971     <span class="i">$HTMLRefFile</span> = <span class="q">&quot;./${HTMLFile}&quot;</span><span class="sc">;</span>
+ 972     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">&quot;First&quot;</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">&quot;First Compound&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 973     <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$HTMLRefValue</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$LinkTextColor</span><span class="cm">,</span> <span class="i">$LinkFontBold</span><span class="s">)</span><span class="sc">;</span>
+ 974   <span class="s">}</span>
+ 975 
+ 976   <span class="c"># Setup a link to previous compund</span>
+ 977   <span class="k">if</span> <span class="s">(</span><span class="i">$PreviousCmpdNum</span><span class="s">)</span> <span class="s">{</span>
+ 978     <span class="i">$HTMLFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">&quot;Cmpd&quot;</span> . <span class="i">$PreviousCmpdNum</span> . <span class="q">&quot;.html&quot;</span><span class="sc">;</span>
+ 979     <span class="i">$HTMLRefFile</span> = <span class="q">&quot;./${HTMLFile}&quot;</span><span class="sc">;</span>
+ 980     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">&quot;Previous&quot;</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">&quot;Previous Compound&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 981     <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$HTMLRefValue</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$LinkTextColor</span><span class="cm">,</span> <span class="i">$LinkFontBold</span><span class="s">)</span><span class="sc">;</span>
+ 982   <span class="s">}</span>
+ 983 
+ 984   <span class="c"># Setup a link to compound table...</span>
+ 985   <span class="k">if</span> <span class="s">(</span><span class="i">$SDFilesInfo</span>{<span class="w">MultipleHTMLTables</span>}[<span class="i">$Index</span>]<span class="s">)</span> <span class="s">{</span>
+ 986     <span class="i">$HTMLFile</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableHTMLFiles</span>}[<span class="i">$Index</span>]}[<span class="i">$CurTableIndex</span>]<span class="sc">;</span>
+ 987   <span class="s">}</span>
+ 988   <span class="k">else</span> <span class="s">{</span>
+ 989     <span class="i">$HTMLFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">&quot;.html&quot;</span><span class="sc">;</span>
+ 990   <span class="s">}</span>
+ 991   <span class="i">$HTMLRefFile</span> = <span class="s">(</span><span class="s">(</span><span class="i">$CurTableNum</span> == <span class="i">$FirstTableNum</span><span class="s">)</span> ? <span class="q">&quot;../&quot;</span> <span class="co">:</span> <span class="q">&quot;./&quot;</span><span class="s">)</span> . <span class="i">$HTMLFile</span><span class="sc">;</span>
+ 992   <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">&quot;Table&quot;</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">&quot;Table With This Compound&quot;</span><span class="s">)</span><span class="sc">;</span>
+ 993   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$HTMLRefValue</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$LinkTextColor</span><span class="cm">,</span> <span class="i">$LinkFontBold</span><span class="s">)</span><span class="sc">;</span>
+ 994 
+ 995   <span class="c"># Setup a link to next compound...</span>
+ 996   <span class="k">if</span> <span class="s">(</span><span class="i">$NextCmpdNum</span><span class="s">)</span> <span class="s">{</span>
+ 997     <span class="i">$HTMLFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">&quot;Cmpd&quot;</span> . <span class="i">$NextCmpdNum</span> . <span class="q">&quot;.html&quot;</span><span class="sc">;</span>
+ 998     <span class="i">$HTMLRefFile</span> = <span class="q">&quot;./${HTMLFile}&quot;</span><span class="sc">;</span>
+ 999     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">&quot;Next&quot;</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">&quot;Next Compound&quot;</span><span class="s">)</span><span class="sc">;</span>
+1000     <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$HTMLRefValue</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$LinkTextColor</span><span class="cm">,</span> <span class="i">$LinkFontBold</span><span class="s">)</span><span class="sc">;</span>
+1001   <span class="s">}</span>
+1002 
+1003   <span class="c"># Setup a link to last compund</span>
+1004   <span class="k">if</span> <span class="s">(</span><span class="i">$CurCmpdNum</span> != <span class="i">$LastCmpdNum</span><span class="s">)</span> <span class="s">{</span>
+1005     <span class="i">$HTMLFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">&quot;Cmpd&quot;</span> . <span class="i">$LastCmpdNum</span> . <span class="q">&quot;.html&quot;</span><span class="sc">;</span>
+1006     <span class="i">$HTMLRefFile</span> = <span class="q">&quot;./${HTMLFile}&quot;</span><span class="sc">;</span>
+1007     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">&quot;Last&quot;</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">&quot;Last Compound&quot;</span><span class="s">)</span><span class="sc">;</span>
+1008     <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$HTMLRefValue</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$LinkTextColor</span><span class="cm">,</span> <span class="i">$LinkFontBold</span><span class="s">)</span><span class="sc">;</span>
+1009   <span class="s">}</span>
+1010 
+1011   <span class="c"># Setup current table info text....</span>
+1012   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;&amp;nbsp&quot;</span><span class="s">)</span><span class="sc">;</span>
+1013   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;&amp;nbsp&quot;</span><span class="s">)</span><span class="sc">;</span>
+1014   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;Showing $CurCmpdNum of $LastCmpdNum&quot;</span><span class="s">)</span><span class="sc">;</span>
+1015 
+1016   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+1017 
+1018   <span class="c"># End link table...</span>
+1019   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLTableEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1020   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLDivEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1021   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLAlignmentEnd</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+1022 <span class="s">}</span>
+1023 
+1024 <span class="c"># Setup navigation link information for each table.</span>
+1025 <span class="c">#</span>
+1026 <span class="c"># All table sets besides first and last have these links: FirstTable, Previous, Current-1,Current,Current+1,  Next, and LastTable</span>
+1027 <span class="c"># First set: Current, Next, and LastTable</span>
+1028 <span class="c"># Last set: FirstTable, Previous and Current.</span>
+1029 <span class="c">#</span>
+<a name="WriteNavigationLinks-"></a>1030 <span class="k">sub </span><span class="m">WriteNavigationLinks</span> <span class="s">{</span>
+1031   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$CurTableNum</span><span class="cm">,</span> <span class="i">$HTMLFileRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+1032   <span class="k">my</span><span class="s">(</span><span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$StartTableNum</span><span class="cm">,</span> <span class="i">$EndTableNum</span><span class="cm">,</span> <span class="i">$TableIndex</span><span class="cm">,</span> <span class="i">$BorderWidth</span><span class="cm">,</span> <span class="i">$CellPadding</span><span class="cm">,</span> <span class="i">$CellSpacing</span><span class="cm">,</span><span class="i">$HTMLFile</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="i">$RelativeFileDir</span><span class="cm">,</span> <span class="i">$HTMLRefValue</span><span class="cm">,</span> <span class="i">$FirstTableNum</span><span class="cm">,</span> <span class="i">$FirstTableIndex</span><span class="cm">,</span> <span class="i">$LastTableNum</span><span class="cm">,</span> <span class="i">$LastTableIndex</span><span class="cm">,</span> <span class="i">$TableStartCmpdNum</span><span class="cm">,</span> <span class="i">$TableEndCmpdNum</span><span class="cm">,</span> <span class="i">$LastCmpdNum</span><span class="cm">,</span> <span class="i">$BGColor</span><span class="cm">,</span> <span class="i">$LinksOffSet</span><span class="s">)</span><span class="sc">;</span>
+1033 
+1034   <span class="i">$LinksOffSet</span> = <span class="n">10</span><span class="sc">;</span>
+1035 
+1036   <span class="i">$FirstTableNum</span> = <span class="n">1</span><span class="sc">;</span> <span class="i">$FirstTableIndex</span> = <span class="i">$FirstTableNum</span> - <span class="n">1</span><span class="sc">;</span>
+1037   <span class="i">$LastTableNum</span> = <span class="i">$SDFilesInfo</span>{<span class="w">TableCount</span>}[<span class="i">$Index</span>]<span class="sc">;</span> <span class="i">$LastTableIndex</span> = <span class="i">$LastTableNum</span> - <span class="n">1</span><span class="sc">;</span>
+1038   <span class="i">$LastCmpdNum</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableEndCmpdNum</span>}[<span class="i">$Index</span>]}[<span class="i">$LastTableIndex</span>]<span class="sc">;</span>
+1039 
+1040   <span class="c"># Figure out which links to display for a particular table...</span>
+1041   <span class="i">$StartTableNum</span> = <span class="i">$CurTableNum</span> - <span class="i">$LinksOffSet</span> + <span class="n">1</span><span class="sc">;</span>
+1042   <span class="i">$StartTableNum</span> = <span class="s">(</span><span class="i">$StartTableNum</span> &lt; <span class="i">$FirstTableNum</span><span class="s">)</span> ? <span class="i">$FirstTableNum</span> <span class="co">:</span> <span class="i">$StartTableNum</span><span class="sc">;</span>
+1043   <span class="k">if</span> <span class="s">(</span><span class="i">$CurTableNum</span> &lt; <span class="i">$LinksOffSet</span><span class="s">)</span> <span class="s">{</span>
+1044     <span class="i">$EndTableNum</span> = <span class="i">$LinksOffSet</span><span class="sc">;</span>
+1045   <span class="s">}</span>
+1046   <span class="k">else</span> <span class="s">{</span>
+1047     <span class="i">$EndTableNum</span> = <span class="i">$CurTableNum</span> + <span class="i">$LinksOffSet</span> - <span class="n">1</span><span class="sc">;</span>
+1048   <span class="s">}</span>
+1049   <span class="i">$EndTableNum</span> = <span class="s">(</span><span class="i">$EndTableNum</span> &gt; <span class="i">$LastTableNum</span><span class="s">)</span> ? <span class="i">$LastTableNum</span> <span class="co">:</span> <span class="i">$EndTableNum</span><span class="sc">;</span>
+1050 
+1051   <span class="k">my</span><span class="s">(</span><span class="i">$InactiveLinkNumColor</span><span class="cm">,</span> <span class="i">$InactiveLinkFontBold</span><span class="s">)</span> = <span class="s">(</span><span class="q">&quot;#8e2323&quot;</span><span class="cm">,</span> <span class="q">&quot;1&quot;</span><span class="s">)</span><span class="sc">;</span>
+1052   <span class="k">my</span><span class="s">(</span><span class="i">$LinkTextColor</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$LinkFontBold</span><span class="s">)</span> = <span class="s">(</span><span class="q">&quot;&quot;</span><span class="cm">,</span> <span class="q">&quot;&quot;</span><span class="cm">,</span> <span class="q">&quot;1&quot;</span><span class="s">)</span><span class="sc">;</span>
+1053 
+1054   <span class="c"># Start link table...</span>
+1055   <span class="i">$BorderWidth</span> = <span class="n">0</span><span class="sc">;</span> <span class="i">$CellPadding</span> = <span class="n">2</span><span class="sc">;</span> <span class="i">$CellSpacing</span> = <span class="n">2</span><span class="sc">;</span>
+1056   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLAlignmentBegin</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+1057   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLDivBegin</span><span class="s">(</span><span class="q">&quot;tablenav&quot;</span><span class="s">)</span><span class="sc">;</span>
+1058   <span class="k">print</span> <span class="i">$HTMLFileRef</span>  <span class="i">SetupHTMLTableHeader</span><span class="s">(</span><span class="i">$BorderWidth</span><span class="cm">,</span> <span class="i">$CellPadding</span><span class="cm">,</span> <span class="i">$CellSpacing</span><span class="s">)</span><span class="sc">;</span>
+1059   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowHeaderTags</span>}<span class="sc">;</span>
+1060 
+1061   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">NavLinksTableInfo</span>} &amp;&amp; <span class="i">$OptionsInfo</span>{<span class="w">NavLinksCmpdInfo</span>}<span class="s">)</span> <span class="s">{</span>
+1062     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;Showing table $CurTableNum of $LastTableNum&quot;</span><span class="s">)</span><span class="sc">;</span>
+1063     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;&amp;nbsp&quot;</span><span class="s">)</span><span class="sc">;</span>
+1064     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;&amp;nbsp&quot;</span><span class="s">)</span><span class="sc">;</span>
+1065   <span class="s">}</span>
+1066 
+1067   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;Tables: &quot;</span><span class="s">)</span><span class="sc">;</span>
+1068   <span class="c"># Setup a link to first table...</span>
+1069   <span class="k">if</span> <span class="s">(</span><span class="i">$StartTableNum</span> != <span class="i">$FirstTableNum</span><span class="s">)</span> <span class="s">{</span>
+1070     <span class="i">$HTMLFile</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableHTMLFiles</span>}[<span class="i">$Index</span>]}[<span class="i">$FirstTableIndex</span>]<span class="sc">;</span>
+1071     <span class="i">$HTMLRefFile</span> = <span class="i">GetRelativeFileDir</span><span class="s">(</span><span class="i">$CurTableNum</span><span class="cm">,</span> <span class="i">$FirstTableNum</span><span class="cm">,</span> <span class="i">$FirstTableNum</span><span class="s">)</span> . <span class="i">$HTMLFile</span><span class="sc">;</span>
+1072     <span class="i">$TableStartCmpdNum</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableStartCmpdNum</span>}[<span class="i">$Index</span>]}[<span class="i">$FirstTableIndex</span>]<span class="sc">;</span>
+1073     <span class="i">$TableEndCmpdNum</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableEndCmpdNum</span>}[<span class="i">$Index</span>]}[<span class="i">$FirstTableIndex</span>]<span class="sc">;</span>
+1074     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">&quot;First&quot;</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">&quot;First Table Containing Compounds $TableStartCmpdNum To $TableEndCmpdNum&quot;</span><span class="s">)</span><span class="sc">;</span>
+1075     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$HTMLRefValue</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$LinkTextColor</span><span class="cm">,</span> <span class="i">$LinkFontBold</span><span class="s">)</span><span class="sc">;</span>
+1076   <span class="s">}</span>
+1077 
+1078   <span class="c"># Setup link to previous table...</span>
+1079   <span class="k">if</span> <span class="s">(</span><span class="i">$CurTableNum</span> != <span class="i">$FirstTableNum</span><span class="s">)</span> <span class="s">{</span>
+1080     <span class="k">my</span><span class="s">(</span><span class="i">$PreviousTableNum</span><span class="cm">,</span> <span class="i">$PreviousTableIndex</span><span class="s">)</span><span class="sc">;</span>
+1081     <span class="i">$PreviousTableNum</span> = <span class="i">$CurTableNum</span> - <span class="n">1</span><span class="sc">;</span> <span class="i">$PreviousTableIndex</span> = <span class="i">$PreviousTableNum</span> - <span class="n">1</span><span class="sc">;</span>
+1082     <span class="i">$HTMLFile</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableHTMLFiles</span>}[<span class="i">$Index</span>]}[<span class="i">$PreviousTableIndex</span>]<span class="sc">;</span>
+1083     <span class="i">$HTMLRefFile</span> = <span class="i">GetRelativeFileDir</span><span class="s">(</span><span class="i">$CurTableNum</span><span class="cm">,</span> <span class="i">$PreviousTableNum</span><span class="cm">,</span> <span class="i">$FirstTableNum</span><span class="s">)</span> . <span class="i">$HTMLFile</span><span class="sc">;</span>
+1084     <span class="i">$TableStartCmpdNum</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableStartCmpdNum</span>}[<span class="i">$Index</span>]}[<span class="i">$PreviousTableIndex</span>]<span class="sc">;</span>
+1085     <span class="i">$TableEndCmpdNum</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableEndCmpdNum</span>}[<span class="i">$Index</span>]}[<span class="i">$PreviousTableIndex</span>]<span class="sc">;</span>
+1086     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">&quot;Previous&quot;</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">&quot;Previous Table Containing Compounds $TableStartCmpdNum To $TableEndCmpdNum&quot;</span><span class="s">)</span><span class="sc">;</span>
+1087     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$HTMLRefValue</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$LinkTextColor</span><span class="cm">,</span> <span class="i">$LinkFontBold</span><span class="s">)</span><span class="sc">;</span>
+1088   <span class="s">}</span>
+1089 
+1090   <span class="k">for</span> <span class="i">$TableNum</span> <span class="s">(</span><span class="i">$StartTableNum</span> .. <span class="i">$EndTableNum</span><span class="s">)</span> <span class="s">{</span>
+1091     <span class="i">$TableIndex</span> = <span class="i">$TableNum</span> - <span class="n">1</span><span class="sc">;</span>
+1092     <span class="i">$HTMLFile</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableHTMLFiles</span>}[<span class="i">$Index</span>]}[<span class="i">$TableIndex</span>]<span class="sc">;</span>
+1093     <span class="k">if</span> <span class="s">(</span><span class="i">$TableNum</span> == <span class="i">$CurTableNum</span><span class="s">)</span> <span class="s">{</span>
+1094       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$InactiveLinkNumColor</span><span class="cm">,</span> <span class="i">$InactiveLinkFontBold</span><span class="s">)</span><span class="sc">;</span>
+1095     <span class="s">}</span>
+1096     <span class="k">else</span> <span class="s">{</span>
+1097       <span class="c"># Setup the link...</span>
+1098       <span class="k">my</span><span class="s">(</span><span class="i">$RefTitle</span><span class="s">)</span><span class="sc">;</span>
+1099       <span class="i">$TableStartCmpdNum</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableStartCmpdNum</span>}[<span class="i">$Index</span>]}[<span class="i">$TableIndex</span>]<span class="sc">;</span>
+1100       <span class="i">$TableEndCmpdNum</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableEndCmpdNum</span>}[<span class="i">$Index</span>]}[<span class="i">$TableIndex</span>]<span class="sc">;</span>
+1101       <span class="i">$RefTitle</span> = <span class="i">AddNumberSuffix</span><span class="s">(</span><span class="i">$TableNum</span><span class="s">)</span> . <span class="q">&quot; Table Containing Compounds $TableStartCmpdNum To $TableEndCmpdNum&quot;</span><span class="sc">;</span>
+1102       <span class="i">$HTMLRefFile</span> = <span class="i">GetRelativeFileDir</span><span class="s">(</span><span class="i">$CurTableNum</span><span class="cm">,</span> <span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$FirstTableNum</span><span class="s">)</span> . <span class="i">$HTMLFile</span><span class="sc">;</span>
+1103       <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="i">$TableNum</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="i">$RefTitle</span><span class="s">)</span><span class="sc">;</span>
+1104       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$HTMLRefValue</span><span class="s">)</span><span class="sc">;</span>
+1105     <span class="s">}</span>
+1106   <span class="s">}</span>
+1107 
+1108   <span class="c"># Setup link to next table...</span>
+1109   <span class="k">if</span> <span class="s">(</span><span class="i">$CurTableNum</span> != <span class="i">$LastTableNum</span><span class="s">)</span> <span class="s">{</span>
+1110     <span class="k">my</span><span class="s">(</span><span class="i">$NextTableNum</span><span class="cm">,</span> <span class="i">$NextTableIndex</span><span class="s">)</span><span class="sc">;</span>
+1111     <span class="i">$NextTableNum</span> = <span class="i">$CurTableNum</span> + <span class="n">1</span><span class="sc">;</span> <span class="i">$NextTableIndex</span> = <span class="i">$NextTableNum</span> - <span class="n">1</span><span class="sc">;</span>
+1112     <span class="i">$HTMLFile</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableHTMLFiles</span>}[<span class="i">$Index</span>]}[<span class="i">$NextTableIndex</span>]<span class="sc">;</span>
+1113     <span class="i">$HTMLRefFile</span> = <span class="i">GetRelativeFileDir</span><span class="s">(</span><span class="i">$CurTableNum</span><span class="cm">,</span> <span class="i">$NextTableNum</span><span class="cm">,</span> <span class="i">$FirstTableNum</span><span class="s">)</span> . <span class="i">$HTMLFile</span><span class="sc">;</span>
+1114     <span class="i">$TableStartCmpdNum</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableStartCmpdNum</span>}[<span class="i">$Index</span>]}[<span class="i">$NextTableIndex</span>]<span class="sc">;</span>
+1115     <span class="i">$TableEndCmpdNum</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableEndCmpdNum</span>}[<span class="i">$Index</span>]}[<span class="i">$NextTableIndex</span>]<span class="sc">;</span>
+1116     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">&quot;Next&quot;</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">&quot;Next Table Containing Compounds $TableStartCmpdNum To $TableEndCmpdNum&quot;</span><span class="s">)</span><span class="sc">;</span>
+1117     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$HTMLRefValue</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$LinkTextColor</span><span class="cm">,</span> <span class="i">$LinkFontBold</span><span class="s">)</span><span class="sc">;</span>
+1118   <span class="s">}</span>
+1119 
+1120   <span class="c"># Setup link to last table...</span>
+1121   <span class="k">if</span> <span class="s">(</span><span class="i">$EndTableNum</span> != <span class="i">$LastTableNum</span><span class="s">)</span> <span class="s">{</span>
+1122     <span class="i">$HTMLFile</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableHTMLFiles</span>}[<span class="i">$Index</span>]}[<span class="i">$LastTableIndex</span>]<span class="sc">;</span>
+1123     <span class="i">$HTMLRefFile</span> = <span class="i">GetRelativeFileDir</span><span class="s">(</span><span class="i">$CurTableNum</span><span class="cm">,</span> <span class="i">$LastTableNum</span><span class="cm">,</span> <span class="i">$FirstTableNum</span><span class="s">)</span> . <span class="i">$HTMLFile</span><span class="sc">;</span>
+1124     <span class="i">$TableStartCmpdNum</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableStartCmpdNum</span>}[<span class="i">$Index</span>]}[<span class="i">$LastTableIndex</span>]<span class="sc">;</span>
+1125     <span class="i">$TableEndCmpdNum</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableEndCmpdNum</span>}[<span class="i">$Index</span>]}[<span class="i">$LastTableIndex</span>]<span class="sc">;</span>
+1126     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">&quot;Last&quot;</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">&quot;Last Table Containing Compounds $TableStartCmpdNum To $TableEndCmpdNum&quot;</span><span class="s">)</span><span class="sc">;</span>
+1127     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="i">$HTMLRefValue</span><span class="cm">,</span> <span class="i">$LinkBGColor</span><span class="cm">,</span> <span class="i">$LinkTextColor</span><span class="cm">,</span> <span class="i">$LinkFontBold</span><span class="s">)</span><span class="sc">;</span>
+1128   <span class="s">}</span>
+1129   <span class="c"># Setup current table info text....</span>
+1130   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;&amp;nbsp&quot;</span><span class="s">)</span><span class="sc">;</span>
+1131   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;&amp;nbsp&quot;</span><span class="s">)</span><span class="sc">;</span>
+1132   <span class="i">$TableStartCmpdNum</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableStartCmpdNum</span>}[<span class="i">$Index</span>]}[<span class="i">$CurTableNum</span> - <span class="n">1</span>]<span class="sc">;</span>
+1133   <span class="i">$TableEndCmpdNum</span> = <span class="i">$</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableEndCmpdNum</span>}[<span class="i">$Index</span>]}[<span class="i">$CurTableNum</span> - <span class="n">1</span>]<span class="sc">;</span>
+1134   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">NavLinksCmpdInfo</span>}<span class="s">)</span> <span class="s">{</span>
+1135     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;Showing compounds $TableStartCmpdNum to $TableEndCmpdNum of $LastCmpdNum&quot;</span><span class="s">)</span><span class="sc">;</span>
+1136   <span class="s">}</span>
+1137   <span class="k">else</span> <span class="s">{</span>
+1138     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">&quot;Showing table $CurTableNum of $LastTableNum&quot;</span><span class="s">)</span><span class="sc">;</span>
+1139   <span class="s">}</span>
+1140 
+1141   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>}<span class="sc">;</span>
+1142   <span class="c"># End link table...</span>
+1143   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1144   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLDivEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1145   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLAlignmentEnd</span><span class="s">(</span><span class="q">&quot;center&quot;</span><span class="s">)</span><span class="sc">;</span>
+1146 <span class="s">}</span>
+1147 
+1148 <span class="c"># Generate relative directory path...</span>
+<a name="GetRelativeFileDir-"></a>1149 <span class="k">sub </span><span class="m">GetRelativeFileDir</span> <span class="s">{</span>
+1150   <span class="k">my</span><span class="s">(</span><span class="i">$FromTableNum</span><span class="cm">,</span> <span class="i">$ToTableNum</span><span class="cm">,</span> <span class="i">$FirstTableNum</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+1151   <span class="k">my</span><span class="s">(</span><span class="i">$RelativeFileDir</span><span class="s">)</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1152 
+1153   <span class="k">if</span> <span class="s">(</span><span class="i">$FromTableNum</span> == <span class="i">$FirstTableNum</span><span class="s">)</span> <span class="s">{</span>
+1154     <span class="i">$RelativeFileDir</span> = <span class="s">(</span><span class="i">$ToTableNum</span> == <span class="i">$FirstTableNum</span><span class="s">)</span> ? <span class="q">&quot;.\/&quot;</span> <span class="co">:</span> <span class="q">&quot;.\/html\/&quot;</span><span class="sc">;</span>
+1155   <span class="s">}</span>
+1156   <span class="k">else</span> <span class="s">{</span>
+1157     <span class="i">$RelativeFileDir</span> = <span class="s">(</span><span class="i">$ToTableNum</span> == <span class="i">$FirstTableNum</span><span class="s">)</span> ? <span class="q">&quot;..\/&quot;</span> <span class="co">:</span> <span class="q">&quot;.\/&quot;</span><span class="sc">;</span>
+1158   <span class="s">}</span>
+1159   <span class="k">return</span> <span class="i">$RelativeFileDir</span><span class="sc">;</span>
+1160 <span class="s">}</span>
+1161 
+1162 <span class="c"># Based on hightlight stype, return appropriate colors for background or text...</span>
+<a name="GetValueHighlightColors-"></a>1163 <span class="k">sub </span><span class="m">GetValueHighlightColors</span> <span class="s">{</span>
+1164   <span class="k">my</span><span class="s">(</span><span class="i">$Label</span><span class="cm">,</span> <span class="i">$Value</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+1165   <span class="k">my</span><span class="s">(</span><span class="i">$DataType</span><span class="cm">,</span> <span class="i">$Criterion</span><span class="cm">,</span> <span class="i">$CriterionValue</span><span class="cm">,</span> <span class="i">$BgColor</span><span class="cm">,</span> <span class="i">$FontColor</span><span class="cm">,</span> <span class="i">$ValueOk</span><span class="cm">,</span> <span class="i">$Nothing</span><span class="s">)</span><span class="sc">;</span>
+1166 
+1167   <span class="i">$BgColor</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$FontColor</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1168   <span class="i">$DataType</span> = <span class="i">$OptionsInfo</span>{<span class="w">SpecifiedHighlightDataFieldTypesMap</span>}{<span class="i">$Label</span>}<span class="sc">;</span>
+1169   <span class="i">$Criterion</span> = <span class="i">$OptionsInfo</span>{<span class="w">SpecifiedHighlightDataFieldCriteriaMap</span>}{<span class="i">$Label</span>}<span class="sc">;</span>
+1170   <span class="i">$CriterionValue</span> = <span class="i">$OptionsInfo</span>{<span class="w">SpecifiedHighlightDataFieldValueMap</span>}{<span class="i">$Label</span>}<span class="sc">;</span>
+1171 
+1172   <span class="i">$ValueOk</span> = <span class="n">0</span><span class="sc">;</span>
+1173   <span class="k">if</span> <span class="s">(</span><span class="i">$DataType</span> =~ <span class="q">/^numeric$/i</span><span class="s">)</span> <span class="s">{</span>
+1174   <span class="j">NUMSWITCH:</span> <span class="s">{</span>
+1175       <span class="k">if</span> <span class="s">(</span><span class="i">$Criterion</span> =~ <span class="q">/^ge$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$ValueOk</span> = <span class="s">(</span><span class="i">$Value</span> &gt;= <span class="i">$CriterionValue</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">NUMSWITCH</span><span class="sc">;</span> <span class="s">}</span>
+1176       <span class="k">if</span> <span class="s">(</span><span class="i">$Criterion</span> =~ <span class="q">/^le$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$ValueOk</span> = <span class="s">(</span><span class="i">$Value</span> &lt;= <span class="i">$CriterionValue</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">NUMSWITCH</span><span class="sc">;</span> <span class="s">}</span>
+1177       <span class="k">if</span> <span class="s">(</span><span class="i">$Criterion</span> =~ <span class="q">/^eq$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$ValueOk</span> = <span class="s">(</span><span class="i">$Value</span> == <span class="i">$CriterionValue</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">NUMSWITCH</span><span class="sc">;</span> <span class="s">}</span>
+1178       <span class="i">$Nothing</span> = <span class="n">1</span><span class="sc">;</span>
+1179     <span class="s">}</span>
+1180   <span class="s">}</span>
+1181   <span class="k">else</span> <span class="s">{</span>
+1182   <span class="j">TEXTSWITCH:</span> <span class="s">{</span>
+1183       <span class="k">if</span> <span class="s">(</span><span class="i">$Criterion</span> =~ <span class="q">/^ge$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$ValueOk</span> = <span class="s">(</span><span class="i">$Value</span> <span class="k">ge</span> <span class="i">$CriterionValue</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">TEXTSWITCH</span><span class="sc">;</span> <span class="s">}</span>
+1184       <span class="k">if</span> <span class="s">(</span><span class="i">$Criterion</span> =~ <span class="q">/^le$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$ValueOk</span> = <span class="s">(</span><span class="i">$Value</span> <span class="k">le</span> <span class="i">$CriterionValue</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">TEXTSWITCH</span><span class="sc">;</span> <span class="s">}</span>
+1185       <span class="k">if</span> <span class="s">(</span><span class="i">$Criterion</span> =~ <span class="q">/^eq$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$ValueOk</span> = <span class="s">(</span><span class="i">$Value</span> <span class="k">eq</span> <span class="i">$CriterionValue</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">TEXTSWITCH</span><span class="sc">;</span> <span class="s">}</span>
+1186       <span class="i">$Nothing</span> = <span class="n">1</span><span class="sc">;</span>
+1187     <span class="s">}</span>
+1188   <span class="s">}</span>
+1189   <span class="i">$BgColor</span> = <span class="i">$ValueOk</span> ? <span class="i">$OptionsInfo</span>{<span class="w">ValueOkColor</span>} <span class="co">:</span> <span class="i">$OptionsInfo</span>{<span class="w">ValueNotOkColor</span>}<span class="sc">;</span>
+1190   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">highlightstyle</span>} =~ <span class="q">/^text$/i</span><span class="s">)</span> <span class="s">{</span>
+1191     <span class="i">$BgColor</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1192     <span class="i">$FontColor</span> = <span class="i">$ValueOk</span> ? <span class="i">$OptionsInfo</span>{<span class="w">ValueOkColor</span>} <span class="co">:</span> <span class="i">$OptionsInfo</span>{<span class="w">ValueNotOkColor</span>}<span class="sc">;</span>
+1193   <span class="s">}</span>
+1194   <span class="k">return</span> <span class="s">(</span><span class="i">$BgColor</span><span class="cm">,</span> <span class="i">$FontColor</span><span class="s">)</span><span class="sc">;</span>
+1195 <span class="s">}</span>
+1196 
+1197 <span class="c">#Make sure appropriate mode specific option values are specified...</span>
+<a name="ProcessOptions-"></a>1198 <span class="k">sub </span><span class="m">ProcessOptions</span> <span class="s">{</span>
+1199 
+1200   <span class="i">%OptionsInfo</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1201 
+1202   <span class="i">$OptionsInfo</span>{<span class="w">TitleDisplay</span>} = <span class="s">(</span><span class="i">$Options</span>{<span class="w">titledisplay</span>} =~ <span class="q">/^yes$/i</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span>
+1203 
+1204   <span class="i">$OptionsInfo</span>{<span class="w">RowHAlignment</span>} = <span class="q">&quot;left&quot;</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">RowVAlignment</span>} = <span class="q">&quot;middle&quot;</span><span class="sc">;</span>
+1205   <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$Options</span>{<span class="w">align</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1206     <span class="k">my</span> <span class="s">(</span><span class="i">@AlignValues</span><span class="s">)</span> = <span class="k">split</span> <span class="q">&quot;,&quot;</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">align</span>}<span class="sc">;</span>
+1207     <span class="k">if</span> <span class="s">(</span><span class="i">@AlignValues</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
+1208       <span class="i">$OptionsInfo</span>{<span class="w">RowHAlignment</span>} = <span class="i">$AlignValues</span>[<span class="n">0</span>]<span class="sc">;</span>
+1209       <span class="i">$OptionsInfo</span>{<span class="w">RowVAlignment</span>} = <span class="i">$AlignValues</span>[<span class="n">1</span>]<span class="sc">;</span>
+1210     <span class="s">}</span>
+1211     <span class="k">elsif</span> <span class="s">(</span><span class="i">@AlignValues</span> == <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
+1212       <span class="i">$OptionsInfo</span>{<span class="w">RowHAlignment</span>} = <span class="i">$AlignValues</span>[<span class="n">0</span>]<span class="sc">;</span>
+1213     <span class="s">}</span>
+1214     <span class="k">else</span> <span class="s">{</span>
+1215       <span class="k">die</span> <span class="q">&quot;Error: Invalid number of values, &quot;</span><span class="cm">,</span> <span class="k">scalar</span><span class="s">(</span><span class="i">@AlignValues</span><span class="s">)</span> <span class="cm">,</span> <span class="q">&quot;, specified by \&quot;-a --align\&quot; option.\nIt must contain only one or two values.\n&quot;</span><span class="sc">;</span>
+1216     <span class="s">}</span>
+1217     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">RowHAlignment</span>} !~ <span class="q">/^(left|center|right)$/i</span><span class="s">)</span> <span class="s">{</span>
+1218       <span class="k">die</span> <span class="q">&quot;Error: The horizontal alignment value specified, $Options{align}, for option \&quot;-a --align\&quot; is not valid. Allowed values: left, center, or right\n&quot;</span><span class="sc">;</span>
+1219     <span class="s">}</span>
+1220     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">RowVAlignment</span>} !~ <span class="q">/^(top|middle|bottom)$/i</span><span class="s">)</span> <span class="s">{</span>
+1221       <span class="k">die</span> <span class="q">&quot;Error: The horizontal alignment value specified, $Options{align}, for option \&quot;-a --align\&quot; is not valid. Allowed values: top, middle, or bottom\n&quot;</span><span class="sc">;</span>
+1222     <span class="s">}</span>
+1223   <span class="s">}</span>
+1224 
+1225   <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowHAlignment</span>} = <span class="q">&quot;center&quot;</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowVAlignment</span>} = <span class="q">&quot;middle&quot;</span><span class="sc">;</span>
+1226   <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$Options</span>{<span class="w">headeralign</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1227     <span class="k">my</span> <span class="s">(</span><span class="i">@AlignValues</span><span class="s">)</span> = <span class="k">split</span> <span class="q">&quot;,&quot;</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">headeralign</span>}<span class="sc">;</span>
+1228     <span class="k">if</span> <span class="s">(</span><span class="i">@AlignValues</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
+1229       <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowHAlignment</span>} = <span class="i">$AlignValues</span>[<span class="n">0</span>]<span class="sc">;</span>
+1230       <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowVAlignment</span>} = <span class="i">$AlignValues</span>[<span class="n">1</span>]<span class="sc">;</span>
+1231     <span class="s">}</span>
+1232     <span class="k">elsif</span> <span class="s">(</span><span class="i">@AlignValues</span> == <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
+1233       <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowHAlignment</span>} = <span class="i">$AlignValues</span>[<span class="n">0</span>]<span class="sc">;</span>
+1234     <span class="s">}</span>
+1235     <span class="k">else</span> <span class="s">{</span>
+1236       <span class="k">die</span> <span class="q">&quot;Error: Invalid number of values, &quot;</span><span class="cm">,</span> <span class="k">scalar</span><span class="s">(</span><span class="i">@AlignValues</span><span class="s">)</span> <span class="cm">,</span> <span class="q">&quot;, specified by \&quot;--headeralign\&quot; option.\nIt must contain only one or two value.\n&quot;</span><span class="sc">;</span>
+1237     <span class="s">}</span>
+1238     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowHAlignment</span>} !~ <span class="q">/^(left|center|right)$/i</span><span class="s">)</span> <span class="s">{</span>
+1239       <span class="k">die</span> <span class="q">&quot;Error: The horizontal alignment value specified, $Options{headeralign}, for option \&quot;--headeralign\&quot; is not valid. Allowed values: left, center, or right\n&quot;</span><span class="sc">;</span>
+1240     <span class="s">}</span>
+1241     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowVAlignment</span>} !~ <span class="q">/^(top|middle|bottom)$/i</span><span class="s">)</span> <span class="s">{</span>
+1242       <span class="k">die</span> <span class="q">&quot;Error: The horizontal alignment value specified, $Options{headeralign}, for option \&quot;-a --headeralign\&quot; is not valid. Allowed values: top, middle, or bottom\n&quot;</span><span class="sc">;</span>
+1243     <span class="s">}</span>
+1244   <span class="s">}</span>
+1245 
+1246   <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$Options</span>{<span class="w">border</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1247     <span class="i">$OptionsInfo</span>{<span class="w">TableBorder</span>} = <span class="i">$Options</span>{<span class="w">border</span>}<span class="sc">;</span>
+1248   <span class="s">}</span>
+1249   <span class="k">else</span> <span class="s">{</span>
+1250     <span class="i">$OptionsInfo</span>{<span class="w">TableBorder</span>} = <span class="s">(</span><span class="i">$Options</span>{<span class="w">mode</span>} =~ <span class="q">/^(plain|highlight)$/i</span><span class="s">)</span> || <span class="i">$Options</span>{<span class="w">mode</span>} =~ <span class="q">/^structuresonly$/i</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span>
+1251   <span class="s">}</span>
+1252   <span class="i">$OptionsInfo</span>{<span class="w">TableCellPadding</span>} = <span class="i">$Options</span>{<span class="w">cellpadding</span>}<span class="sc">;</span>
+1253   <span class="i">$OptionsInfo</span>{<span class="w">TableCellSpacing</span>} = <span class="i">$Options</span>{<span class="w">cellspacing</span>}<span class="sc">;</span>
+1254   <span class="i">$OptionsInfo</span>{<span class="w">FooterMsg</span>} = <span class="i">$Options</span>{<span class="w">footer</span>} ? <span class="i">$Options</span>{<span class="w">footer</span>} <span class="co">:</span> <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1255 
+1256   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">headercolor</span>}<span class="s">)</span> <span class="s">{</span>
+1257     <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowColor</span>} = <span class="i">$Options</span>{<span class="w">headercolor</span>}<span class="sc">;</span>
+1258   <span class="s">}</span>
+1259   <span class="k">else</span> <span class="s">{</span>
+1260     <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowColor</span>} = <span class="s">(</span><span class="i">$Options</span>{<span class="w">mode</span>} =~ <span class="q">/^plain$/i</span><span class="s">)</span> ? <span class="q">&quot;&quot;</span> <span class="co">:</span> <span class="q">&quot;#e0e9eb&quot;</span><span class="sc">;</span>
+1261   <span class="s">}</span>
+1262 
+1263   <span class="i">$OptionsInfo</span>{<span class="w">NavLinksAtBottom</span>} = <span class="n">1</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">NavLinksAtTop</span>} = <span class="n">0</span><span class="sc">;</span>
+1264   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">displaylinks</span>} =~ <span class="q">/^(both|top)$/i</span><span class="s">)</span> <span class="s">{</span>
+1265     <span class="i">$OptionsInfo</span>{<span class="w">NavLinksAtTop</span>} = <span class="n">1</span><span class="sc">;</span>
+1266   <span class="s">}</span>
+1267   <span class="i">$OptionsInfo</span>{<span class="w">NavLinksTableInfo</span>} = <span class="n">1</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">NavLinksCmpdInfo</span>} = <span class="n">0</span><span class="sc">;</span>
+1268   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">displaylinksinfo</span>} =~ <span class="q">/^both$/i</span><span class="s">)</span> <span class="s">{</span>
+1269     <span class="i">$OptionsInfo</span>{<span class="w">NavLinksCmpdInfo</span>} = <span class="n">1</span><span class="sc">;</span>
+1270     <span class="i">$OptionsInfo</span>{<span class="w">NavLinksTableInfo</span>} = <span class="n">1</span><span class="sc">;</span>
+1271   <span class="s">}</span>
+1272   <span class="k">elsif</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">displaylinksinfo</span>} =~ <span class="q">/^compound$/i</span><span class="s">)</span> <span class="s">{</span>
+1273     <span class="i">$OptionsInfo</span>{<span class="w">NavLinksCmpdInfo</span>} = <span class="n">1</span><span class="sc">;</span>
+1274     <span class="i">$OptionsInfo</span>{<span class="w">NavLinksTableInfo</span>} = <span class="n">0</span><span class="sc">;</span>
+1275   <span class="s">}</span>
+1276 
+1277   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">stylesheet</span>} =~ <span class="q">/^old$/i</span> <span class="s">)</span> <span class="s">{</span>
+1278     <span class="k">if</span> <span class="s">(</span>!<span class="i">$Options</span>{<span class="w">stylesheetname</span>}<span class="s">)</span> <span class="s">{</span>
+1279       <span class="k">die</span> <span class="q">&quot;Error: No stylesheet name specified using \&quot;--stylesheetname\&quot; option: It is required for \&quot;old\&quot; value of \&quot;-s --stylesheet\&quot; option. \n&quot;</span><span class="sc">;</span>
+1280     <span class="s">}</span>
+1281   <span class="s">}</span>
+1282 
+1283   <span class="k">my</span><span class="s">(</span><span class="i">@ColorValues</span><span class="s">)</span><span class="sc">;</span>
+1284   <span class="i">$OptionsInfo</span>{<span class="w">ShadeRowsStatus</span>} = <span class="n">0</span><span class="sc">;</span>
+1285   <span class="i">$OptionsInfo</span>{<span class="w">OddRowsShadeColor</span>} = <span class="q">&quot;#ffffff&quot;</span><span class="sc">;</span>
+1286   <span class="i">$OptionsInfo</span>{<span class="w">EvenRowsShadeColor</span>} = <span class="q">&quot;#e0e9eb&quot;</span><span class="sc">;</span>
+1287   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">shadecolor</span>}<span class="s">)</span> <span class="s">{</span>
+1288     <span class="c"># Make sure only one value is specified...</span>
+1289     <span class="i">@ColorValues</span> = <span class="k">split</span> <span class="q">&quot;,&quot;</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">shadecolor</span>}<span class="sc">;</span>
+1290     <span class="k">if</span> <span class="s">(</span><span class="i">@ColorValues</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
+1291       <span class="i">$OptionsInfo</span>{<span class="w">OddRowsShadeColor</span>} = <span class="i">$ColorValues</span>[<span class="n">0</span>]<span class="sc">;</span>
+1292       <span class="i">$OptionsInfo</span>{<span class="w">EvenRowsShadeColor</span>} = <span class="i">$ColorValues</span>[<span class="n">1</span>]<span class="sc">;</span>
+1293     <span class="s">}</span>
+1294     <span class="k">else</span> <span class="s">{</span>
+1295       <span class="k">die</span> <span class="q">&quot;Error: Invalid number of values, &quot;</span><span class="cm">,</span> <span class="k">scalar</span><span class="s">(</span><span class="i">@ColorValues</span><span class="s">)</span> <span class="cm">,</span> <span class="q">&quot;, specified by \&quot;--shadecolor\&quot; option.\nIt must contain only two value.\n&quot;</span><span class="sc">;</span>
+1296     <span class="s">}</span>
+1297   <span class="s">}</span>
+1298   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">mode</span>} =~ <span class="q">/^(shade|shadedhighlight|shadedstructuresonly)$/i</span><span class="s">)</span> <span class="s">{</span>
+1299     <span class="i">$OptionsInfo</span>{<span class="w">ShadeRowsStatus</span>} = <span class="n">1</span><span class="sc">;</span>
+1300   <span class="s">}</span>
+1301 
+1302   <span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>} = <span class="n">0</span><span class="sc">;</span>
+1303   <span class="i">$OptionsInfo</span>{<span class="w">StrLinkShadeColor</span>} = <span class="s">(</span><span class="k">exists</span> <span class="i">$Options</span>{<span class="w">strlinkshadecolor</span>}<span class="s">)</span> ? <span class="i">$Options</span>{<span class="w">strlinkshadecolor</span>} <span class="co">:</span> <span class="q">&quot;#e0e9eb&quot;</span><span class="sc">;</span>
+1304   <span class="i">$OptionsInfo</span>{<span class="w">DisplayStructure</span>} = <span class="s">(</span><span class="i">$Options</span>{<span class="w">structure</span>} =~ <span class="q">/^display$/i</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span>
+1305   <span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} = <span class="i">$Options</span>{<span class="w">strviewertype</span>}<span class="sc">;</span>
+1306   <span class="i">$OptionsInfo</span>{<span class="w">StrLinkNavigation</span>} = <span class="s">(</span><span class="i">$Options</span>{<span class="w">strlinknavigation</span>} =~ <span class="q">/^yes$/i</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span>
+1307   <span class="i">$OptionsInfo</span>{<span class="w">StrLinkTitleDisplay</span>} = <span class="s">(</span><span class="i">$Options</span>{<span class="w">strlinktitledisplay</span>} =~ <span class="q">/^yes$/i</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span>
+1308   <span class="i">$OptionsInfo</span>{<span class="w">StrLinkTitle</span>} = <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$Options</span>{<span class="w">strlinktitle</span>}<span class="s">)</span> &amp;&amp; <span class="k">length</span><span class="s">(</span><span class="i">$Options</span>{<span class="w">strlinktitle</span>}<span class="s">)</span><span class="s">)</span> ? <span class="q">&quot;$Options{strlinktitle}&quot;</span> <span class="co">:</span> <span class="q">&quot;Compound Summary&quot;</span><span class="sc">;</span>
+1309 
+1310   <span class="k">my</span><span class="s">(</span><span class="i">$StrViewerEmbedUsingJS</span><span class="s">)</span> = <span class="s">(</span><span class="s">(</span><span class="i">$Options</span>{<span class="w">strviewerembed</span>} =~ <span class="q">/^javascript$/i</span><span class="s">)</span> &amp;&amp; <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} =~ <span class="q">/^(Jmol|MarvinView|ChemDrawPlugIn|ChemDrawActiveX|Chem3DActiveX)$/i</span> <span class="s">)</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span>
+1311 
+1312   <span class="i">$OptionsInfo</span>{<span class="w">StrTableRows</span>} = <span class="n">6</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">StrTableCols</span>} = <span class="n">4</span><span class="sc">;</span>
+1313   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">strtablesize</span>}<span class="s">)</span> <span class="s">{</span>
+1314     <span class="k">my</span><span class="s">(</span><span class="i">@StrTableSizeValues</span><span class="s">)</span> = <span class="k">split</span> <span class="q">&quot;,&quot;</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">strtablesize</span>}<span class="sc">;</span>
+1315     <span class="k">if</span> <span class="s">(</span><span class="i">@StrTableSizeValues</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
+1316       <span class="i">$OptionsInfo</span>{<span class="w">StrTableRows</span>} = <span class="i">$StrTableSizeValues</span>[<span class="n">0</span>]<span class="sc">;</span>
+1317       <span class="i">$OptionsInfo</span>{<span class="w">StrTableCols</span>} = <span class="i">$StrTableSizeValues</span>[<span class="n">1</span>]<span class="sc">;</span>
+1318       <span class="k">if</span> <span class="s">(</span>!<span class="i">IsPositiveInteger</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrTableRows</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1319         <span class="k">die</span> <span class="q">&quot;Error: The first value specified, $OptionsInfo{StrTableRows},  for option \&quot;--strtablesize\&quot; is not valid: Allowed integer values: &gt; 0.\n&quot;</span><span class="sc">;</span>
+1320       <span class="s">}</span>
+1321       <span class="k">if</span> <span class="s">(</span>!<span class="i">IsPositiveInteger</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrTableCols</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1322         <span class="k">die</span> <span class="q">&quot;Error: The first value specified, $OptionsInfo{StrTableCols},  for option \&quot;--strtablesize\&quot; is not valid: Allowed integer values: &gt; 0.\n&quot;</span><span class="sc">;</span>
+1323       <span class="s">}</span>
+1324     <span class="s">}</span>
+1325     <span class="k">else</span> <span class="s">{</span>
+1326       <span class="k">die</span> <span class="q">&quot;Error: Invalid number of values, &quot;</span><span class="cm">,</span> <span class="k">scalar</span><span class="s">(</span><span class="i">@StrTableSizeValues</span><span class="s">)</span><span class="cm">,</span> <span class="q">&quot;, specified by \&quot;--strtablesize\&quot; option.\nIt must contain only two value for structuresonly \&quot;-m --mode\&quot; option.\n&quot;</span><span class="sc">;</span>
+1327     <span class="s">}</span>
+1328   <span class="s">}</span>
+1329 
+1330   <span class="c"># Setup applet information...</span>
+1331   <span class="i">$OptionsInfo</span>{<span class="w">StrViewerCodeBase</span>} = <span class="i">GetMayaChemToolsLibDirName</span><span class="s">(</span><span class="s">)</span> . <span class="q">&quot;/Jmol&quot;</span><span class="sc">;</span>
+1332   <span class="i">$OptionsInfo</span>{<span class="w">TopHTMLDirStrViewerCodeBase</span>} = <span class="i">$OptionsInfo</span>{<span class="w">StrViewerCodeBase</span>}<span class="sc">;</span>
+1333   <span class="i">$OptionsInfo</span>{<span class="w">SubHTMLDirStrViewerCodeBase</span>} = <span class="i">$OptionsInfo</span>{<span class="w">StrViewerCodeBase</span>}<span class="sc">;</span>
+1334 
+1335   <span class="k">my</span><span class="s">(</span><span class="i">$StrViewerAppletArchive</span><span class="cm">,</span> <span class="i">$StrViewerAppletCode</span><span class="s">)</span> = <span class="i">SetupDefaultAppletArchiveAndCode</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>}<span class="s">)</span><span class="sc">;</span>
+1336   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">strviewerconfig</span>}<span class="s">)</span> <span class="s">{</span>
+1337     <span class="k">my</span><span class="s">(</span><span class="i">@StrViewerConfigParts</span><span class="s">)</span> = <span class="k">split</span> <span class="q">&quot;,&quot;</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">strviewerconfig</span>}<span class="sc">;</span>
+1338     <span class="k">if</span> <span class="s">(</span><span class="i">@StrViewerConfigParts</span> &gt;=<span class="n">1</span> &amp;&amp; <span class="i">@StrViewerConfigParts</span> &lt;= <span class="n">3</span><span class="s">)</span> <span class="s">{</span>
+1339       <span class="k">if</span> <span class="s">(</span><span class="i">@StrViewerConfigParts</span> == <span class="n">3</span><span class="s">)</span> <span class="s">{</span>
+1340         <span class="i">$OptionsInfo</span>{<span class="w">StrViewerCodeBase</span>} = <span class="i">$StrViewerConfigParts</span>[<span class="n">0</span>]<span class="sc">;</span>
+1341         <span class="i">$StrViewerAppletArchive</span> = <span class="i">$StrViewerConfigParts</span>[<span class="n">1</span>]<span class="sc">;</span>
+1342         <span class="i">$StrViewerAppletCode</span> = <span class="i">$StrViewerConfigParts</span>[<span class="n">2</span>]<span class="sc">;</span>
+1343       <span class="s">}</span>
+1344       <span class="k">elsif</span> <span class="s">(</span><span class="i">@StrViewerConfigParts</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
+1345         <span class="i">$OptionsInfo</span>{<span class="w">StrViewerCodeBase</span>} = <span class="i">$StrViewerConfigParts</span>[<span class="n">0</span>]<span class="sc">;</span>
+1346         <span class="i">$StrViewerAppletArchive</span> = <span class="i">$StrViewerConfigParts</span>[<span class="n">1</span>]<span class="sc">;</span>
+1347         <span class="k">my</span><span class="s">(</span><span class="i">$AppletArchive</span><span class="cm">,</span> <span class="i">$AppletCode</span><span class="s">)</span> = <span class="i">SetupDefaultAppletArchiveAndCode</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>}<span class="s">)</span><span class="sc">;</span>
+1348         <span class="i">$StrViewerAppletCode</span> = <span class="i">$AppletCode</span><span class="sc">;</span>
+1349       <span class="s">}</span>
+1350       <span class="k">else</span> <span class="s">{</span>
+1351         <span class="i">$OptionsInfo</span>{<span class="w">StrViewerCodeBase</span>} = <span class="i">$StrViewerConfigParts</span>[<span class="n">0</span>]<span class="sc">;</span>
+1352         <span class="s">(</span><span class="i">$StrViewerAppletArchive</span><span class="cm">,</span> <span class="i">$StrViewerAppletCode</span><span class="s">)</span> = <span class="i">SetupDefaultAppletArchiveAndCode</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>}<span class="s">)</span><span class="sc">;</span>
+1353       <span class="s">}</span>
+1354     <span class="s">}</span>
+1355     <span class="k">else</span> <span class="s">{</span>
+1356       <span class="k">die</span> <span class="q">&quot;Error: Invalid number of values, &quot;</span><span class="cm">,</span> <span class="k">scalar</span><span class="s">(</span><span class="i">@StrViewerConfigParts</span><span class="s">)</span><span class="cm">,</span> <span class="q">&quot;, specified by \&quot;--strviewerconfig\&quot; option.\nNumver of allowed values:1 to 3 \n&quot;</span><span class="sc">;</span>
+1357     <span class="s">}</span>
+1358   <span class="s">}</span>
+1359   <span class="k">else</span> <span class="s">{</span>
+1360     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} =~ <span class="q">/^(JME|MarvinView)$/i</span> <span class="s">)</span> <span class="s">{</span>
+1361       <span class="k">die</span> <span class="q">&quot;Error: No codebase specified using \&quot;--strviewerconfig\&quot; option for $OptionsInfo{StrViewerType} structure viewer\n&quot;</span><span class="sc">;</span>
+1362     <span class="s">}</span>
+1363     <span class="k">if</span> <span class="s">(</span><span class="i">$StrViewerEmbedUsingJS</span> &amp;&amp; <span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} !~ <span class="q">/^Jmol$/i</span><span class="s">)</span> <span class="s">{</span>
+1364       <span class="k">die</span> <span class="q">&quot;Error: No codebase specified using \&quot;--strviewerconfig\&quot; option for javascript value of \&quot;--strviewerembed\&quot; option for $OptionsInfo{StrViewerType} structure viewer \n&quot;</span><span class="sc">;</span>
+1365     <span class="s">}</span>
+1366   <span class="s">}</span>
+1367 
+1368   <span class="k">if</span> <span class="s">(</span><span class="k">-d</span> <span class="i">$OptionsInfo</span>{<span class="w">StrViewerCodeBase</span>}<span class="s">)</span> <span class="s">{</span>
+1369     <span class="c"># Change local code base direcrory name to a relative directory name based on the</span>
+1370     <span class="c"># current directory containing SD file; otherwise, Java applets and JavaScripts don&#39;t</span>
+1371     <span class="c"># get loaded into Firefox and Chrome browsers.</span>
+1372     <span class="c">#</span>
+1373     <span class="c"># For top and sub HTML directories, add prefix &quot;../&quot; and &quot;../../&quot; to relative path...</span>
+1374     <span class="i">$OptionsInfo</span>{<span class="w">StrViewerCodeBase</span>} = <span class="w">File::Spec</span><span class="w">-&gt;abs2rel</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerCodeBase</span>}<span class="cm">,</span> <span class="i">Cwd::cwd</span><span class="s">(</span><span class="s">)</span><span class="s">)</span><span class="sc">;</span>
+1375 
+1376     <span class="i">$OptionsInfo</span>{<span class="w">TopHTMLDirStrViewerCodeBase</span>} = <span class="q">&quot;../&quot;</span> . <span class="i">$OptionsInfo</span>{<span class="w">StrViewerCodeBase</span>}<span class="sc">;</span>
+1377     <span class="i">$OptionsInfo</span>{<span class="w">SubHTMLDirStrViewerCodeBase</span>} = <span class="q">&quot;../../&quot;</span> . <span class="i">$OptionsInfo</span>{<span class="w">StrViewerCodeBase</span>}<span class="sc">;</span>
+1378   <span class="s">}</span>
+1379 
+1380   <span class="c"># Setup structure viewer parameter information...</span>
+1381   <span class="i">%</span>{<span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1382   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">strviewerparams</span>}<span class="s">)</span> <span class="s">{</span>
+1383     <span class="k">my</span><span class="s">(</span><span class="i">@ParamsSplit</span><span class="cm">,</span> <span class="i">@ParamPairSplit</span><span class="cm">,</span> <span class="i">$ParamPair</span><span class="s">)</span><span class="sc">;</span>
+1384     <span class="c">#@ParamsSplit = split &quot; &quot;, $Options{strviewerparams};</span>
+1385     <span class="i">@ParamsSplit</span> = <span class="i">quotewords</span><span class="s">(</span><span class="q">&quot; &quot;</span><span class="cm">,</span> <span class="n">0</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">strviewerparams</span>}<span class="s">)</span><span class="sc">;</span>
+1386     <span class="k">for</span> <span class="i">$ParamPair</span> <span class="s">(</span><span class="i">@ParamsSplit</span><span class="s">)</span> <span class="s">{</span>
+1387       <span class="i">@ParamPairSplit</span> = <span class="k">split</span> <span class="q">&quot;=&quot;</span><span class="cm">,</span> <span class="i">$ParamPair</span><span class="sc">;</span>
+1388       <span class="k">if</span> <span class="s">(</span><span class="i">@ParamPairSplit</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
+1389         <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="i">$ParamPairSplit</span>[<span class="n">0</span>]} = <span class="i">$ParamPairSplit</span>[<span class="n">1</span>]<span class="sc">;</span>
+1390       <span class="s">}</span>
+1391       <span class="k">else</span> <span class="s">{</span>
+1392         <span class="k">die</span> <span class="q">&quot;Error: Invalid value, $ParamPair, specified by \&quot;--strviewerparams\&quot; option.\nValid values: name=value\n&quot;</span><span class="sc">;</span>
+1393       <span class="s">}</span>
+1394     <span class="s">}</span>
+1395   <span class="s">}</span>
+1396 
+1397   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} =~ <span class="q">/^(JME|Jmol|MarvinView)$/i</span> <span class="s">)</span> <span class="s">{</span>
+1398     <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">name</span>} = <span class="i">$StrViewerAppletCode</span><span class="sc">;</span>
+1399     <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">archive</span>} = <span class="i">$StrViewerAppletArchive</span><span class="sc">;</span>
+1400     <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">code</span>} = <span class="i">$StrViewerAppletCode</span><span class="sc">;</span>
+1401   <span class="s">}</span>
+1402   <span class="i">$OptionsInfo</span>{<span class="w">StrWidth</span>} = <span class="k">exists</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">width</span>}<span class="s">)</span> ? <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">width</span>} <span class="co">:</span> <span class="n">250</span><span class="sc">;</span>
+1403   <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">width</span>} = <span class="i">$OptionsInfo</span>{<span class="w">StrWidth</span>}<span class="sc">;</span>
+1404   <span class="i">$OptionsInfo</span>{<span class="w">StrHeight</span>} = <span class="k">exists</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">height</span>}<span class="s">)</span> ? <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">height</span>} <span class="co">:</span> <span class="n">170</span><span class="sc">;</span>
+1405   <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">height</span>} = <span class="i">$OptionsInfo</span>{<span class="w">StrHeight</span>}<span class="sc">;</span>
+1406 
+1407   <span class="i">$OptionsInfo</span>{<span class="w">StrLinkWidth</span>} = <span class="n">500</span><span class="sc">;</span>
+1408   <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">strlinkwidth</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1409     <span class="i">$OptionsInfo</span>{<span class="w">StrLinkWidth</span>} = <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">strlinkwidth</span>}<span class="sc">;</span>
+1410     <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">strlinkwidth</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1411   <span class="s">}</span>
+1412   <span class="i">$OptionsInfo</span>{<span class="w">StrLinkHeight</span>} = <span class="n">295</span><span class="sc">;</span>
+1413   <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">strlinkheight</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1414     <span class="i">$OptionsInfo</span>{<span class="w">StrLinkHeight</span>} = <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">strlinkheight</span>}<span class="sc">;</span>
+1415     <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">strlinkheight</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1416   <span class="s">}</span>
+1417 
+1418   <span class="i">$OptionsInfo</span>{<span class="w">StrBgColorSpecified</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1419   <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">bgcolor</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1420     <span class="i">$OptionsInfo</span>{<span class="w">StrBgColorSpecified</span>} = <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">bgcolor</span>}<span class="sc">;</span>
+1421   <span class="s">}</span>
+1422 
+1423   <span class="i">$OptionsInfo</span>{<span class="w">StrLinkBgColorSpecified</span>} = <span class="q">&quot;#ffffff&quot;</span><span class="sc">;</span>
+1424   <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">strlinkbgcolor</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1425     <span class="i">$OptionsInfo</span>{<span class="w">StrLinkBgColorSpecified</span>} = <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">strlinkbgcolor</span>}<span class="sc">;</span>
+1426     <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">strlinkbgcolor</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1427   <span class="s">}</span>
+1428 
+1429   <span class="c"># Setup Java Script usage...</span>
+1430   <span class="i">$OptionsInfo</span>{<span class="w">StrViewerJSFileRef</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1431   <span class="i">$OptionsInfo</span>{<span class="w">TopHTMLDirStrViewerJSFileRef</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1432   <span class="i">$OptionsInfo</span>{<span class="w">SubHTMLDirStrViewerJSFileRef</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1433 
+1434   <span class="k">if</span> <span class="s">(</span><span class="i">$StrViewerEmbedUsingJS</span><span class="s">)</span> <span class="s">{</span>
+1435     <span class="k">my</span> <span class="s">(</span><span class="i">$StrViewerJSFileName</span><span class="s">)</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1436     <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">strviewerjsfile</span>}<span class="s">)</span> <span class="s">{</span>
+1437       <span class="i">$StrViewerJSFileName</span> = <span class="i">$Options</span>{<span class="w">strviewerjsfile</span>}<span class="sc">;</span>
+1438     <span class="s">}</span>
+1439     <span class="k">else</span> <span class="s">{</span>
+1440       <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} =~ <span class="q">/^Jmol$/i</span><span class="s">)</span> <span class="s">{</span>
+1441         <span class="i">$StrViewerJSFileName</span> = <span class="q">&quot;Jmol.js&quot;</span><span class="sc">;</span>
+1442       <span class="s">}</span>
+1443       <span class="k">elsif</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} =~ <span class="q">/^MarvinView$/i</span><span class="s">)</span> <span class="s">{</span>
+1444         <span class="i">$StrViewerJSFileName</span> = <span class="q">&quot;marvin.js&quot;</span><span class="sc">;</span>
+1445       <span class="s">}</span>
+1446       <span class="k">elsif</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} =~ <span class="q">/^(ChemDrawPlugIn|ChemDrawActiveX)$/i</span><span class="s">)</span> <span class="s">{</span>
+1447         <span class="i">$StrViewerJSFileName</span> = <span class="q">&quot;chemdraw.js&quot;</span><span class="sc">;</span>
+1448       <span class="s">}</span>
+1449       <span class="k">elsif</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} =~ <span class="q">/^Chem3DActiveX$/i</span><span class="s">)</span> <span class="s">{</span>
+1450         <span class="i">$StrViewerJSFileName</span> = <span class="q">&quot;chem3d.js&quot;</span><span class="sc">;</span>
+1451       <span class="s">}</span>
+1452     <span class="s">}</span>
+1453     <span class="k">if</span> <span class="s">(</span><span class="i">$StrViewerJSFileName</span><span class="s">)</span> <span class="s">{</span>
+1454       <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">usejavascript</span>} = <span class="i">$StrViewerJSFileName</span><span class="sc">;</span>
+1455       <span class="i">$OptionsInfo</span>{<span class="w">StrViewerJSFileRef</span>} = <span class="q">&quot;$OptionsInfo{StrViewerCodeBase}&quot;</span> . <span class="q">&quot;\/&quot;</span> . <span class="q">&quot;$StrViewerJSFileName&quot;</span><span class="sc">;</span>
+1456       <span class="i">$OptionsInfo</span>{<span class="w">TopHTMLDirStrViewerJSFileRef</span>} = <span class="q">&quot;$OptionsInfo{TopHTMLDirStrViewerCodeBase}&quot;</span> . <span class="q">&quot;\/&quot;</span> . <span class="q">&quot;$StrViewerJSFileName&quot;</span><span class="sc">;</span>
+1457       <span class="i">$OptionsInfo</span>{<span class="w">SubHTMLDirStrViewerJSFileRef</span>} = <span class="q">&quot;$OptionsInfo{SubHTMLDirStrViewerCodeBase}&quot;</span> . <span class="q">&quot;\/&quot;</span> . <span class="q">&quot;$StrViewerJSFileName&quot;</span><span class="sc">;</span>
+1458     <span class="s">}</span>
+1459   <span class="s">}</span>
+1460 
+1461   <span class="c"># Check any other user specified parametrs applicable to all structure viewers...</span>
+1462 
+1463   <span class="i">$OptionsInfo</span>{<span class="w">StructuresOnlyMode</span>} = <span class="n">0</span><span class="sc">;</span>
+1464   <span class="i">$OptionsInfo</span>{<span class="w">MaxCmpdsPerTable</span>} = <span class="s">(</span><span class="i">$Options</span>{<span class="w">structure</span>} =~ <span class="q">/^display$/i</span><span class="s">)</span> ? <span class="n">15</span> <span class="co">:</span> <span class="n">50</span><span class="sc">;</span>
+1465   <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$Options</span>{<span class="w">numcmpds</span>}<span class="s">)</span> <span class="s">{</span>
+1466     <span class="i">$OptionsInfo</span>{<span class="w">MaxCmpdsPerTable</span>} = <span class="i">$Options</span>{<span class="w">numcmpds</span>}<span class="sc">;</span>
+1467   <span class="s">}</span>
+1468   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">mode</span>} =~ <span class="q">/^(structuresonly|shadedstructuresonly)$/i</span><span class="s">)</span> <span class="s">{</span>
+1469     <span class="i">$OptionsInfo</span>{<span class="w">MaxCmpdsPerTable</span>} = <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">MaxCmpdsPerTable</span>} &gt; <span class="n">0</span><span class="s">)</span> ? <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrTableRows</span>} * <span class="i">$OptionsInfo</span>{<span class="w">StrTableCols</span>}<span class="s">)</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span>
+1470     <span class="i">$OptionsInfo</span>{<span class="w">StructuresOnlyMode</span>} = <span class="n">1</span><span class="sc">;</span>
+1471   <span class="s">}</span>
+1472   <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataField</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1473   <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldLabel</span>} = <span class="q">&quot;no&quot;</span><span class="sc">;</span>
+1474   <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldPosition</span>} = <span class="q">&quot;bottom&quot;</span><span class="sc">;</span>
+1475   <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldAlignment</span>} = <span class="q">&quot;center&quot;</span><span class="sc">;</span>
+1476   <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$Options</span>{<span class="w">cmpddatafield</span>}<span class="s">)</span> &amp;&amp; <span class="k">length</span><span class="s">(</span><span class="i">$Options</span>{<span class="w">cmpddatafield</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1477     <span class="k">my</span> <span class="s">(</span><span class="i">@CmpdDataFieldValues</span><span class="s">)</span> = <span class="k">split</span> <span class="q">&quot;,&quot;</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">cmpddatafield</span>}<span class="sc">;</span>
+1478     <span class="k">if</span> <span class="s">(</span><span class="i">@CmpdDataFieldValues</span> == <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
+1479       <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataField</span>} = <span class="i">$CmpdDataFieldValues</span>[<span class="n">0</span>]<span class="sc">;</span>
+1480     <span class="s">}</span>
+1481     <span class="k">elsif</span> <span class="s">(</span><span class="i">@CmpdDataFieldValues</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
+1482       <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataField</span>} = <span class="i">$CmpdDataFieldValues</span>[<span class="n">0</span>]<span class="sc">;</span>
+1483       <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldLabel</span>} = <span class="i">$CmpdDataFieldValues</span>[<span class="n">1</span>]<span class="sc">;</span>
+1484     <span class="s">}</span>
+1485     <span class="k">elsif</span> <span class="s">(</span><span class="i">@CmpdDataFieldValues</span> == <span class="n">3</span><span class="s">)</span> <span class="s">{</span>
+1486       <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataField</span>} = <span class="i">$CmpdDataFieldValues</span>[<span class="n">0</span>]<span class="sc">;</span>
+1487       <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldLabel</span>} = <span class="i">$CmpdDataFieldValues</span>[<span class="n">1</span>]<span class="sc">;</span>
+1488       <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldPosition</span>} = <span class="i">$CmpdDataFieldValues</span>[<span class="n">2</span>]<span class="sc">;</span>
+1489     <span class="s">}</span>
+1490     <span class="k">elsif</span> <span class="s">(</span><span class="i">@CmpdDataFieldValues</span> == <span class="n">4</span><span class="s">)</span> <span class="s">{</span>
+1491       <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataField</span>}  = <span class="i">$CmpdDataFieldValues</span>[<span class="n">0</span>]<span class="sc">;</span>
+1492       <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldLabel</span>} = <span class="i">$CmpdDataFieldValues</span>[<span class="n">1</span>]<span class="sc">;</span>
+1493       <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldPosition</span>} = <span class="i">$CmpdDataFieldValues</span>[<span class="n">2</span>]<span class="sc">;</span>
+1494       <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldAlignment</span>} = <span class="i">$CmpdDataFieldValues</span>[<span class="n">3</span>]<span class="sc">;</span>
+1495     <span class="s">}</span>
+1496     <span class="k">else</span> <span class="s">{</span>
+1497       <span class="k">die</span> <span class="q">&quot;Error: Invalid number of values, &quot;</span><span class="cm">,</span> <span class="k">scalar</span><span class="s">(</span><span class="i">@CmpdDataFieldValues</span><span class="s">)</span> <span class="cm">,</span> <span class="q">&quot;, specified by \&quot;--cmpddatafield\&quot; option.\nIt must contain only one, two, three, or four values.\n&quot;</span><span class="sc">;</span>
+1498     <span class="s">}</span>
+1499     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldLabel</span>} !~ <span class="q">/^(yes|no)$/</span> <span class="s">)</span> <span class="s">{</span>
+1500       <span class="k">die</span> <span class="q">&quot;Error: The label value specified, $Options{cmpddatafield}, for option \&quot;--cmpddatafield\&quot; is not valid. Allowed values: yes or no\n&quot;</span><span class="sc">;</span>
+1501     <span class="s">}</span>
+1502     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldPosition</span>} !~ <span class="q">/^(top|bottom)$/</span> <span class="s">)</span> <span class="s">{</span>
+1503       <span class="k">die</span> <span class="q">&quot;Error: The position value specified, $Options{cmpddatafield}, for option \&quot;--cmpddatafield\&quot; is not valid. Allowed values: top or bottom\n&quot;</span><span class="sc">;</span>
+1504     <span class="s">}</span>
+1505     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldAlignment</span>} !~ <span class="q">/^(left|center|right)$/</span> <span class="s">)</span> <span class="s">{</span>
+1506       <span class="k">die</span> <span class="q">&quot;Error: The alignment value specified, $Options{cmpddatafield}, for option \&quot;--cmpddatafield\&quot; is not valid. Allowed values: left, center, or right\n&quot;</span><span class="sc">;</span>
+1507     <span class="s">}</span>
+1508   <span class="s">}</span>
+1509 
+1510   <span class="c"># Process data fields to be displayed in tables...</span>
+1511   <span class="i">$OptionsInfo</span>{<span class="w">SpecifiedDataFields</span>} = <span class="k">exists</span><span class="s">(</span><span class="i">$Options</span>{<span class="w">datafields</span>}<span class="s">)</span> ? <span class="i">$Options</span>{<span class="w">datafields</span>} <span class="co">:</span> <span class="q">&quot;All&quot;</span><span class="sc">;</span>
+1512 
+1513   <span class="i">$OptionsInfo</span>{<span class="w">ValueOkColor</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">ValueNotOkColor</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">HighlightStatus</span>} = <span class="n">0</span><span class="sc">;</span>
+1514   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">mode</span>} =~ <span class="q">/^(highlight|shadedhighlight)$/i</span><span class="s">)</span> <span class="s">{</span>
+1515     <span class="k">my</span><span class="s">(</span><span class="i">$HighlightMode</span><span class="cm">,</span> <span class="i">$HighlightBy</span><span class="s">)</span><span class="sc">;</span>
+1516     <span class="i">$HighlightMode</span> = <span class="i">$Options</span>{<span class="w">mode</span>}<span class="sc">;</span> <span class="i">$HighlightBy</span> = <span class="i">$Options</span>{<span class="w">highlightby</span>}<span class="sc">;</span>
+1517 
+1518     <span class="i">$OptionsInfo</span>{<span class="w">HighlightStatus</span>} = <span class="n">1</span><span class="sc">;</span>
+1519     <span class="i">$OptionsInfo</span>{<span class="w">ValueOkColor</span>} = <span class="q">&quot;#0fff0f&quot;</span><span class="sc">;</span>
+1520     <span class="i">$OptionsInfo</span>{<span class="w">ValueNotOkColor</span>} = <span class="q">&quot;#ff0f0f&quot;</span><span class="sc">;</span>
+1521     <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">highlightstyle</span>} =~ <span class="q">/^text$/i</span><span class="s">)</span> <span class="s">{</span>
+1522       <span class="i">$OptionsInfo</span>{<span class="w">ValueOkColor</span>} = <span class="q">&quot;#0fbb0f&quot;</span><span class="sc">;</span>
+1523       <span class="i">$OptionsInfo</span>{<span class="w">ValueNotOkColor</span>} = <span class="q">&quot;#ff0f0f&quot;</span><span class="sc">;</span>
+1524     <span class="s">}</span>
+1525     <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">highlightcolor</span>}<span class="s">)</span> <span class="s">{</span>
+1526       <span class="c"># Make sure two values are specified...</span>
+1527       <span class="i">@ColorValues</span> = <span class="k">split</span> <span class="q">&quot;,&quot;</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">highlightcolor</span>}<span class="sc">;</span>
+1528       <span class="k">if</span> <span class="s">(</span><span class="i">@ColorValues</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
+1529         <span class="i">$OptionsInfo</span>{<span class="w">ValueOkColor</span>} = <span class="i">$ColorValues</span>[<span class="n">0</span>]<span class="sc">;</span>
+1530         <span class="i">$OptionsInfo</span>{<span class="w">ValueNotOkColor</span>} = <span class="i">$ColorValues</span>[<span class="n">1</span>]<span class="sc">;</span>
+1531       <span class="s">}</span>
+1532       <span class="k">else</span> <span class="s">{</span>
+1533         <span class="k">die</span> <span class="q">&quot;Error: Invalid number of values, &quot;</span><span class="cm">,</span> <span class="k">scalar</span><span class="s">(</span><span class="i">@ColorValues</span><span class="s">)</span><span class="cm">,</span> <span class="q">&quot;, specified by \&quot;--highlightcolor\&quot; option.\nIt must contain only two value for $HighlightMode value specified using \&quot;-m --mode\&quot; option.\n&quot;</span><span class="sc">;</span>
+1534       <span class="s">}</span>
+1535     <span class="s">}</span>
+1536     <span class="k">if</span> <span class="s">(</span>!<span class="i">$Options</span>{<span class="w">highlight</span>}<span class="s">)</span> <span class="s">{</span>
+1537       <span class="k">die</span> <span class="q">&quot;Error: Specify columns to be highlighted using \&quot;--hightlight\&quot; option\n&quot;</span><span class="sc">;</span>
+1538     <span class="s">}</span>
+1539     <span class="c"># Retrieve quartet values from &quot;hightlight&quot; option...</span>
+1540     <span class="k">my</span><span class="s">(</span><span class="i">@HighlightValueQuartets</span><span class="s">)</span><span class="sc">;</span>
+1541 
+1542     <span class="i">@HighlightValueQuartets</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1543     <span class="i">@HighlightValueQuartets</span> = <span class="k">split</span> <span class="q">&quot;,&quot;</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">highlight</span>}<span class="sc">;</span>
+1544     <span class="k">if</span> <span class="s">(</span><span class="s">(</span><span class="i">@HighlightValueQuartets</span> % <span class="n">4</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1545       <span class="k">die</span> <span class="q">&quot;Error: Quartets not found in values specified using \&quot;--highlight\&quot; option for $HighlightMode \&quot;-m --mode\&quot;\n&quot;</span><span class="sc">;</span>
+1546     <span class="s">}</span>
+1547     <span class="c"># Process quartets...</span>
+1548     <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$Label</span><span class="cm">,</span> <span class="i">$DataType</span><span class="cm">,</span> <span class="i">$Criterion</span><span class="cm">,</span> <span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
+1549 
+1550     <span class="i">@</span>{<span class="i">$OptionsInfo</span>{<span class="w">SpecifiedHighlightDataFieldLabels</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1551     <span class="i">%</span>{<span class="i">$OptionsInfo</span>{<span class="w">SpecifiedHighlightDataFieldLabelsMap</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1552     <span class="i">%</span>{<span class="i">$OptionsInfo</span>{<span class="w">SpecifiedHighlightDataFieldTypesMap</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1553     <span class="i">%</span>{<span class="i">$OptionsInfo</span>{<span class="w">SpecifiedHighlightDataFieldCriteriaMap</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1554     <span class="i">%</span>{<span class="i">$OptionsInfo</span>{<span class="w">SpecifiedHighlightDataFieldValueMap</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1555 
+1556     <span class="k">for</span> <span class="s">(</span><span class="i">$Index</span> = <span class="n">0</span><span class="sc">;</span> <span class="i">$Index</span> &lt; <span class="i">@HighlightValueQuartets</span><span class="sc">;</span> <span class="i">$Index</span> = <span class="i">$Index</span> + <span class="n">4</span><span class="s">)</span> <span class="s">{</span>
+1557       <span class="i">$Label</span> = <span class="i">$HighlightValueQuartets</span>[<span class="i">$Index</span>]<span class="sc">;</span>
+1558       <span class="i">$DataType</span> = <span class="i">$HighlightValueQuartets</span>[<span class="i">$Index</span> + <span class="n">1</span>]<span class="sc">;</span>
+1559       <span class="i">$Criterion</span> = <span class="i">$HighlightValueQuartets</span>[<span class="i">$Index</span> + <span class="n">2</span>]<span class="sc">;</span>
+1560       <span class="i">$Value</span> = <span class="i">$HighlightValueQuartets</span>[<span class="i">$Index</span> + <span class="n">3</span>]<span class="sc">;</span>
+1561       <span class="k">if</span> <span class="s">(</span><span class="i">$DataType</span> !~ <span class="q">/^(numeric|text)$/i</span><span class="s">)</span> <span class="s">{</span>
+1562         <span class="k">die</span> <span class="q">&quot;Error: Invalid column data type, $DataType, specified in quartet, \&quot;$Label,$DataType,$Criterion,$Value\&quot;, using \&quot;--hightlight\&quot; option: Valid values: numeric or text\n&quot;</span><span class="sc">;</span>
+1563       <span class="s">}</span>
+1564       <span class="k">if</span> <span class="s">(</span><span class="i">$Criterion</span> !~ <span class="q">/^(eq|le|ge)$/i</span><span class="s">)</span> <span class="s">{</span>
+1565         <span class="k">die</span> <span class="q">&quot;Error: Invalid criterion value, $Criterion, specified in quartet, \&quot;$Label,$DataType,$Criterion,$Value\&quot;, using \&quot;--hightlight\&quot; option: Valid values: le, ge, or eq\n&quot;</span><span class="sc">;</span>
+1566       <span class="s">}</span>
+1567       <span class="k">if</span> <span class="s">(</span><span class="i">$DataType</span> =~ <span class="q">/^numeric$/i</span><span class="s">)</span> <span class="s">{</span>
+1568         <span class="k">if</span> <span class="s">(</span>!<span class="i">IsFloat</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1569           <span class="k">die</span> <span class="q">&quot;Error: Invalid criterion value, $Value, specified in quartet, \&quot;$Label,$DataType,$Criterion,$Value\&quot;, using \&quot;--hightlight\&quot; option: Numeric value required for numeric data type\n&quot;</span><span class="sc">;</span>
+1570         <span class="s">}</span>
+1571       <span class="s">}</span>
+1572       <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">SpecifiedHighlightDataFieldLabelsMap</span>}{<span class="i">$Label</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1573         <span class="k">die</span> <span class="q">&quot;Error: Invalid field label value, $Label, in quartet, \&quot;$Label,$DataType,$Criterion,$Value\&quot;, using \&quot;--hightlight\&quot; option: Multiple occurences of label.  \n&quot;</span><span class="sc">;</span>
+1574       <span class="s">}</span>
+1575       <span class="k">push</span> <span class="i">@</span>{<span class="i">$OptionsInfo</span>{<span class="w">SpecifiedHighlightDataFieldLabels</span>}}<span class="cm">,</span> <span class="i">$Label</span><span class="sc">;</span>
+1576       <span class="i">$OptionsInfo</span>{<span class="w">SpecifiedHighlightDataFieldLabelsMap</span>}{<span class="i">$Label</span>} = <span class="i">$Label</span><span class="sc">;</span>
+1577       <span class="i">$OptionsInfo</span>{<span class="w">SpecifiedHighlightDataFieldTypesMap</span>}{<span class="i">$Label</span>} = <span class="i">$DataType</span><span class="sc">;</span>
+1578       <span class="i">$OptionsInfo</span>{<span class="w">SpecifiedHighlightDataFieldCriteriaMap</span>}{<span class="i">$Label</span>} = <span class="i">$Criterion</span><span class="sc">;</span>
+1579       <span class="i">$OptionsInfo</span>{<span class="w">SpecifiedHighlightDataFieldValueMap</span>}{<span class="i">$Label</span>} = <span class="i">$Value</span><span class="sc">;</span>
+1580     <span class="s">}</span>
+1581   <span class="s">}</span>
+1582 <span class="s">}</span>
+1583 
+1584 <span class="c"># Set up default archive and code values for a specific applet...</span>
+<a name="SetupDefaultAppletArchiveAndCode-"></a>1585 <span class="k">sub </span><span class="m">SetupDefaultAppletArchiveAndCode</span> <span class="s">{</span>
+1586   <span class="k">my</span><span class="s">(</span><span class="i">$ViewerType</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+1587   <span class="k">my</span><span class="s">(</span><span class="i">$Archive</span><span class="cm">,</span> <span class="i">$Code</span><span class="cm">,</span> <span class="i">$Nothing</span><span class="s">)</span><span class="sc">;</span>
+1588 
+1589  <span class="j">STRVIEWERTYPE:</span> <span class="s">{</span>
+1590     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} =~ <span class="q">/^JME$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Archive</span> = <span class="q">&quot;JME.jar&quot;</span><span class="sc">;</span> <span class="i">$Code</span> = <span class="q">&quot;JME&quot;</span><span class="sc">;</span> <span class="k">last</span> <span class="j">STRVIEWERTYPE</span><span class="sc">;</span> <span class="s">}</span>
+1591     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} =~ <span class="q">/^Jmol$/i</span><span class="s">)</span> <span class="s">{</span><span class="i">$Archive</span> = <span class="q">&quot;JmolApplet.jar&quot;</span><span class="sc">;</span> <span class="i">$Code</span> = <span class="q">&quot;JmolApplet&quot;</span><span class="sc">;</span>  <span class="k">last</span> <span class="j">STRVIEWERTYPE</span><span class="sc">;</span> <span class="s">}</span>
+1592     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} =~ <span class="q">/^MarvinView$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Archive</span> = <span class="q">&quot;marvin.jar&quot;</span><span class="sc">;</span> <span class="i">$Code</span> = <span class="q">&quot;MView&quot;</span><span class="sc">;</span> <span class="k">last</span> <span class="j">STRVIEWERTYPE</span><span class="sc">;</span> <span class="s">}</span>
+1593     <span class="i">$Nothing</span> = <span class="n">1</span><span class="sc">;</span>
+1594   <span class="s">}</span>
+1595   <span class="k">return</span> <span class="s">(</span><span class="i">$Archive</span><span class="cm">,</span> <span class="i">$Code</span><span class="s">)</span><span class="sc">;</span>
+1596 <span class="s">}</span>
+1597 
+1598 <span class="c"># Retrieve information about input SD files...</span>
+<a name="RetrieveSDFilesInfo-"></a>1599 <span class="k">sub </span><span class="m">RetrieveSDFilesInfo</span> <span class="s">{</span>
+1600   <span class="k">my</span><span class="s">(</span><span class="i">$SDFile</span><span class="cm">,</span> <span class="i">$FileDir</span><span class="cm">,</span> <span class="i">$FileName</span><span class="cm">,</span> <span class="i">$HTMLFile</span><span class="cm">,</span> <span class="i">$CSSFile</span><span class="cm">,</span> <span class="i">$HTMLRoot</span><span class="cm">,</span> <span class="i">$HTMLTitle</span><span class="cm">,</span> <span class="i">$FileExt</span><span class="cm">,</span> <span class="i">$Index</span><span class="cm">,</span> <span class="i">$TopHTMLDir</span><span class="s">)</span><span class="sc">;</span>
+1601 
+1602   <span class="i">%SDFilesInfo</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1603 
+1604   <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">FileOkay</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1605   <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">CmpdCount</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1606   <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">SpecifiedDataFieldLabels</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1607 
+1608   <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1609   <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">HTMLTitle</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1610   <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">MultipleHTMLTables</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1611 
+1612   <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TopHTMLDir</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1613   <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">SubHTMLDir</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1614   <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">SubMolDir</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1615 
+1616 
+1617   <span class="j">FILELIST:</span> <span class="k">for</span> <span class="i">$Index</span> <span class="s">(</span><span class="n">0</span> .. <span class="i">$#SDFilesList</span><span class="s">)</span> <span class="s">{</span>
+1618     <span class="i">$SDFile</span> = <span class="i">$SDFilesList</span>[<span class="i">$Index</span>]<span class="sc">;</span>
+1619 
+1620     <span class="i">$SDFilesInfo</span>{<span class="w">FileOkay</span>}[<span class="i">$Index</span>] = <span class="n">0</span><span class="sc">;</span>
+1621     <span class="i">$SDFilesInfo</span>{<span class="w">CmpdCount</span>}[<span class="i">$Index</span>] = <span class="n">0</span><span class="sc">;</span>
+1622     <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1623     <span class="i">$SDFilesInfo</span>{<span class="w">HTMLTitle</span>}[<span class="i">$Index</span>] = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1624     <span class="i">$SDFilesInfo</span>{<span class="w">MultipleHTMLTables</span>}[<span class="i">$Index</span>] = <span class="n">0</span><span class="sc">;</span>
+1625     <span class="i">$SDFilesInfo</span>{<span class="w">TopHTMLDir</span>}[<span class="i">$Index</span>] = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1626     <span class="i">$SDFilesInfo</span>{<span class="w">SubHTMLDir</span>}[<span class="i">$Index</span>] = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1627     <span class="i">$SDFilesInfo</span>{<span class="w">SubMolDir</span>}[<span class="i">$Index</span>] = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1628 
+1629     <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">SpecifiedDataFieldLabels</span>}[<span class="i">$Index</span>]} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1630 
+1631     <span class="k">if</span> <span class="s">(</span>!<span class="s">(</span><span class="k">-e</span> <span class="i">$SDFile</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1632       <span class="k">warn</span> <span class="q">&quot;Warning: Ignoring file $SDFile: It doesn&#39;t exist\n&quot;</span><span class="sc">;</span>
+1633       <span class="k">next</span> <span class="j">FILELIST</span><span class="sc">;</span>
+1634     <span class="s">}</span>
+1635     <span class="k">if</span> <span class="s">(</span>!<span class="i">CheckFileType</span><span class="s">(</span><span class="i">$SDFile</span><span class="cm">,</span> <span class="q">&quot;sd sdf&quot;</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1636       <span class="k">warn</span> <span class="q">&quot;Warning: Ignoring file $SDFile: It&#39;s not a SD file\n&quot;</span><span class="sc">;</span>
+1637       <span class="k">next</span> <span class="j">FILELIST</span><span class="sc">;</span>
+1638     <span class="s">}</span>
+1639     <span class="s">(</span><span class="i">$FileDir</span><span class="cm">,</span> <span class="i">$FileName</span><span class="cm">,</span> <span class="i">$FileExt</span><span class="s">)</span> = <span class="i">ParseFileName</span><span class="s">(</span><span class="i">$SDFile</span><span class="s">)</span><span class="sc">;</span>
+1640 
+1641     <span class="k">if</span> <span class="s">(</span>!<span class="k">open</span> <span class="w">SDFILE</span><span class="cm">,</span> <span class="q">&quot;$SDFile&quot;</span><span class="s">)</span> <span class="s">{</span>
+1642       <span class="k">warn</span> <span class="q">&quot;Warning: Ignoring file $SDFile: Couldn&#39;t open it: $! \n&quot;</span><span class="sc">;</span>
+1643       <span class="k">next</span> <span class="j">FILELIST</span><span class="sc">;</span>
+1644     <span class="s">}</span>
+1645     <span class="c"># Count number of compounds and collect all possible data field labels...</span>
+1646     <span class="k">my</span><span class="s">(</span><span class="i">$CmpdCount</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="cm">,</span> <span class="i">@DataFieldLabels</span><span class="cm">,</span> <span class="i">@CommonDataFieldLabels</span><span class="s">)</span><span class="sc">;</span>
+1647     <span class="i">$CmpdCount</span> = <span class="n">0</span><span class="sc">;</span>
+1648     <span class="i">@DataFieldLabels</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1649     <span class="i">@CommonDataFieldLabels</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1650     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">SpecifiedDataFields</span>} =~ <span class="q">/^(All|Common)$/i</span> <span class="s">)</span> <span class="s">{</span>
+1651       <span class="k">my</span><span class="s">(</span><span class="i">$DataFieldLabelsRef</span><span class="cm">,</span> <span class="i">$CommonDataFieldLabelsRef</span><span class="s">)</span><span class="sc">;</span>
+1652       <span class="s">(</span><span class="i">$CmpdCount</span><span class="cm">,</span> <span class="i">$DataFieldLabelsRef</span><span class="cm">,</span> <span class="i">$CommonDataFieldLabelsRef</span><span class="s">)</span> = <span class="i">GetAllAndCommonCmpdDataHeaderLabels</span><span class="s">(</span>\<span class="i">*SDFILE</span><span class="s">)</span><span class="sc">;</span>
+1653       <span class="k">push</span> <span class="i">@DataFieldLabels</span><span class="cm">,</span> <span class="i">@</span>{<span class="i">$DataFieldLabelsRef</span>}<span class="sc">;</span>
+1654       <span class="k">push</span> <span class="i">@CommonDataFieldLabels</span><span class="cm">,</span> <span class="i">@</span>{<span class="i">$CommonDataFieldLabelsRef</span>}<span class="sc">;</span>
+1655     <span class="s">}</span>
+1656     <span class="k">else</span> <span class="s">{</span>
+1657       <span class="k">while</span> <span class="s">(</span><span class="i">$CmpdString</span> = <span class="i">ReadCmpdString</span><span class="s">(</span>\<span class="i">*SDFILE</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1658         <span class="i">$CmpdCount</span>++<span class="sc">;</span>
+1659       <span class="s">}</span>
+1660     <span class="s">}</span>
+1661     <span class="k">close</span> <span class="w">SDFILE</span><span class="sc">;</span>
+1662 
+1663     <span class="i">$FileDir</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$FileName</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$FileExt</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1664     <span class="s">(</span><span class="i">$FileDir</span><span class="cm">,</span> <span class="i">$FileName</span><span class="cm">,</span> <span class="i">$FileExt</span><span class="s">)</span> = <span class="i">ParseFileName</span><span class="s">(</span><span class="i">$SDFile</span><span class="s">)</span><span class="sc">;</span>
+1665     <span class="i">$HTMLRoot</span> = <span class="i">$FileName</span><span class="sc">;</span>
+1666     <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">root</span>} &amp;&amp; <span class="s">(</span><span class="i">@SDFilesList</span> == <span class="n">1</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1667       <span class="k">my</span> <span class="s">(</span><span class="i">$RootFileDir</span><span class="cm">,</span> <span class="i">$RootFileName</span><span class="cm">,</span> <span class="i">$RootFileExt</span><span class="s">)</span> = <span class="i">ParseFileName</span><span class="s">(</span><span class="i">$Options</span>{<span class="w">root</span>}<span class="s">)</span><span class="sc">;</span>
+1668       <span class="k">if</span> <span class="s">(</span><span class="i">$RootFileName</span> &amp;&amp; <span class="i">$RootFileExt</span><span class="s">)</span> <span class="s">{</span>
+1669         <span class="i">$HTMLRoot</span> = <span class="i">$RootFileName</span><span class="sc">;</span>
+1670       <span class="s">}</span>
+1671       <span class="k">else</span> <span class="s">{</span>
+1672         <span class="i">$HTMLRoot</span> = <span class="i">$Options</span>{<span class="w">root</span>}<span class="sc">;</span>
+1673       <span class="s">}</span>
+1674     <span class="s">}</span>
+1675     <span class="i">$HTMLTitle</span> = <span class="i">$HTMLRoot</span><span class="sc">;</span>
+1676     <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">title</span>} &amp;&amp; <span class="s">(</span><span class="i">@SDFilesList</span> == <span class="n">1</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1677       <span class="i">$HTMLTitle</span> = <span class="i">$Options</span>{<span class="w">title</span>}<span class="sc">;</span>
+1678     <span class="s">}</span>
+1679     <span class="i">$HTMLFile</span> = <span class="k">lc</span><span class="s">(</span><span class="i">$HTMLRoot</span><span class="s">)</span> . <span class="q">&quot;-html&quot;</span><span class="sc">;</span>
+1680     <span class="k">if</span> <span class="s">(</span>!<span class="i">$Options</span>{<span class="w">overwrite</span>}<span class="s">)</span> <span class="s">{</span>
+1681       <span class="k">if</span> <span class="s">(</span><span class="k">-d</span> <span class="i">$HTMLFile</span><span class="s">)</span> <span class="s">{</span>
+1682         <span class="k">warn</span> <span class="q">&quot;Warning: Ignoring file $SDFile: The directory $HTMLFile already exists\n&quot;</span><span class="sc">;</span>
+1683         <span class="k">next</span> <span class="j">FILELIST</span><span class="sc">;</span>
+1684       <span class="s">}</span>
+1685     <span class="s">}</span>
+1686     <span class="i">$SDFilesInfo</span>{<span class="w">FileOkay</span>}[<span class="i">$Index</span>] = <span class="n">1</span><span class="sc">;</span>
+1687     <span class="i">$SDFilesInfo</span>{<span class="w">CmpdCount</span>}[<span class="i">$Index</span>] = <span class="i">$CmpdCount</span><span class="sc">;</span>
+1688     <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] = <span class="q">&quot;$HTMLRoot&quot;</span><span class="sc">;</span>
+1689     <span class="i">$SDFilesInfo</span>{<span class="w">HTMLTitle</span>}[<span class="i">$Index</span>] = <span class="q">&quot;$HTMLTitle&quot;</span><span class="sc">;</span>
+1690     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">MaxCmpdsPerTable</span>} == <span class="n">0</span> || <span class="i">$CmpdCount</span> &lt;= <span class="i">$OptionsInfo</span>{<span class="w">MaxCmpdsPerTable</span>}<span class="s">)</span> <span class="s">{</span>
+1691       <span class="i">$SDFilesInfo</span>{<span class="w">MultipleHTMLTables</span>}[<span class="i">$Index</span>] = <span class="n">0</span><span class="sc">;</span>
+1692     <span class="s">}</span>
+1693     <span class="k">else</span> <span class="s">{</span>
+1694       <span class="i">$SDFilesInfo</span>{<span class="w">MultipleHTMLTables</span>}[<span class="i">$Index</span>] = <span class="n">1</span><span class="sc">;</span>
+1695     <span class="s">}</span>
+1696     <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">SpecifiedDataFields</span>} =~ <span class="q">/^All$/i</span> <span class="s">)</span> <span class="s">{</span>
+1697       <span class="k">push</span> <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">SpecifiedDataFieldLabels</span>}[<span class="i">$Index</span>]}<span class="cm">,</span> <span class="i">@DataFieldLabels</span><span class="sc">;</span>
+1698     <span class="s">}</span>
+1699     <span class="k">elsif</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">SpecifiedDataFields</span>} =~ <span class="q">/^Common$/i</span><span class="s">)</span> <span class="s">{</span>
+1700       <span class="k">push</span> <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">SpecifiedDataFieldLabels</span>}[<span class="i">$Index</span>]}<span class="cm">,</span> <span class="i">@CommonDataFieldLabels</span><span class="sc">;</span>
+1701     <span class="s">}</span>
+1702     <span class="k">else</span> <span class="s">{</span>
+1703       <span class="k">push</span> <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">SpecifiedDataFieldLabels</span>}[<span class="i">$Index</span>]}<span class="cm">,</span> <span class="k">split</span><span class="s">(</span><span class="q">&quot;,&quot;</span><span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">SpecifiedDataFields</span>}<span class="s">)</span><span class="sc">;</span>
+1704     <span class="s">}</span>
+1705 
+1706     <span class="c"># Setup HTML data directories paths...</span>
+1707     <span class="i">$TopHTMLDir</span> = <span class="k">lc</span><span class="s">(</span><span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>]<span class="s">)</span> . <span class="q">&quot;-html&quot;</span><span class="sc">;</span>
+1708     <span class="i">$SDFilesInfo</span>{<span class="w">TopHTMLDir</span>}[<span class="i">$Index</span>] = <span class="q">&quot;$TopHTMLDir&quot;</span><span class="sc">;</span>
+1709     <span class="i">$SDFilesInfo</span>{<span class="w">SubHTMLDir</span>}[<span class="i">$Index</span>] = <span class="q">&quot;$TopHTMLDir\/html&quot;</span><span class="sc">;</span>
+1710     <span class="i">$SDFilesInfo</span>{<span class="w">SubMolDir</span>}[<span class="i">$Index</span>] = <span class="q">&quot;$TopHTMLDir\/mol&quot;</span><span class="sc">;</span>
+1711   <span class="s">}</span>
+1712 <span class="s">}</span>
+1713 
+1714 <span class="c"># Setup information...</span>
+<a name="SetupMultipleTablesAndMiscInfo-"></a>1715 <span class="k">sub </span><span class="m">SetupMultipleTablesAndMiscInfo</span> <span class="s">{</span>
+1716   <span class="i">SetupMultipleTablesInfo</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1717   <span class="i">SetupMiscInfo</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1718 <span class="s">}</span>
+1719 
+1720 <span class="c"># Setup navigation link information for multiple tables...</span>
+<a name="SetupMultipleTablesInfo-"></a>1721 <span class="k">sub </span><span class="m">SetupMultipleTablesInfo</span> <span class="s">{</span>
+1722   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="cm">,</span> <span class="i">$LinesPerTable</span><span class="s">)</span><span class="sc">;</span>
+1723 
+1724   <span class="i">$LinesPerTable</span> = <span class="i">$OptionsInfo</span>{<span class="w">MaxCmpdsPerTable</span>}<span class="sc">;</span>
+1725 
+1726   <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableCount</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1727   <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableHTMLFiles</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1728   <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableStartCmpdNum</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1729   <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableEndCmpdNum</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1730 
+1731   <span class="k">for</span> <span class="i">$Index</span> <span class="s">(</span><span class="n">0</span> .. <span class="i">$#SDFilesList</span><span class="s">)</span> <span class="s">{</span>
+1732     <span class="i">$SDFilesInfo</span>{<span class="w">TableCount</span>}[<span class="i">$Index</span>] = <span class="n">1</span><span class="sc">;</span>
+1733     <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableHTMLFiles</span>}[<span class="i">$Index</span>]} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1734     <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableStartCmpdNum</span>}[<span class="i">$Index</span>]} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1735     <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableEndCmpdNum</span>}[<span class="i">$Index</span>]} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1736 
+1737     <span class="k">if</span> <span class="s">(</span><span class="i">$SDFilesInfo</span>{<span class="w">FileOkay</span>}[<span class="i">$Index</span>]<span class="s">)</span> <span class="s">{</span>
+1738       <span class="k">if</span> <span class="s">(</span><span class="i">$SDFilesInfo</span>{<span class="w">MultipleHTMLTables</span>}[<span class="i">$Index</span>]<span class="s">)</span> <span class="s">{</span>
+1739         <span class="k">my</span><span class="s">(</span><span class="i">$TableIndex</span><span class="cm">,</span> <span class="i">$TotalLines</span><span class="cm">,</span> <span class="i">$TableCount</span><span class="cm">,</span> <span class="i">$TableStartLineNum</span><span class="cm">,</span> <span class="i">$TableEndLineNum</span><span class="cm">,</span> <span class="i">$Name</span><span class="s">)</span><span class="sc">;</span>
+1740 
+1741         <span class="i">$TotalLines</span> = <span class="i">$SDFilesInfo</span>{<span class="w">CmpdCount</span>}[<span class="i">$Index</span>]<span class="sc">;</span>
+1742         <span class="i">$TableCount</span> = <span class="s">(</span><span class="i">$TotalLines</span> % <span class="i">$LinesPerTable</span><span class="s">)</span> ? <span class="s">(</span><span class="k">int</span><span class="s">(</span><span class="i">$TotalLines</span>/<span class="i">$LinesPerTable</span><span class="s">)</span> + <span class="n">1</span><span class="s">)</span> <span class="co">:</span> <span class="s">(</span><span class="i">$TotalLines</span>/<span class="i">$LinesPerTable</span><span class="s">)</span><span class="sc">;</span>
+1743         <span class="i">$SDFilesInfo</span>{<span class="w">TableCount</span>}[<span class="i">$Index</span>] = <span class="i">$TableCount</span><span class="sc">;</span>
+1744         <span class="k">for</span> <span class="i">$TableIndex</span> <span class="s">(</span><span class="n">1</span> .. <span class="i">$TableCount</span><span class="s">)</span> <span class="s">{</span>
+1745           <span class="i">$TableStartLineNum</span> = <span class="s">(</span><span class="i">$TableIndex</span> - <span class="n">1</span><span class="s">)</span> * <span class="i">$LinesPerTable</span> + <span class="n">1</span><span class="sc">;</span>
+1746           <span class="i">$TableEndLineNum</span> = <span class="s">(</span><span class="i">$TableIndex</span> == <span class="i">$TableCount</span><span class="s">)</span> ? <span class="i">$TotalLines</span> <span class="co">:</span> <span class="s">(</span><span class="i">$TableIndex</span> * <span class="i">$LinesPerTable</span><span class="s">)</span><span class="sc">;</span>
+1747           <span class="k">push</span> <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableStartCmpdNum</span>}[<span class="i">$Index</span>]}<span class="cm">,</span> <span class="i">$TableStartLineNum</span><span class="sc">;</span>
+1748           <span class="k">push</span> <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableEndCmpdNum</span>}[<span class="i">$Index</span>]}<span class="cm">,</span> <span class="i">$TableEndLineNum</span><span class="sc">;</span>
+1749 
+1750           <span class="c"># Setup HTML file names for all the tables...</span>
+1751           <span class="i">$Name</span> = <span class="q">&quot;Cmpd&quot;</span> . <span class="q">&quot;$TableStartLineNum&quot;</span> . <span class="q">&quot;To&quot;</span> . <span class="q">&quot;$TableEndLineNum&quot;</span><span class="sc">;</span>
+1752           <span class="k">if</span> <span class="s">(</span><span class="i">$TableIndex</span> == <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
+1753             <span class="i">$Name</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1754           <span class="s">}</span>
+1755           <span class="i">$Name</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="i">$Name</span> . <span class="q">&quot;.html&quot;</span><span class="sc">;</span>
+1756           <span class="k">push</span> <span class="i">@</span>{<span class="i">$SDFilesInfo</span>{<span class="w">TableHTMLFiles</span>}[<span class="i">$Index</span>]}<span class="cm">,</span> <span class="i">$Name</span><span class="sc">;</span>
+1757         <span class="s">}</span>
+1758         <span class="c">#print &quot;$SDFilesList[$Index]: $TableCount -  @{$SDFilesInfo{TableStartCmpdNum}[$Index]} - @{$SDFilesInfo{TableEndCmpdNum}[$Index]} -  @{$SDFilesInfo{TableHTMLFiles}[$Index]}\n&quot;;</span>
+1759       <span class="s">}</span>
+1760     <span class="s">}</span>
+1761   <span class="s">}</span>
+1762 <span class="s">}</span>
+1763 
+1764 <span class="c"># Setup HTML tags and other information...</span>
+<a name="SetupMiscInfo-"></a>1765 <span class="k">sub </span><span class="m">SetupMiscInfo</span> <span class="s">{</span>
+1766   <span class="i">$SDFilesInfo</span>{<span class="w">RowHeaderTags</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1767   <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1768   <span class="i">$SDFilesInfo</span>{<span class="w">BgFilledOddRowHeaderTags</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1769   <span class="i">$SDFilesInfo</span>{<span class="w">BgFilledEvenRowHeaderTags</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1770   <span class="i">$SDFilesInfo</span>{<span class="w">TableRowHeaderTags</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
+1771 
+1772   <span class="i">$SDFilesInfo</span>{<span class="w">RowHeaderTags</span>} = <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">RowHAlignment</span>}<span class="cm">,</span> <span class="q">&quot;&quot;</span><span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">RowVAlignment</span>}<span class="s">)</span><span class="sc">;</span>
+1773   <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>} = <span class="i">SetupHTMLTableRowEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1774 
+1775   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">ShadeRowsStatus</span>}<span class="s">)</span> <span class="s">{</span>
+1776     <span class="i">$SDFilesInfo</span>{<span class="w">BgFilledOddRowHeaderTags</span>} = <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">RowHAlignment</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">OddRowsShadeColor</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">RowVAlignment</span>}<span class="s">)</span><span class="sc">;</span>
+1777     <span class="i">$SDFilesInfo</span>{<span class="w">BgFilledEvenRowHeaderTags</span>} = <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">RowHAlignment</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">EvenRowsShadeColor</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">RowVAlignment</span>}<span class="s">)</span><span class="sc">;</span>
+1778   <span class="s">}</span>
+1779 
+1780   <span class="i">$SDFilesInfo</span>{<span class="w">TableRowHeaderTags</span>} = <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowHAlignment</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowColor</span>}<span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowVAlignment</span>}<span class="s">)</span><span class="sc">;</span>
+1781 
+1782   <span class="i">$SDFilesInfo</span>{<span class="w">MolEndTag</span>} = <span class="q">&quot;M  END&quot;</span><span class="sc">;</span>
+1783   <span class="i">$SDFilesInfo</span>{<span class="w">White</span>} = <span class="q">qq(#ffffff)</span><span class="sc">;</span>
+1784 <span class="s">}</span>
+1785 
+1786 <span class="c"># Setup various data directories to hold HTML and other related files...</span>
+<a name="SetupDataDirs-"></a>1787 <span class="k">sub </span><span class="m">SetupDataDirs</span> <span class="s">{</span>
+1788   <span class="k">my</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
+1789   <span class="k">my</span><span class="s">(</span><span class="i">$TopHTMLDir</span><span class="cm">,</span> <span class="i">$SubHTMLDir</span><span class="cm">,</span> <span class="i">$SubMolDir</span><span class="cm">,</span> <span class="i">$CreateTopHTMLDir</span><span class="cm">,</span> <span class="i">$CreateSubHTMLDir</span><span class="cm">,</span> <span class="i">$CreateSubMolDir</span><span class="s">)</span><span class="sc">;</span>
+1790 
+1791   <span class="i">$TopHTMLDir</span> = <span class="i">$SDFilesInfo</span>{<span class="w">TopHTMLDir</span>}[<span class="i">$Index</span>]<span class="sc">;</span>
+1792   <span class="i">$SubHTMLDir</span> = <span class="i">$SDFilesInfo</span>{<span class="w">SubHTMLDir</span>}[<span class="i">$Index</span>]<span class="sc">;</span>
+1793   <span class="i">$SubMolDir</span> = <span class="i">$SDFilesInfo</span>{<span class="w">SubMolDir</span>}[<span class="i">$Index</span>]<span class="sc">;</span>
+1794 
+1795   <span class="c"># Clean up existing directories...</span>
+1796   <span class="k">if</span> <span class="s">(</span><span class="k">-d</span> <span class="i">$TopHTMLDir</span><span class="s">)</span> <span class="s">{</span>
+1797     <span class="k">unlink</span> <span class="q">&quot;&lt;$TopHTMLDir/*.html&gt;&quot;</span><span class="sc">;</span>
+1798     <span class="k">unlink</span> <span class="q">&quot;&lt;$TopHTMLDir/*.css&gt;&quot;</span><span class="sc">;</span>
+1799   <span class="s">}</span>
+1800   <span class="k">if</span> <span class="s">(</span><span class="k">-d</span> <span class="i">$SubHTMLDir</span><span class="s">)</span> <span class="s">{</span>
+1801     <span class="k">unlink</span> <span class="q">&quot;&lt;$SubHTMLDir/*.html&gt;&quot;</span><span class="sc">;</span>
+1802   <span class="s">}</span>
+1803   <span class="k">if</span> <span class="s">(</span><span class="k">-d</span> <span class="i">$SubMolDir</span><span class="s">)</span> <span class="s">{</span>
+1804     <span class="k">unlink</span> <span class="q">&quot;&lt;$SubMolDir/*.mol&gt;&quot;</span><span class="sc">;</span>
+1805   <span class="s">}</span>
+1806 
+1807   <span class="c"># What directories need to be created...</span>
+1808   <span class="i">$CreateTopHTMLDir</span> = <span class="s">(</span><span class="k">-d</span> <span class="i">$TopHTMLDir</span><span class="s">)</span> ? <span class="n">0</span> <span class="co">:</span> <span class="n">1</span><span class="sc">;</span>
+1809   <span class="i">$CreateSubHTMLDir</span> = <span class="s">(</span><span class="k">-d</span> <span class="i">$SubHTMLDir</span><span class="s">)</span> ? <span class="n">0</span> <span class="co">:</span> <span class="n">1</span><span class="sc">;</span>
+1810   <span class="i">$CreateSubMolDir</span> = <span class="n">0</span><span class="sc">;</span>
+1811   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrViewerType</span>} =~ <span class="q">/^(Jmol|Chime|Chem3DActiveX|ChemDrawActiveX|ChemDrawPlugIn|ViewerActiveX)$/i</span><span class="s">)</span> <span class="s">{</span>
+1812     <span class="i">$CreateSubMolDir</span> = <span class="s">(</span><span class="k">-d</span> <span class="i">$SubMolDir</span><span class="s">)</span> ? <span class="n">0</span> <span class="co">:</span> <span class="n">1</span><span class="sc">;</span>
+1813   <span class="s">}</span>
+1814 
+1815   <span class="c"># Create appropriate directories...</span>
+1816   <span class="k">if</span> <span class="s">(</span><span class="i">$CreateTopHTMLDir</span><span class="s">)</span> <span class="s">{</span>
+1817     <span class="k">mkdir</span> <span class="i">$TopHTMLDir</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Couldn&#39;t mkdir $TopHTMLDir: $! \n&quot;</span><span class="sc">;</span>
+1818   <span class="s">}</span>
+1819   <span class="k">if</span> <span class="s">(</span><span class="i">$CreateSubHTMLDir</span><span class="s">)</span> <span class="s">{</span>
+1820     <span class="k">mkdir</span> <span class="i">$SubHTMLDir</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Error: Couldn&#39;t mkdir $SubHTMLDir: $! \n&quot;</span><span class="sc">;</span>
+1821   <span class="s">}</span>
+1822   <span class="k">else</span> <span class="s">{</span>
+1823     <span class="k">unlink</span> <span class="q">&lt;$SubHTMLDir/*.html&gt;</span><span class="sc">;</span>
+1824   <span class="s">}</span>
+1825   <span class="k">if</span> <span class="s">(</span><span class="i">$CreateSubMolDir</span><span class="s">)</span> <span class="s">{</span>
+1826     <span class="k">mkdir</span> <span class="i">$SubMolDir</span> <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Error: Couldn&#39;t mkdir $SubMolDir: $! \n&quot;</span><span class="sc">;</span>
+1827   <span class="s">}</span>
+1828   <span class="k">return</span> <span class="s">(</span><span class="i">$TopHTMLDir</span><span class="cm">,</span> <span class="i">$SubHTMLDir</span><span class="cm">,</span> <span class="i">$SubMolDir</span><span class="s">)</span><span class="sc">;</span>
+1829 <span class="s">}</span>
+1830 
+1831 <span class="c"># Setup script usage  and retrieve command line arguments specified using various options...</span>
+<a name="SetupScriptUsage-"></a>1832 <span class="k">sub </span><span class="m">SetupScriptUsage</span> <span class="s">{</span>
+1833 
+1834   <span class="c"># Retrieve all the options...</span>
+1835   <span class="i">%Options</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
+1836 
+1837   <span class="i">$Options</span>{<span class="w">mode</span>} = <span class="q">&quot;shade&quot;</span><span class="sc">;</span>
+1838   <span class="i">$Options</span>{<span class="w">highlightstyle</span>} = <span class="q">&quot;background&quot;</span><span class="sc">;</span>
+1839 
+1840   <span class="i">$Options</span>{<span class="w">cellpadding</span>} = <span class="n">2</span><span class="sc">;</span>
+1841   <span class="i">$Options</span>{<span class="w">cellspacing</span>} = <span class="n">1</span><span class="sc">;</span>
+1842 
+1843   <span class="i">$Options</span>{<span class="w">displaylinks</span>} = <span class="q">&quot;both&quot;</span><span class="sc">;</span>
+1844   <span class="i">$Options</span>{<span class="w">displaylinksinfo</span>} = <span class="q">&quot;both&quot;</span><span class="sc">;</span>
+1845   <span class="i">$Options</span>{<span class="w">stylesheet</span>} = <span class="q">&quot;new&quot;</span><span class="sc">;</span>
+1846 
+1847   <span class="i">$Options</span>{<span class="w">structure</span>} = <span class="q">&quot;display&quot;</span><span class="sc">;</span>
+1848   <span class="i">$Options</span>{<span class="w">strlinktype</span>} = <span class="q">&quot;href&quot;</span><span class="sc">;</span>
+1849   <span class="i">$Options</span>{<span class="w">strlinkmode</span>} = <span class="q">&quot;plain&quot;</span><span class="sc">;</span>
+1850   <span class="i">$Options</span>{<span class="w">strlinknavigation</span>} = <span class="q">&quot;yes&quot;</span><span class="sc">;</span>
+1851   <span class="i">$Options</span>{<span class="w">strlinktitledisplay</span>} = <span class="q">&quot;no&quot;</span><span class="sc">;</span>
+1852 
+1853   <span class="i">$Options</span>{<span class="w">strviewertype</span>} = <span class="q">&quot;Jmol&quot;</span><span class="sc">;</span>
+1854   <span class="i">$Options</span>{<span class="w">strviewerembed</span>} = <span class="q">&quot;direct&quot;</span><span class="sc">;</span>
+1855 
+1856   <span class="i">$Options</span>{<span class="w">titledisplay</span>} = <span class="q">&quot;yes&quot;</span><span class="sc">;</span>
+1857 
+1858   <span class="k">if</span> <span class="s">(</span>!<span class="i">GetOptions</span><span class="s">(</span>\<span class="i">%Options</span><span class="cm">,</span> <span class="q">&quot;align|a=s&quot;</span><span class="cm">,</span> <span class="q">&quot;border|b=i&quot;</span><span class="cm">,</span> <span class="q">&quot;cellpadding=i&quot;</span><span class="cm">,</span> <span class="q">&quot;cellspacing=i&quot;</span><span class="cm">,</span> <span class="q">&quot;cmpddatafield|c=s&quot;</span><span class="cm">,</span> <span class="q">&quot;datafields=s&quot;</span><span class="cm">,</span> <span class="q">&quot;footer=s&quot;</span><span class="cm">,</span> <span class="q">&quot;displaylinks|d=s&quot;</span><span class="cm">,</span> <span class="q">&quot;displaylinksinfo=s&quot;</span><span class="cm">,</span> <span class="q">&quot;help|h&quot;</span><span class="cm">,</span> <span class="q">&quot;headeralign=s&quot;</span><span class="cm">,</span> <span class="q">&quot;headercolor=s&quot;</span><span class="cm">,</span> <span class="q">&quot;highlight=s&quot;</span><span class="cm">,</span> <span class="q">&quot;highlightcolor=s&quot;</span><span class="cm">,</span> <span class="q">&quot;highlightstyle=s&quot;</span><span class="cm">,</span> <span class="q">&quot;mode|m=s&quot;</span><span class="cm">,</span> <span class="q">&quot;numcmpds|n=i&quot;</span><span class="cm">,</span> <span class="q">&quot;overwrite|o&quot;</span><span class="cm">,</span> <span class="q">&quot;root|r=s&quot;</span><span class="cm">,</span> <span class="q">&quot;shadecolor=s&quot;</span><span class="cm">,</span> <span class="q">&quot;stylesheet=s&quot;</span><span class="cm">,</span> <span class="q">&quot;stylesheetname=s&quot;</span><span class="cm">,</span> <span class="q">&quot;structure|s=s&quot;</span><span class="cm">,</span> <span class="q">&quot;strlinkmode=s&quot;</span><span class="cm">,</span> <span class="q">&quot;strlinknavigation=s&quot;</span><span class="cm">,</span> <span class="q">&quot;strlinkshadecolor=s&quot;</span><span class="cm">,</span> <span class="q">&quot;strlinktitle=s&quot;</span><span class="cm">,</span> <span class="q">&quot;strlinktitledisplay=s&quot;</span><span class="cm">,</span> <span class="q">&quot;strlinktype=s&quot;</span><span class="cm">,</span> <span class="q">&quot;strviewertype=s&quot;</span><span class="cm">,</span> <span class="q">&quot;strviewerconfig=s&quot;</span><span class="cm">,</span> <span class="q">&quot;strviewerparams=s&quot;</span><span class="cm">,</span> <span class="q">&quot;strviewerembed=s&quot;</span><span class="cm">,</span>  <span class="q">&quot;strviewerjsfile=s&quot;</span><span class="cm">,</span> <span class="q">&quot;strtablesize=s&quot;</span><span class="cm">,</span> <span class="q">&quot;title|t=s&quot;</span><span class="cm">,</span> <span class="q">&quot;titledisplay=s&quot;</span><span class="cm">,</span> <span class="q">&quot;workingdir|w=s&quot;</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1859     <span class="k">die</span> <span class="q">&quot;\nTo get a list of valid options and their values, use \&quot;$ScriptName -h\&quot; or\n\&quot;perl -S $ScriptName -h\&quot; command and try again...\n&quot;</span><span class="sc">;</span>
+1860   <span class="s">}</span>
+1861 
+1862   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">workingdir</span>}<span class="s">)</span> <span class="s">{</span>
+1863     <span class="k">if</span> <span class="s">(</span>! <span class="k">-d</span> <span class="i">$Options</span>{<span class="w">workingdir</span>}<span class="s">)</span> <span class="s">{</span>
+1864       <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{workingdir}, for option \&quot;-w --workingdir\&quot; is not a directory name.\n&quot;</span><span class="sc">;</span>
+1865     <span class="s">}</span>
+1866     <span class="k">chdir</span> <span class="i">$Options</span>{<span class="w">workingdir</span>} <span class="k">or</span> <span class="k">die</span> <span class="q">&quot;Error: Couldn&#39;t chdir $Options{workingdir}: $! \n&quot;</span><span class="sc">;</span>
+1867   <span class="s">}</span>
+1868   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">displaylinks</span>} !~ <span class="q">/^(top|bottom|both)$/i</span><span class="s">)</span> <span class="s">{</span>
+1869     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{displaylinks}, for option \&quot;-d --displaylinks\&quot; is not valid. Allowed values: top, bottom, or both\n&quot;</span><span class="sc">;</span>
+1870   <span class="s">}</span>
+1871   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">displaylinksinfo</span>} !~ <span class="q">/^(compound|table|both)$/i</span><span class="s">)</span> <span class="s">{</span>
+1872     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{displaylinksinfo}, for option \&quot;--displaylinksinfo\&quot; is not valid. Allowed values: compound, table, or both\n&quot;</span><span class="sc">;</span>
+1873   <span class="s">}</span>
+1874   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">highlightstyle</span>} !~ <span class="q">/^(background|text)$/i</span><span class="s">)</span> <span class="s">{</span>
+1875     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{highlightstyle}, for option \&quot;--highlightstyle\&quot; is not valid. Allowed values: background or text\n&quot;</span><span class="sc">;</span>
+1876   <span class="s">}</span>
+1877   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">mode</span>} !~ <span class="q">/^(plain|shade|highlight|shadedhighlight|structuresonly|shadedstructuresonly)$/i</span><span class="s">)</span> <span class="s">{</span>
+1878     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{mode}, for option \&quot;-m --mode\&quot; is not valid. Allowed values: plain, shade, hightlight, shadedhighlight, structuresonly, or shadedstructuresonly\n&quot;</span><span class="sc">;</span>
+1879   <span class="s">}</span>
+1880   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">stylesheet</span>} !~ <span class="q">/^(old|new|none)$/i</span><span class="s">)</span> <span class="s">{</span>
+1881     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{stylesheet}, for option \&quot;-s --stylesheet\&quot; is not valid. Allowed values: old, new, or none\n&quot;</span><span class="sc">;</span>
+1882   <span class="s">}</span>
+1883   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">structure</span>} !~ <span class="q">/^(display|link)$/i</span><span class="s">)</span> <span class="s">{</span>
+1884     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{structure}, for option \&quot;-s --structure\&quot; is not valid. Allowed values: display or link\n&quot;</span><span class="sc">;</span>
+1885   <span class="s">}</span>
+1886   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">strlinkmode</span>} !~ <span class="q">/^(plain|shade)$/i</span><span class="s">)</span> <span class="s">{</span>
+1887     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{strlinkmode}, for option \&quot;--strlinkmode\&quot; is not valid. Allowed values: plain or shade\n&quot;</span><span class="sc">;</span>
+1888   <span class="s">}</span>
+1889   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">strlinktype</span>} !~ <span class="q">/^(href|button)$/i</span><span class="s">)</span> <span class="s">{</span>
+1890     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{strlinktype}, for option \&quot;--strlinktype\&quot; is not valid. Allowed values: href or button\n&quot;</span><span class="sc">;</span>
+1891   <span class="s">}</span>
+1892   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">strlinknavigation</span>} !~ <span class="q">/^(yes|no)$/i</span><span class="s">)</span> <span class="s">{</span>
+1893     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{strlinknavigation}, for option \&quot;--strlinknavigation\&quot; is not valid. Allowed values: yes or no\n&quot;</span><span class="sc">;</span>
+1894   <span class="s">}</span>
+1895   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">strlinktitledisplay</span>} !~ <span class="q">/^(yes|no)$/i</span><span class="s">)</span> <span class="s">{</span>
+1896     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{strlinktitledisplay}, for option \&quot;--strlinktitledisplay\&quot; is not valid. Allowed values: yes or no\n&quot;</span><span class="sc">;</span>
+1897   <span class="s">}</span>
+1898   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">strviewertype</span>} !~ <span class="q">/^(JME|Jmol|Chime|MarvinView|ChemDrawPlugIn|Chem3DActiveX|ChemDrawActiveX|ViewerActiveX)$/i</span><span class="s">)</span> <span class="s">{</span>
+1899     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{strviewertype}, for option \&quot;--strviewertype\&quot; is not valid. Allowed values: Chem3DActiveX, ChemDrawActiveX, ChemDrawPlugIn, Chime, JME, Jmol, MarvinView, or ViewerActiveX.\n&quot;</span><span class="sc">;</span>
+1900   <span class="s">}</span>
+1901   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">strviewerembed</span>} !~ <span class="q">/^(direct|javascript)$/i</span><span class="s">)</span> <span class="s">{</span>
+1902     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{strviewerembed},  for option \&quot;--strviewerembed\&quot; is not valid. Allowed values: direct or javascript \n&quot;</span><span class="sc">;</span>
+1903   <span class="s">}</span>
+1904   <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$Options</span>{<span class="w">numcmpds</span>} &amp;&amp; <span class="i">$Options</span>{<span class="w">numcmpds</span>} &lt; <span class="n">0</span><span class="s">)</span> <span class="s">{</span>
+1905     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{numcmpds},  for option \&quot;-n --numcmpds\&quot; is not valid. Allowed values: &gt;= 0 \n&quot;</span><span class="sc">;</span>
+1906   <span class="s">}</span>
+1907   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">titledisplay</span>} !~ <span class="q">/^(yes|no)$/i</span><span class="s">)</span> <span class="s">{</span>
+1908     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{titledisplay}, for option \&quot;--titledisplay\&quot; is not valid. Allowed values: yes or no\n&quot;</span><span class="sc">;</span>
+1909   <span class="s">}</span>
+1910   <span class="k">if</span> <span class="s">(</span><span class="k">exists</span><span class="s">(</span><span class="i">$Options</span>{<span class="w">border</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span>
+1911     <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">border</span>} &lt; <span class="n">0</span><span class="s">)</span> <span class="s">{</span>
+1912       <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{border},  for option \&quot;--border\&quot; is not valid. Allowed values: &gt;= 0 \n&quot;</span><span class="sc">;</span>
+1913     <span class="s">}</span>
+1914   <span class="s">}</span>
+1915   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">cellpadding</span>} &lt; <span class="n">0</span><span class="s">)</span> <span class="s">{</span>
+1916     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{cellpadding},  for option \&quot;--cellpadding\&quot; is not valid. Allowed values: &gt;= 0 \n&quot;</span><span class="sc">;</span>
+1917   <span class="s">}</span>
+1918   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">cellspacing</span>} &lt; <span class="n">0</span><span class="s">)</span> <span class="s">{</span>
+1919     <span class="k">die</span> <span class="q">&quot;Error: The value specified, $Options{cellspacing},  for option \&quot;--cellspacing\&quot; is not valid. Allowed values: &gt;= 0 \n&quot;</span><span class="sc">;</span>
+1920   <span class="s">}</span>
+1921 <span class="s">}</span>
+1922 
+<a name="EOF-"></a></pre>
+<p>&nbsp;</p>
+<br />
+<center>
+<img src="../../../images/h2o2.png">
+</center>
+</body>
+</html>