| 1 | 1 <html> | 
|  | 2 <head> | 
|  | 3 <title>MayaChemTools:Code:SDFilesToHTML.pl</title> | 
|  | 4 <meta http-equiv="content-type" content="text/html;charset=utf-8"> | 
|  | 5 <link rel="stylesheet" type="text/css" href="../../../css/MayaChemToolsCode.css"> | 
|  | 6 </head> | 
|  | 7 <body leftmargin="20" rightmargin="20" topmargin="10" bottommargin="10"> | 
|  | 8 <br/> | 
|  | 9 <center> | 
|  | 10 <a href="http://www.mayachemtools.org" title="MayaChemTools Home"><img src="../../../images/MayaChemToolsLogo.gif" border="0" alt="MayaChemTools"></a> | 
|  | 11 </center> | 
|  | 12 <br/> | 
|  | 13 <pre> | 
|  | 14    1 #!/usr/bin/perl -w | 
|  | 15    2 <span class="c">#</span> | 
|  | 16    3 <span class="c"># $RCSfile: SDFilesToHTML.pl,v $</span> | 
|  | 17    4 <span class="c"># $Date: 2015/02/28 20:46:20 $</span> | 
|  | 18    5 <span class="c"># $Revision: 1.50 $</span> | 
|  | 19    6 <span class="c">#</span> | 
|  | 20    7 <span class="c"># Author: Manish Sud <msud@san.rr.com></span> | 
|  | 21    8 <span class="c">#</span> | 
|  | 22    9 <span class="c"># Copyright (C) 2015 Manish Sud. All rights reserved.</span> | 
|  | 23   10 <span class="c">#</span> | 
|  | 24   11 <span class="c"># This file is part of MayaChemTools.</span> | 
|  | 25   12 <span class="c">#</span> | 
|  | 26   13 <span class="c"># MayaChemTools is free software; you can redistribute it and/or modify it under</span> | 
|  | 27   14 <span class="c"># the terms of the GNU Lesser General Public License as published by the Free</span> | 
|  | 28   15 <span class="c"># Software Foundation; either version 3 of the License, or (at your option) any</span> | 
|  | 29   16 <span class="c"># later version.</span> | 
|  | 30   17 <span class="c">#</span> | 
|  | 31   18 <span class="c"># MayaChemTools is distributed in the hope that it will be useful, but without</span> | 
|  | 32   19 <span class="c"># any warranty; without even the implied warranty of merchantability of fitness</span> | 
|  | 33   20 <span class="c"># for a particular purpose.  See the GNU Lesser General Public License for more</span> | 
|  | 34   21 <span class="c"># details.</span> | 
|  | 35   22 <span class="c">#</span> | 
|  | 36   23 <span class="c"># You should have received a copy of the GNU Lesser General Public License</span> | 
|  | 37   24 <span class="c"># along with MayaChemTools; if not, see <http://www.gnu.org/licenses/> or</span> | 
|  | 38   25 <span class="c"># write to the Free Software Foundation Inc., 59 Temple Place, Suite 330,</span> | 
|  | 39   26 <span class="c"># Boston, MA, 02111-1307, USA.</span> | 
|  | 40   27 <span class="c">#</span> | 
|  | 41   28 | 
|  | 42   29 <span class="k">use</span> <span class="w">strict</span><span class="sc">;</span> | 
|  | 43   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">"$FindBin::Bin/../lib"</span><span class="sc">;</span> | 
|  | 44   31 <span class="k">use</span> <span class="w">Getopt::Long</span><span class="sc">;</span> | 
|  | 45   32 <span class="k">use</span> <span class="w">File::Basename</span><span class="sc">;</span> | 
|  | 46   33 <span class="k">use</span> <span class="w">File::Spec</span><span class="sc">;</span> | 
|  | 47   34 <span class="k">use</span> <span class="w">Text::ParseWords</span><span class="sc">;</span> | 
|  | 48   35 <span class="k">use</span> <span class="w">Benchmark</span><span class="sc">;</span> | 
|  | 49   36 <span class="k">use</span> <span class="w">Cwd</span><span class="sc">;</span> | 
|  | 50   37 <span class="k">use</span> <span class="w">FileUtil</span><span class="sc">;</span> | 
|  | 51   38 <span class="k">use</span> <span class="w">SDFileUtil</span><span class="sc">;</span> | 
|  | 52   39 <span class="k">use</span> <span class="w">TextUtil</span><span class="sc">;</span> | 
|  | 53   40 <span class="k">use</span> <span class="w">HTMLUtil</span><span class="sc">;</span> | 
|  | 54   41 | 
|  | 55   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> | 
|  | 56   43 | 
|  | 57   44 <span class="c"># Autoflush STDOUT</span> | 
|  | 58   45 <span class="i">$|</span> = <span class="n">1</span><span class="sc">;</span> | 
|  | 59   46 | 
|  | 60   47 <span class="c"># Starting message...</span> | 
|  | 61   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> | 
|  | 62   49 <span class="k">print</span> <span class="q">"\n$ScriptName: Starting...\n\n"</span><span class="sc">;</span> | 
|  | 63   50 <span class="i">$StartTime</span> = <span class="w">new</span> <span class="w">Benchmark</span><span class="sc">;</span> | 
|  | 64   51 | 
|  | 65   52 <span class="c"># Get the options and setup script...</span> | 
|  | 66   53 <span class="i">SetupScriptUsage</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> | 
|  | 67   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> < <span class="n">1</span><span class="s">)</span> <span class="s">{</span> | 
|  | 68   55   <span class="k">die</span> <span class="i">GetUsageFromPod</span><span class="s">(</span><span class="q">"$FindBin::Bin/$ScriptName"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 69   56 <span class="s">}</span> | 
|  | 70   57 | 
|  | 71   58 <span class="k">my</span><span class="s">(</span><span class="i">@SDFilesList</span><span class="s">)</span><span class="sc">;</span> | 
|  | 72   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">"sdf sd"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 73   60 | 
|  | 74   61 <span class="c">#Make sure appropriate mode specific option values are specified...</span> | 
|  | 75   62 <span class="k">print</span> <span class="q">"Processing options...\n"</span><span class="sc">;</span> | 
|  | 76   63 <span class="k">my</span><span class="s">(</span><span class="i">%OptionsInfo</span><span class="s">)</span><span class="sc">;</span> | 
|  | 77   64 <span class="i">ProcessOptions</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> | 
|  | 78   65 | 
|  | 79   66 <span class="c"># Collect information about SD files...</span> | 
|  | 80   67 <span class="k">print</span> <span class="q">"Checking input SD file(s)...\n"</span><span class="sc">;</span> | 
|  | 81   68 <span class="k">my</span><span class="s">(</span><span class="i">%SDFilesInfo</span><span class="s">)</span><span class="sc">;</span> | 
|  | 82   69 <span class="i">RetrieveSDFilesInfo</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> | 
|  | 83   70 <span class="i">SetupMultipleTablesAndMiscInfo</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> | 
|  | 84   71 | 
|  | 85   72 <span class="c"># Generate output files...</span> | 
|  | 86   73 <span class="k">my</span><span class="s">(</span><span class="i">$FileIndex</span><span class="s">)</span><span class="sc">;</span> | 
|  | 87   74 <span class="k">if</span> <span class="s">(</span><span class="i">@SDFilesList</span> > <span class="n">1</span><span class="s">)</span> <span class="s">{</span> | 
|  | 88   75   <span class="k">print</span> <span class="q">"\nProcessing SD files...\n"</span><span class="sc">;</span> | 
|  | 89   76 <span class="s">}</span> | 
|  | 90   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> | 
|  | 91   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> | 
|  | 92   79     <span class="k">print</span> <span class="q">"\nProcessing file $SDFilesList[$FileIndex]...\n"</span><span class="sc">;</span> | 
|  | 93   80     <span class="i">GenerateHTMLTable</span><span class="s">(</span><span class="i">$FileIndex</span><span class="s">)</span><span class="sc">;</span> | 
|  | 94   81   <span class="s">}</span> | 
|  | 95   82 <span class="s">}</span> | 
|  | 96   83 <span class="k">print</span> <span class="q">"\n$ScriptName:Done...\n\n"</span><span class="sc">;</span> | 
|  | 97   84 | 
|  | 98   85 <span class="i">$EndTime</span> = <span class="w">new</span> <span class="w">Benchmark</span><span class="sc">;</span> | 
|  | 99   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> | 
|  | 100   87 <span class="k">print</span> <span class="q">"Total time: "</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">"\n"</span><span class="sc">;</span> | 
|  | 101   88 | 
|  | 102   89 <span class="c">###############################################################################</span> | 
|  | 103   90 | 
|  | 104   91 <span class="c"># Generate HTML table(s)...</span> | 
|  | 105 <a name="GenerateHTMLTable-"></a>  92 <span class="k">sub </span><span class="m">GenerateHTMLTable</span> <span class="s">{</span> | 
|  | 106   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> | 
|  | 107   94 | 
|  | 108   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> | 
|  | 109   96     <span class="i">GenerateMultipleHTMLTables</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span><span class="sc">;</span> | 
|  | 110   97   <span class="s">}</span> | 
|  | 111   98   <span class="k">else</span> <span class="s">{</span> | 
|  | 112   99     <span class="i">GenerateOneHTMLTable</span><span class="s">(</span><span class="i">$Index</span><span class="s">)</span><span class="sc">;</span> | 
|  | 113  100   <span class="s">}</span> | 
|  | 114  101 <span class="s">}</span> | 
|  | 115  102 | 
|  | 116  103 <span class="c"># Generate one HTML table...</span> | 
|  | 117 <a name="GenerateOneHTMLTable-"></a> 104 <span class="k">sub </span><span class="m">GenerateOneHTMLTable</span> <span class="s">{</span> | 
|  | 118  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> | 
|  | 119  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> | 
|  | 120  107 | 
|  | 121  108   <span class="i">$HTMLFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">".html"</span><span class="sc">;</span> | 
|  | 122  109   <span class="i">$SDFile</span> = <span class="i">$SDFilesList</span>[<span class="i">$Index</span>]<span class="sc">;</span> | 
|  | 123  110 | 
|  | 124  111   <span class="c"># Setup data directories...</span> | 
|  | 125  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> | 
|  | 126  113 | 
|  | 127  114   <span class="c"># Setup stylesheet file...</span> | 
|  | 128  115   <span class="i">$CSSRef</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 129  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> | 
|  | 130  117     <span class="i">$CSSFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">".css"</span><span class="sc">;</span> <span class="i">$CSSRef</span> = <span class="q">".\/"</span> . <span class="q">"$CSSFile"</span><span class="sc">;</span> | 
|  | 131  118     <span class="i">$CSSFilePath</span> = <span class="q">"$TopHTMLDir"</span> . <span class="q">"\/"</span> . <span class="i">$CSSFile</span><span class="sc">;</span> | 
|  | 132  119     <span class="i">GenerateStyleSheetFile</span><span class="s">(</span><span class="i">$CSSFilePath</span><span class="s">)</span><span class="sc">;</span> | 
|  | 133  120   <span class="s">}</span> | 
|  | 134  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> | 
|  | 135  122     <span class="i">$CSSRef</span> = <span class="i">$Options</span>{<span class="w">stylesheetname</span>}<span class="sc">;</span> | 
|  | 136  123   <span class="s">}</span> | 
|  | 137  124 | 
|  | 138  125   <span class="c"># Set HTML file location...</span> | 
|  | 139  126   <span class="i">$HTMLFile</span> = <span class="q">"$TopHTMLDir"</span> . <span class="q">"\/"</span> . <span class="i">$HTMLFile</span><span class="sc">;</span> | 
|  | 140  127 | 
|  | 141  128   <span class="k">print</span> <span class="q">"Generating HTML file $HTMLFile...\n"</span><span class="sc">;</span> | 
|  | 142  129   <span class="k">open</span> <span class="w">HTMLFILE</span><span class="cm">,</span> <span class="q">">$HTMLFile"</span> <span class="k">or</span> <span class="k">die</span> <span class="q">"Error: Can't open $HTMLFile: $! \n"</span><span class="sc">;</span> | 
|  | 143  130   <span class="k">open</span> <span class="w">SDFILE</span><span class="cm">,</span> <span class="q">"$SDFile"</span> <span class="k">or</span> <span class="k">die</span> <span class="q">"Error: Can't open $SDFile: $! \n"</span><span class="sc">;</span> | 
|  | 144  131 | 
|  | 145  132   <span class="c"># Write out HTML page header...</span> | 
|  | 146  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> | 
|  | 147  134 | 
|  | 148  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> | 
|  | 149  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> | 
|  | 150  137   <span class="s">}</span> | 
|  | 151  138 | 
|  | 152  139   <span class="c"># Setup page title...</span> | 
|  | 153  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> | 
|  | 154  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> | 
|  | 155  142   <span class="s">}</span> | 
|  | 156  143   <span class="k">else</span> <span class="s">{</span> | 
|  | 157  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> | 
|  | 158  145   <span class="s">}</span> | 
|  | 159  146 | 
|  | 160  147   <span class="c"># Start the table...</span> | 
|  | 161  148   <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLAlignmentBegin</span><span class="s">(</span><span class="q">"center"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 162  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> | 
|  | 163  150 | 
|  | 164  151   <span class="c"># Generate table rows...</span> | 
|  | 165  152   <span class="i">$StartCmpdNum</span> = <span class="n">1</span><span class="sc">;</span> | 
|  | 166  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> | 
|  | 167  154   <span class="i">$TableNum</span> = <span class="n">1</span><span class="sc">;</span> | 
|  | 168  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> | 
|  | 169  156 | 
|  | 170  157   <span class="c"># Finish up the table...</span> | 
|  | 171  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> | 
|  | 172  159   <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLAlignmentEnd</span><span class="s">(</span><span class="q">"center"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 173  160 | 
|  | 174  161   <span class="c"># Write out HTML page end...</span> | 
|  | 175  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> | 
|  | 176  163 | 
|  | 177  164   <span class="k">close</span> <span class="w">HTMLFILE</span><span class="sc">;</span> | 
|  | 178  165   <span class="k">close</span> <span class="w">SDFILE</span><span class="sc">;</span> | 
|  | 179  166 <span class="s">}</span> | 
|  | 180  167 | 
|  | 181  168 <span class="c"># Generate multiple tables...</span> | 
|  | 182 <a name="GenerateMultipleHTMLTables-"></a> 169 <span class="k">sub </span><span class="m">GenerateMultipleHTMLTables</span> <span class="s">{</span> | 
|  | 183  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> | 
|  | 184  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> | 
|  | 185  172 | 
|  | 186  173   <span class="c"># Open SD file...</span> | 
|  | 187  174   <span class="i">$SDFile</span> = <span class="i">$SDFilesList</span>[<span class="i">$Index</span>]<span class="sc">;</span> | 
|  | 188  175   <span class="k">open</span> <span class="w">SDFILE</span><span class="cm">,</span> <span class="q">"$SDFile"</span> <span class="k">or</span> <span class="k">die</span> <span class="q">"Error: Can't open $SDFile: $! \n"</span><span class="sc">;</span> | 
|  | 189  176 | 
|  | 190  177   <span class="c"># Set up data directories to hold various html files...</span> | 
|  | 191  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> | 
|  | 192  179 | 
|  | 193  180   <span class="c"># Create stylesheet file...</span> | 
|  | 194  181   <span class="i">$CSSRef</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 195  182   <span class="i">$NewStyleSheet</span> = <span class="n">0</span><span class="sc">;</span> | 
|  | 196  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> | 
|  | 197  184     <span class="i">$NewStyleSheet</span> = <span class="n">1</span><span class="sc">;</span> | 
|  | 198  185     <span class="i">$CSSFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">".css"</span><span class="sc">;</span> | 
|  | 199  186     <span class="i">$CSSFilePath</span> = <span class="q">"$TopHTMLDir"</span> . <span class="q">"\/"</span> . <span class="i">$CSSFile</span><span class="sc">;</span> | 
|  | 200  187     <span class="i">GenerateStyleSheetFile</span><span class="s">(</span><span class="i">$CSSFilePath</span><span class="s">)</span><span class="sc">;</span> | 
|  | 201  188   <span class="s">}</span> | 
|  | 202  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> | 
|  | 203  190     <span class="i">$CSSRef</span> = <span class="i">$Options</span>{<span class="w">stylesheetname</span>}<span class="sc">;</span> | 
|  | 204  191   <span class="s">}</span> | 
|  | 205  192 | 
|  | 206  193   <span class="i">$PrintMsg</span> = <span class="n">1</span><span class="sc">;</span> | 
|  | 207  194   <span class="c"># Generate HTML files for all the tables...</span> | 
|  | 208  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> | 
|  | 209  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> | 
|  | 210  197     <span class="i">$TableIndex</span> = <span class="i">$TableNum</span> - <span class="n">1</span><span class="sc">;</span> | 
|  | 211  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> | 
|  | 212  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> | 
|  | 213  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> | 
|  | 214  201 | 
|  | 215  202     <span class="c"># Setup file name...</span> | 
|  | 216  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> | 
|  | 217  204       <span class="i">$HTMLFile</span> = <span class="q">"$TopHTMLDir"</span> . <span class="q">"\/"</span> . <span class="i">$HTMLFile</span><span class="sc">;</span> | 
|  | 218  205       <span class="k">print</span> <span class="q">"Generating HTML file $HTMLFile...\n"</span><span class="sc">;</span> | 
|  | 219  206     <span class="s">}</span> | 
|  | 220  207     <span class="k">else</span> <span class="s">{</span> | 
|  | 221  208       <span class="i">$HTMLFile</span> = <span class="q">"$SubHTMLDir"</span> . <span class="q">"\/"</span> . <span class="i">$HTMLFile</span><span class="sc">;</span> | 
|  | 222  209       <span class="k">if</span> <span class="s">(</span><span class="i">$PrintMsg</span><span class="s">)</span> <span class="s">{</span> | 
|  | 223  210         <span class="i">$PrintMsg</span> = <span class="n">0</span><span class="sc">;</span> | 
|  | 224  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> | 
|  | 225  212           <span class="k">print</span> <span class="q">"Generating HTML file $HTMLFile...\n"</span><span class="sc">;</span> | 
|  | 226  213         <span class="s">}</span> | 
|  | 227  214         <span class="k">else</span> <span class="s">{</span> | 
|  | 228  215           <span class="k">print</span> <span class="q">"Generating "</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">" other HTML files: $SubHTMLDir\/$SDFilesInfo{HTMLRoot}[$Index]\*.html...\n"</span><span class="sc">;</span> | 
|  | 229  216         <span class="s">}</span> | 
|  | 230  217       <span class="s">}</span> | 
|  | 231  218     <span class="s">}</span> | 
|  | 232  219     <span class="c"># Setup stylesheet reference...</span> | 
|  | 233  220     <span class="k">if</span> <span class="s">(</span><span class="i">$NewStyleSheet</span><span class="s">)</span> <span class="s">{</span> | 
|  | 234  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">".\/"</span> <span class="co">:</span> <span class="q">"..\/"</span><span class="sc">;</span> | 
|  | 235  222       <span class="i">$CSSRef</span> .= <span class="i">$CSSFile</span><span class="sc">;</span> | 
|  | 236  223     <span class="s">}</span> | 
|  | 237  224 | 
|  | 238  225     <span class="k">open</span> <span class="w">HTMLFILE</span><span class="cm">,</span> <span class="q">">$HTMLFile"</span> <span class="k">or</span> <span class="k">die</span> <span class="q">"Error: Can't open $HTMLFile: $! \n"</span><span class="sc">;</span> | 
|  | 239  226     <span class="c"># Write out HTML page header...</span> | 
|  | 240  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> | 
|  | 241  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> | 
|  | 242  229 | 
|  | 243  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> | 
|  | 244  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> | 
|  | 245  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> | 
|  | 246  233     <span class="s">}</span> | 
|  | 247  234 | 
|  | 248  235     <span class="c"># Set up the navigation links for this table...</span> | 
|  | 249  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> | 
|  | 250  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> | 
|  | 251  238     <span class="s">}</span> | 
|  | 252  239     <span class="c"># Setup page title...</span> | 
|  | 253  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> | 
|  | 254  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> | 
|  | 255  242     <span class="s">}</span> | 
|  | 256  243     <span class="k">else</span> <span class="s">{</span> | 
|  | 257  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> | 
|  | 258  245     <span class="s">}</span> | 
|  | 259  246 | 
|  | 260  247     <span class="c"># Start the table...</span> | 
|  | 261  248     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLAlignmentBegin</span><span class="s">(</span><span class="q">"center"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 262  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> | 
|  | 263  250 | 
|  | 264  251     <span class="c"># Generate table content...</span> | 
|  | 265  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> | 
|  | 266  253 | 
|  | 267  254     <span class="c"># Finish up the table...</span> | 
|  | 268  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> | 
|  | 269  256     <span class="k">print</span> <span class="i">HTMLFILE</span> <span class="i">SetupHTMLAlignmentEnd</span><span class="s">(</span><span class="q">"center"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 270  257 | 
|  | 271  258     <span class="c"># Set up the navigation links for this table...</span> | 
|  | 272  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> | 
|  | 273  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> | 
|  | 274  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> | 
|  | 275  262     <span class="s">}</span> | 
|  | 276  263 | 
|  | 277  264     <span class="c"># Write out HTML page end...</span> | 
|  | 278  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> | 
|  | 279  266     <span class="k">close</span> <span class="w">HTMLFILE</span><span class="sc">;</span> | 
|  | 280  267   <span class="s">}</span> | 
|  | 281  268   <span class="k">close</span> <span class="w">SDFILE</span><span class="sc">;</span> | 
|  | 282  269 | 
|  | 283  270 <span class="s">}</span> | 
|  | 284  271 | 
|  | 285  272 <span class="c"># Generate table content...</span> | 
|  | 286 <a name="GenerateTableRows-"></a> 273 <span class="k">sub </span><span class="m">GenerateTableRows</span> <span class="s">{</span> | 
|  | 287  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> | 
|  | 288  275 | 
|  | 289  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> | 
|  | 290  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> | 
|  | 291  278   <span class="s">}</span> | 
|  | 292  279   <span class="k">else</span> <span class="s">{</span> | 
|  | 293  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> | 
|  | 294  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> | 
|  | 295  282   <span class="s">}</span> | 
|  | 296  283 <span class="s">}</span> | 
|  | 297  284 | 
|  | 298  285 <span class="c"># Create stylesheet file...</span> | 
|  | 299 <a name="GenerateStyleSheetFile-"></a> 286 <span class="k">sub </span><span class="m">GenerateStyleSheetFile</span> <span class="s">{</span> | 
|  | 300  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> | 
|  | 301  288     <span class="k">print</span> <span class="q">"Generating stylesheet file $CSSFile...\n"</span><span class="sc">;</span> | 
|  | 302  289     <span class="k">open</span> <span class="w">CSSFILE</span><span class="cm">,</span> <span class="q">">$CSSFile"</span> <span class="k">or</span> <span class="k">die</span> <span class="q">"Error: Can't open $CSSFile: $! \n"</span><span class="sc">;</span> | 
|  | 303  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> | 
|  | 304  291     <span class="k">close</span> <span class="w">CSSFILE</span><span class="sc">;</span> | 
|  | 305  292 <span class="s">}</span> | 
|  | 306  293 | 
|  | 307  294 <span class="c"># Write out table header using column labels...</span> | 
|  | 308 <a name="WriteColLabels-"></a> 295 <span class="k">sub </span><span class="m">WriteColLabels</span> <span class="s">{</span> | 
|  | 309  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> | 
|  | 310  297 | 
|  | 311  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> | 
|  | 312  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> | 
|  | 313  300 | 
|  | 314  301   <span class="c"># Write out structure label...</span> | 
|  | 315  302   <span class="i">$Label</span> = <span class="q">"Structure"</span><span class="sc">;</span> | 
|  | 316  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> | 
|  | 317  304 | 
|  | 318  305   <span class="c"># Write out field values..</span> | 
|  | 319  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> | 
|  | 320  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> | 
|  | 321  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> | 
|  | 322  309   <span class="s">}</span> | 
|  | 323  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> | 
|  | 324  311 <span class="s">}</span> | 
|  | 325  312 | 
|  | 326  313 <span class="c"># Write out the rows value...</span> | 
|  | 327 <a name="WriteRowValues-"></a> 314 <span class="k">sub </span><span class="m">WriteRowValues</span> <span class="s">{</span> | 
|  | 328  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> | 
|  | 329  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> | 
|  | 330  317 | 
|  | 331  318   <span class="i">$RowNum</span> = <span class="n">0</span><span class="sc">;</span> | 
|  | 332  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> | 
|  | 333  320     <span class="i">$RowNum</span>++<span class="sc">;</span> | 
|  | 334  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> | 
|  | 335  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> | 
|  | 336  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> | 
|  | 337  324     <span class="s">}</span> | 
|  | 338  325     <span class="k">else</span> <span class="s">{</span> | 
|  | 339  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> | 
|  | 340  327     <span class="s">}</span> | 
|  | 341  328     <span class="i">@CmpdLines</span> = <span class="k">split</span> <span class="q">"\n"</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span> | 
|  | 342  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> | 
|  | 343  330 | 
|  | 344  331     <span class="c"># Setup structure column...</span> | 
|  | 345  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> | 
|  | 346  333     <span class="c"># Write out field values..</span> | 
|  | 347  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> | 
|  | 348  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">""</span><span class="sc">;</span> | 
|  | 349  336       <span class="i">$BackgroundColor</span> = <span class="q">""</span><span class="sc">;</span> <span class="i">$FontColor</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 350  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> | 
|  | 351  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> | 
|  | 352  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> | 
|  | 353  340         <span class="s">}</span> | 
|  | 354  341       <span class="s">}</span> | 
|  | 355  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> | 
|  | 356  343     <span class="s">}</span> | 
|  | 357  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> | 
|  | 358  345   <span class="s">}</span> | 
|  | 359  346 <span class="s">}</span> | 
|  | 360  347 | 
|  | 361  348 <span class="c"># Write only structures...</span> | 
|  | 362 <a name="WriteRowStructures-"></a> 349 <span class="k">sub </span><span class="m">WriteRowStructures</span> <span class="s">{</span> | 
|  | 363  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> | 
|  | 364  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> | 
|  | 365  352 | 
|  | 366  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> | 
|  | 367  354   <span class="i">$ColumnHeaderTags</span> = <span class="i">SetupHTMLTableColumnHeader</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> | 
|  | 368  355   <span class="i">$ColumnEndTags</span> = <span class="i">SetupHTMLTableColumnEnd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> | 
|  | 369  356 | 
|  | 370  357   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StructuresOnlyMode</span>} && !<span class="i">$OptionsInfo</span>{<span class="w">TableBorder</span>} && <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> | 
|  | 371  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> | 
|  | 372  359     <span class="i">$Value</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">""</span><span class="s">)</span><span class="sc">;</span> | 
|  | 373  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">"colspan"</span><span class="cm">,</span> <span class="q">"$OptionsInfo{StrTableCols}"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 374  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> | 
|  | 375  362   <span class="s">}</span> | 
|  | 376  363 | 
|  | 377  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> | 
|  | 378  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> | 
|  | 379  366     <span class="k">if</span> <span class="s">(</span><span class="i">$StartRowFlag</span><span class="s">)</span> <span class="s">{</span> | 
|  | 380  367       <span class="i">$StartRowFlag</span> = <span class="n">0</span><span class="sc">;</span> | 
|  | 381  368       <span class="i">$RowNum</span>++<span class="sc">;</span> | 
|  | 382  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> | 
|  | 383  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> | 
|  | 384  371       <span class="s">}</span> | 
|  | 385  372       <span class="k">else</span> <span class="s">{</span> | 
|  | 386  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> | 
|  | 387  374       <span class="s">}</span> | 
|  | 388  375     <span class="s">}</span> | 
|  | 389  376     <span class="i">$ColNum</span>++<span class="sc">;</span> | 
|  | 390  377 | 
|  | 391  378     <span class="i">$CmpdDataFieldValue</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 392  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> | 
|  | 393  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> | 
|  | 394  381       <span class="i">$CmpdDataField</span> = <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataField</span>}<span class="sc">;</span> | 
|  | 395  382       <span class="i">@CmpdLines</span> = <span class="k">split</span> <span class="q">"\n"</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span> | 
|  | 396  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> | 
|  | 397  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> && <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> | 
|  | 398  385         <span class="i">$CmpdDataFieldValue</span> = <span class="i">$DataFieldValues</span>{<span class="i">$CmpdDataField</span>}<span class="sc">;</span> | 
|  | 399  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> | 
|  | 400  387           <span class="i">$CmpdDataFieldValue</span> = <span class="q">"${CmpdDataField}: ${CmpdDataFieldValue}"</span><span class="sc">;</span> | 
|  | 401  388         <span class="s">}</span> | 
|  | 402  389         <span class="c"># Make sure it's not to looong...</span> | 
|  | 403  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> > <span class="n">30</span><span class="s">)</span> <span class="s">{</span> | 
|  | 404  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">"..."</span><span class="sc">;</span> | 
|  | 405  392         <span class="s">}</span> | 
|  | 406  393       <span class="s">}</span> | 
|  | 407  394     <span class="s">}</span> | 
|  | 408  395     <span class="k">if</span> <span class="s">(</span><span class="i">$CmpdDataFieldValue</span><span class="s">)</span> <span class="s">{</span> | 
|  | 409  396       <span class="i">$RowBgColor</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 410  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> | 
|  | 411  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> | 
|  | 412  399       <span class="s">}</span> | 
|  | 413  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">"middle"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 414  401       <span class="c"># Start  a new table in current column...</span> | 
|  | 415  402       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$ColumnHeaderTags</span><span class="sc">;</span> | 
|  | 416  403       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLAlignmentBegin</span><span class="s">(</span><span class="q">"center"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 417  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> | 
|  | 418  405 | 
|  | 419  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> | 
|  | 420  407         <span class="c"># Add an empty row...</span> | 
|  | 421  408         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$RowStartTags</span><span class="sc">;</span> | 
|  | 422  409         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">""</span><span class="s">)</span><span class="sc">;</span> | 
|  | 423  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> | 
|  | 424  411 | 
|  | 425  412         <span class="c"># Display the label value...</span> | 
|  | 426  413         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$RowStartTags</span><span class="sc">;</span> | 
|  | 427  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> | 
|  | 428  415         <span class="i">$Value</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">"$CmpdDataFieldValue"</span><span class="cm">,</span> <span class="i">$CmpdHTMLFileRef</span><span class="cm">,</span> <span class="q">"Compound Summary"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 429  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> | 
|  | 430  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> | 
|  | 431  418       <span class="s">}</span> | 
|  | 432  419       <span class="c"># Display the structure...</span> | 
|  | 433  420       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="q">"center"</span><span class="cm">,</span> <span class="i">$RowBgColor</span><span class="cm">,</span> <span class="q">"middle"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 434  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> | 
|  | 435  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> | 
|  | 436  423 | 
|  | 437  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> | 
|  | 438  425         <span class="c"># Display the label value...</span> | 
|  | 439  426         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$RowStartTags</span><span class="sc">;</span> | 
|  | 440  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> | 
|  | 441  428         <span class="i">$Value</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">"$CmpdDataFieldValue"</span><span class="cm">,</span> <span class="i">$CmpdHTMLFileRef</span><span class="cm">,</span> <span class="q">"Compound Summary"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 442  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> | 
|  | 443  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> | 
|  | 444  431 | 
|  | 445  432         <span class="c"># Add an empty row...</span> | 
|  | 446  433         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$RowStartTags</span><span class="sc">;</span> | 
|  | 447  434         <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">""</span><span class="s">)</span><span class="sc">;</span> | 
|  | 448  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> | 
|  | 449  436       <span class="s">}</span> | 
|  | 450  437 | 
|  | 451  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> | 
|  | 452  439       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLAlignmentEnd</span><span class="s">(</span><span class="q">"center"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 453  440       <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$ColumnEndTags</span><span class="sc">;</span> | 
|  | 454  441     <span class="s">}</span> | 
|  | 455  442     <span class="k">else</span> <span class="s">{</span> | 
|  | 456  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> | 
|  | 457  444     <span class="s">}</span> | 
|  | 458  445 | 
|  | 459  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> | 
|  | 460  447       <span class="c"># Finish up the current row and get ready for starting a new row...</span> | 
|  | 461  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> | 
|  | 462  449       <span class="i">$ColNum</span> = <span class="n">0</span><span class="sc">;</span> | 
|  | 463  450       <span class="i">$StartRowFlag</span> = <span class="n">1</span><span class="sc">;</span> | 
|  | 464  451     <span class="s">}</span> | 
|  | 465  452   <span class="s">}</span> | 
|  | 466  453   <span class="k">if</span> <span class="s">(</span>!<span class="i">$StartRowFlag</span><span class="s">)</span> <span class="s">{</span> | 
|  | 467  454     <span class="c"># Finish up an existing row...</span> | 
|  | 468  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> | 
|  | 469  456     <span class="i">$Value</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 470  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> | 
|  | 471  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> | 
|  | 472  459     <span class="s">}</span> | 
|  | 473  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> | 
|  | 474  461   <span class="s">}</span> | 
|  | 475  462 <span class="s">}</span> | 
|  | 476  463 | 
|  | 477  464 <span class="c"># Setup structure column...</span> | 
|  | 478 <a name="SetupStructureColumn-"></a> 465 <span class="k">sub </span><span class="m">SetupStructureColumn</span> <span class="s">{</span> | 
|  | 479  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> | 
|  | 480  467 | 
|  | 481  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> | 
|  | 482  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> | 
|  | 483  470   <span class="s">}</span> | 
|  | 484  471   <span class="k">else</span> <span class="s">{</span> | 
|  | 485  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> | 
|  | 486  473   <span class="s">}</span> | 
|  | 487  474 <span class="s">}</span> | 
|  | 488  475 | 
|  | 489  476 <span class="c"># Setup structure display for compound summary page...</span> | 
|  | 490 <a name="SetupStructureDisplayForCmpdSummaryPage-"></a> 477 <span class="k">sub </span><span class="m">SetupStructureDisplayForCmpdSummaryPage</span> <span class="s">{</span> | 
|  | 491  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> | 
|  | 492  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> | 
|  | 493  480 | 
|  | 494  481   <span class="c"># Use table num 0 to force usage of "../mol" prefix for all MOL file references. Row num</span> | 
|  | 495  482   <span class="c"># doesn't matter...</span> | 
|  | 496  483   <span class="i">$TableNum</span> = <span class="n">0</span><span class="sc">;</span> | 
|  | 497  484   <span class="i">$RowNum</span> = <span class="n">1</span><span class="sc">;</span> | 
|  | 498  485 | 
|  | 499  486   <span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>} = <span class="n">1</span><span class="sc">;</span> | 
|  | 500  487 | 
|  | 501  488   <span class="c"># Setup size and bgcolor parameters for linking structures...</span> | 
|  | 502  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> | 
|  | 503  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> | 
|  | 504  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> | 
|  | 505  492 | 
|  | 506  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> | 
|  | 507  494 | 
|  | 508  495   <span class="c"># Reset size and bgcolor parameters back to displaying structures in tables...</span> | 
|  | 509  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> | 
|  | 510  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> | 
|  | 511  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">""</span><span class="sc">;</span> | 
|  | 512  499 | 
|  | 513  500   <span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>} = <span class="n">0</span><span class="sc">;</span> | 
|  | 514  501 <span class="s">}</span> | 
|  | 515  502 | 
|  | 516  503 | 
|  | 517  504 <span class="c"># Setup structure column display...</span> | 
|  | 518 <a name="SetupStructureDisplay-"></a> 505 <span class="k">sub </span><span class="m">SetupStructureDisplay</span> <span class="s">{</span> | 
|  | 519  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> | 
|  | 520  507   <span class="k">my</span><span class="s">(</span><span class="i">$Nothing</span><span class="s">)</span><span class="sc">;</span> | 
|  | 521  508 | 
|  | 522  509  <span class="j">STRVIEWERTYPE:</span> <span class="s">{</span> | 
|  | 523  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> | 
|  | 524  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> | 
|  | 525  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> | 
|  | 526  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> | 
|  | 527  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> | 
|  | 528  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> | 
|  | 529  516     <span class="i">$Nothing</span> = <span class="n">1</span><span class="sc">;</span> | 
|  | 530  517   <span class="s">}</span> | 
|  | 531  518 <span class="s">}</span> | 
|  | 532  519 | 
|  | 533  520 <span class="c"># Setup JME display...</span> | 
|  | 534 <a name="SetupJMEDisplay-"></a> 521 <span class="k">sub </span><span class="m">SetupJMEDisplay</span> <span class="s">{</span> | 
|  | 535  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> | 
|  | 536  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> | 
|  | 537  524 | 
|  | 538  525   <span class="i">$Value</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 539  526   <span class="s">(</span><span class="i">$MolString</span><span class="s">)</span> = <span class="k">split</span> <span class="q">"$SDFilesInfo{MolEndTag}"</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span> | 
|  | 540  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> | 
|  | 541  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> | 
|  | 542  529     <span class="i">$MolString</span> .= <span class="q">"$SDFilesInfo{MolEndTag}"</span><span class="sc">;</span> | 
|  | 543  530 | 
|  | 544  531     <span class="c"># JME viewer doesn't appear to support "bgcolor" param. So, always use white background for</span> | 
|  | 545  532     <span class="c"># structure cell...</span> | 
|  | 546  533     <span class="i">$AppletName</span> = <span class="q">"JME"</span> . <span class="i">$CmpdNum</span><span class="sc">;</span> | 
|  | 547  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> | 
|  | 548  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> | 
|  | 549  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> | 
|  | 550  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> | 
|  | 551  538       <span class="s">}</span> | 
|  | 552  539     <span class="s">}</span> | 
|  | 553  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> | 
|  | 554  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> | 
|  | 555  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> | 
|  | 556  543   <span class="s">}</span> | 
|  | 557  544   <span class="k">else</span> <span class="s">{</span> | 
|  | 558  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> | 
|  | 559  546   <span class="s">}</span> | 
|  | 560  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> | 
|  | 561  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">"class"</span><span class="cm">,</span> <span class="q">"box"</span><span class="s">)</span><span class="s">)</span><span class="sc">;</span> | 
|  | 562  549   <span class="s">}</span> | 
|  | 563  550   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$ValueTag</span><span class="sc">;</span> | 
|  | 564  551 <span class="s">}</span> | 
|  | 565  552 | 
|  | 566  553 <span class="c"># Setup Marvin display...</span> | 
|  | 567 <a name="SetupMarvinDisplay-"></a> 554 <span class="k">sub </span><span class="m">SetupMarvinDisplay</span> <span class="s">{</span> | 
|  | 568  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> | 
|  | 569  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> | 
|  | 570  557 | 
|  | 571  558   <span class="i">$Value</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 572  559   <span class="s">(</span><span class="i">$MolString</span><span class="s">)</span> = <span class="k">split</span> <span class="q">"$SDFilesInfo{MolEndTag}"</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span> | 
|  | 573  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> | 
|  | 574  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> | 
|  | 575  562     <span class="i">$MolString</span> .= <span class="q">"$SDFilesInfo{MolEndTag}"</span><span class="sc">;</span> | 
|  | 576  563 | 
|  | 577  564     <span class="i">$AppletName</span> = <span class="q">"MView"</span> . <span class="i">$CmpdNum</span><span class="sc">;</span> | 
|  | 578  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> | 
|  | 579  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> | 
|  | 580  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> | 
|  | 581  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> | 
|  | 582  569       <span class="s">}</span> | 
|  | 583  570     <span class="s">}</span> | 
|  | 584  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> | 
|  | 585  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> | 
|  | 586  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> | 
|  | 587  574   <span class="s">}</span> | 
|  | 588  575   <span class="k">else</span> <span class="s">{</span> | 
|  | 589  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> | 
|  | 590  577   <span class="s">}</span> | 
|  | 591  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> | 
|  | 592  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">"class"</span><span class="cm">,</span> <span class="q">"box"</span><span class="s">)</span><span class="s">)</span><span class="sc">;</span> | 
|  | 593  580   <span class="s">}</span> | 
|  | 594  581   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$ValueTag</span><span class="sc">;</span> | 
|  | 595  582 <span class="s">}</span> | 
|  | 596  583 | 
|  | 597  584 <span class="c"># Setup Jmol display...</span> | 
|  | 598 <a name="SetupJmolDisplay-"></a> 585 <span class="k">sub </span><span class="m">SetupJmolDisplay</span> <span class="s">{</span> | 
|  | 599  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> | 
|  | 600  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> | 
|  | 601  588 | 
|  | 602  589   <span class="i">$Value</span> = <span class="q">""</span><span class="sc">;</span> <span class="i">$ValueTag</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 603  590   <span class="s">(</span><span class="i">$MolString</span><span class="s">)</span> = <span class="k">split</span> <span class="q">"$SDFilesInfo{MolEndTag}"</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span> | 
|  | 604  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> | 
|  | 605  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> | 
|  | 606  593     <span class="i">$MolString</span> .= <span class="q">"$SDFilesInfo{MolEndTag}"</span><span class="sc">;</span> | 
|  | 607  594 | 
|  | 608  595     <span class="c"># Make sure MolName line is not empty; otherwise, JMol doesn't display structure...</span> | 
|  | 609  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">"\n"</span><span class="cm">,</span> <span class="i">$MolString</span><span class="sc">;</span> | 
|  | 610  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> | 
|  | 611  598       <span class="i">$MolLines</span>[<span class="n">0</span>] = <span class="q">"Cmpd${CmpdNum}"</span><span class="sc">;</span> | 
|  | 612  599       <span class="i">$MolString</span> = <span class="k">join</span> <span class="q">"\n"</span><span class="cm">,</span> <span class="i">@MolLines</span><span class="sc">;</span> | 
|  | 613  600     <span class="s">}</span> | 
|  | 614  601 | 
|  | 615  602     <span class="c"># Setup the applet...</span> | 
|  | 616  603     <span class="i">$AppletName</span> = <span class="q">"Jmol"</span> . <span class="i">$CmpdNum</span><span class="sc">;</span> | 
|  | 617  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> | 
|  | 618  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> | 
|  | 619  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> | 
|  | 620  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> | 
|  | 621  608       <span class="s">}</span> | 
|  | 622  609     <span class="s">}</span> | 
|  | 623  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> | 
|  | 624  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> | 
|  | 625  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> | 
|  | 626  613   <span class="s">}</span> | 
|  | 627  614   <span class="k">else</span> <span class="s">{</span> | 
|  | 628  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> | 
|  | 629  616   <span class="s">}</span> | 
|  | 630  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> | 
|  | 631  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">"class"</span><span class="cm">,</span> <span class="q">"box"</span><span class="s">)</span><span class="s">)</span><span class="sc">;</span> | 
|  | 632  619   <span class="s">}</span> | 
|  | 633  620   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$ValueTag</span><span class="sc">;</span> | 
|  | 634  621 <span class="s">}</span> | 
|  | 635  622 | 
|  | 636  623 <span class="c"># Setup Chime display...</span> | 
|  | 637 <a name="SetupChimeDisplay-"></a> 624 <span class="k">sub </span><span class="m">SetupChimeDisplay</span> <span class="s">{</span> | 
|  | 638  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> | 
|  | 639  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> | 
|  | 640  627 | 
|  | 641  628   <span class="i">$Value</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 642  629   <span class="s">(</span><span class="i">$MolString</span><span class="s">)</span> = <span class="k">split</span> <span class="q">"$SDFilesInfo{MolEndTag}"</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span> | 
|  | 643  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> | 
|  | 644  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> | 
|  | 645  632     <span class="i">$MolString</span> .= <span class="q">"$SDFilesInfo{MolEndTag}"</span><span class="sc">;</span> | 
|  | 646  633     <span class="c"># Write out MOL file...</span> | 
|  | 647  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> | 
|  | 648  635     <span class="c"># Setup the applet...</span> | 
|  | 649  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> | 
|  | 650  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> | 
|  | 651  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> | 
|  | 652  639       <span class="s">}</span> | 
|  | 653  640     <span class="s">}</span> | 
|  | 654  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> | 
|  | 655  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> | 
|  | 656  643   <span class="s">}</span> | 
|  | 657  644   <span class="k">else</span> <span class="s">{</span> | 
|  | 658  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> | 
|  | 659  646   <span class="s">}</span> | 
|  | 660  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> | 
|  | 661  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">"class"</span><span class="cm">,</span> <span class="q">"box"</span><span class="s">)</span><span class="s">)</span><span class="sc">;</span> | 
|  | 662  649   <span class="s">}</span> | 
|  | 663  650   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$ValueTag</span><span class="sc">;</span> | 
|  | 664  651 <span class="s">}</span> | 
|  | 665  652 | 
|  | 666  653 <span class="c"># Setup displays for various viewers available from CambridgeSoft...</span> | 
|  | 667 <a name="SetupCambridgeSoftDisplay-"></a> 654 <span class="k">sub </span><span class="m">SetupCambridgeSoftDisplay</span> <span class="s">{</span> | 
|  | 668  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> | 
|  | 669  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> | 
|  | 670  657 | 
|  | 671  658   <span class="i">$Value</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 672  659   <span class="s">(</span><span class="i">$MolString</span><span class="s">)</span> = <span class="k">split</span> <span class="q">"$SDFilesInfo{MolEndTag}"</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span> | 
|  | 673  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> | 
|  | 674  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> | 
|  | 675  662     <span class="i">$MolString</span> .= <span class="q">"$SDFilesInfo{MolEndTag}"</span><span class="sc">;</span> | 
|  | 676  663     <span class="c"># Write out MOL file...</span> | 
|  | 677  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> | 
|  | 678  665     <span class="c"># Setup the viewer...</span> | 
|  | 679  666     <span class="i">$Name</span> = <span class="q">"CS"</span> . <span class="i">$CmpdNum</span><span class="sc">;</span> | 
|  | 680  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> | 
|  | 681  668       <span class="c"># Use white background for Chem3D and cell; otherwise, it doesn't look good:</span> | 
|  | 682  669       <span class="c"># cell size is larger than Chem3D window size and different colors don't work</span> | 
|  | 683  670       <span class="i">$BGColor</span> = <span class="i">$SDFilesInfo</span>{<span class="w">White</span>}<span class="sc">;</span> | 
|  | 684  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> | 
|  | 685  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> | 
|  | 686  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> | 
|  | 687  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> | 
|  | 688  675         <span class="s">}</span> | 
|  | 689  676       <span class="s">}</span> | 
|  | 690  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> | 
|  | 691  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> | 
|  | 692  679     <span class="s">}</span> | 
|  | 693  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> | 
|  | 694  681       <span class="c"># BGColor is not supported. So, make it all white...</span> | 
|  | 695  682       <span class="i">$BGColor</span> = <span class="i">$SDFilesInfo</span>{<span class="w">White</span>}<span class="sc">;</span> | 
|  | 696  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> | 
|  | 697  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> | 
|  | 698  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> | 
|  | 699  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> | 
|  | 700  687         <span class="s">}</span> | 
|  | 701  688       <span class="s">}</span> | 
|  | 702  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> | 
|  | 703  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> | 
|  | 704  691     <span class="s">}</span> | 
|  | 705  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> | 
|  | 706  693       <span class="c"># BGColor is not supported. So, make it all white...</span> | 
|  | 707  694       <span class="i">$BGColor</span> = <span class="i">$SDFilesInfo</span>{<span class="w">White</span>}<span class="sc">;</span> | 
|  | 708  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> | 
|  | 709  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> | 
|  | 710  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> | 
|  | 711  698         <span class="s">}</span> | 
|  | 712  699       <span class="s">}</span> | 
|  | 713  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> | 
|  | 714  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> | 
|  | 715  702     <span class="s">}</span> | 
|  | 716  703   <span class="s">}</span> | 
|  | 717  704   <span class="k">else</span> <span class="s">{</span> | 
|  | 718  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> | 
|  | 719  706   <span class="s">}</span> | 
|  | 720  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> | 
|  | 721  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">"class"</span><span class="cm">,</span> <span class="q">"box"</span><span class="s">)</span><span class="s">)</span><span class="sc">;</span> | 
|  | 722  709   <span class="s">}</span> | 
|  | 723  710   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$ValueTag</span><span class="sc">;</span> | 
|  | 724  711 <span class="s">}</span> | 
|  | 725  712 | 
|  | 726  713 <span class="c"># Setup Accelrys Viewer ActiveX display...</span> | 
|  | 727 <a name="SetupViewerAccelrysActiveXDisplay-"></a> 714 <span class="k">sub </span><span class="m">SetupViewerAccelrysActiveXDisplay</span> <span class="s">{</span> | 
|  | 728  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> | 
|  | 729  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> | 
|  | 730  717 | 
|  | 731  718   <span class="i">$Value</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 732  719   <span class="s">(</span><span class="i">$MolString</span><span class="s">)</span> = <span class="k">split</span> <span class="q">"$SDFilesInfo{MolEndTag}"</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span> | 
|  | 733  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> | 
|  | 734  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> | 
|  | 735  722     <span class="i">$MolString</span> .= <span class="q">"$SDFilesInfo{MolEndTag}"</span><span class="sc">;</span> | 
|  | 736  723     <span class="c"># Write out MOL file. Accelrys ActiveX viewer doesn't load mol files with relative path names.</span> | 
|  | 737  724     <span class="c"># So, set up a complete path name for now; however, it may lead to issues during web</span> | 
|  | 738  725     <span class="c"># deployment.</span> | 
|  | 739  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> | 
|  | 740  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> | 
|  | 741  728     <span class="c"># Setup the viewer...</span> | 
|  | 742  729     <span class="i">$Name</span> = <span class="q">"ViewerActiveX"</span> . <span class="i">$CmpdNum</span><span class="sc">;</span> | 
|  | 743  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> | 
|  | 744  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> | 
|  | 745  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> | 
|  | 746  733       <span class="s">}</span> | 
|  | 747  734     <span class="s">}</span> | 
|  | 748  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> | 
|  | 749  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> | 
|  | 750  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> | 
|  | 751  738   <span class="s">}</span> | 
|  | 752  739   <span class="k">else</span> <span class="s">{</span> | 
|  | 753  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> | 
|  | 754  741   <span class="s">}</span> | 
|  | 755  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> | 
|  | 756  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">"class"</span><span class="cm">,</span> <span class="q">"box"</span><span class="s">)</span><span class="s">)</span><span class="sc">;</span> | 
|  | 757  744   <span class="s">}</span> | 
|  | 758  745   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">$ValueTag</span><span class="sc">;</span> | 
|  | 759  746 <span class="s">}</span> | 
|  | 760  747 | 
|  | 761  748 | 
|  | 762  749 <span class="c"># Setup structure background color...</span> | 
|  | 763 <a name="SetupStructureBGColor-"></a> 750 <span class="k">sub </span><span class="m">SetupStructureBGColor</span> <span class="s">{</span> | 
|  | 764  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> | 
|  | 765  752   <span class="k">my</span><span class="s">(</span><span class="i">$BGColor</span><span class="s">)</span><span class="sc">;</span> | 
|  | 766  753 | 
|  | 767  754   <span class="i">$BGColor</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 768  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> | 
|  | 769  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> | 
|  | 770  757   <span class="s">}</span> | 
|  | 771  758   <span class="k">else</span> <span class="s">{</span> | 
|  | 772  759     <span class="i">$BGColor</span> = <span class="i">$SDFilesInfo</span>{<span class="w">White</span>}<span class="sc">;</span> | 
|  | 773  760   <span class="s">}</span> | 
|  | 774  761   <span class="k">return</span> <span class="i">$BGColor</span><span class="sc">;</span> | 
|  | 775  762 <span class="s">}</span> | 
|  | 776  763 | 
|  | 777  764 <span class="c"># Setup  MDL MOL file...</span> | 
|  | 778 <a name="SetupMOLFile-"></a> 765 <span class="k">sub </span><span class="m">SetupMOLFile</span> <span class="s">{</span> | 
|  | 779  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> | 
|  | 780  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> | 
|  | 781  768 | 
|  | 782  769   <span class="i">$CompletePath</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 783  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> | 
|  | 784  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> | 
|  | 785  772   <span class="s">}</span> | 
|  | 786  773   <span class="k">else</span> <span class="s">{</span> | 
|  | 787  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> | 
|  | 788  775   <span class="s">}</span> | 
|  | 789  776 | 
|  | 790  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> | 
|  | 791  778   <span class="i">$MolFileName</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">"Cmpd"</span> . <span class="i">$CmpdNum</span> . <span class="q">".mol"</span><span class="sc">;</span> | 
|  | 792  779   <span class="i">$MolFile</span> = <span class="i">$SubMolDir</span> . <span class="q">"\/"</span> . <span class="i">$MolFileName</span><span class="sc">;</span> | 
|  | 793  780 | 
|  | 794  781   <span class="k">open</span> <span class="w">MOLFILE</span><span class="cm">,</span> <span class="q">">$MolFile"</span> <span class="k">or</span> <span class="k">die</span> <span class="q">"Error: Can't open $MolFile: $! \n"</span><span class="sc">;</span> | 
|  | 795  782   <span class="k">print</span> <span class="i">MOLFILE</span> <span class="q">"$MolString\n"</span><span class="sc">;</span> | 
|  | 796  783   <span class="k">close</span> <span class="w">MOLFILE</span><span class="sc">;</span> | 
|  | 797  784 | 
|  | 798  785   <span class="k">if</span> <span class="s">(</span><span class="i">$CompletePath</span><span class="s">)</span> <span class="s">{</span> | 
|  | 799  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> | 
|  | 800  787     <span class="i">$CWD</span> = <span class="i">cwd</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> | 
|  | 801  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> | 
|  | 802  789     <span class="i">$MolFileRef</span> = <span class="i">$NewCWD</span> . <span class="q">"\/"</span> . <span class="i">$SDFilesInfo</span>{<span class="w">TopHTMLDir</span>}[<span class="i">$Index</span>] .  <span class="q">"\/mol\/$MolFileName"</span> <span class="sc">;</span> | 
|  | 803  790   <span class="s">}</span> | 
|  | 804  791   <span class="k">else</span> <span class="s">{</span> | 
|  | 805  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">".\/mol\/$MolFileName"</span> <span class="co">:</span> <span class="q">"..\/mol\/$MolFileName"</span><span class="sc">;</span> | 
|  | 806  793   <span class="s">}</span> | 
|  | 807  794 | 
|  | 808  795   <span class="k">return</span> <span class="i">$MolFileRef</span><span class="sc">;</span> | 
|  | 809  796 <span class="s">}</span> | 
|  | 810  797 | 
|  | 811  798 <span class="c"># Setup a link to structure and other available information...</span> | 
|  | 812 <a name="SetupStructureLink-"></a> 799 <span class="k">sub </span><span class="m">SetupStructureLink</span> <span class="s">{</span> | 
|  | 813  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> | 
|  | 814  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> | 
|  | 815  802 | 
|  | 816  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> | 
|  | 817  804 | 
|  | 818  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> | 
|  | 819  806     <span class="i">$Value</span> = <span class="i">SetupHTMLButtonRef</span><span class="s">(</span><span class="q">"View"</span><span class="cm">,</span> <span class="i">$CmpdHTMLFileRef</span><span class="s">)</span><span class="sc">;</span> | 
|  | 820  807   <span class="s">}</span> | 
|  | 821  808   <span class="k">else</span> <span class="s">{</span> | 
|  | 822  809     <span class="i">$Value</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">"View"</span><span class="cm">,</span> <span class="i">$CmpdHTMLFileRef</span><span class="s">)</span><span class="sc">;</span> | 
|  | 823  810   <span class="s">}</span> | 
|  | 824  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> | 
|  | 825  812 <span class="s">}</span> | 
|  | 826  813 | 
|  | 827  814 <span class="c"># Setup HTML compound summary file and link...</span> | 
|  | 828 <a name="SetupCompoundSummaryFileAndLink-"></a> 815 <span class="k">sub </span><span class="m">SetupCompoundSummaryFileAndLink</span> <span class="s">{</span> | 
|  | 829  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> | 
|  | 830  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> | 
|  | 831  818 | 
|  | 832  819   <span class="c"># Setup compound file names...</span> | 
|  | 833  820   <span class="i">$CmpdHTMLFileName</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">"Cmpd"</span> . <span class="i">$CmpdNum</span> . <span class="q">".html"</span><span class="sc">;</span> | 
|  | 834  821   <span class="i">$CmpdHTMLFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">SubHTMLDir</span>}[<span class="i">$Index</span>] . <span class="q">"\/"</span> . <span class="i">$CmpdHTMLFileName</span><span class="sc">;</span> | 
|  | 835  822 | 
|  | 836  823   <span class="c"># Setup stylesheet reference....</span> | 
|  | 837  824   <span class="i">$CSSRef</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 838  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> | 
|  | 839  826     <span class="i">$CSSRef</span> = <span class="i">$Options</span>{<span class="w">stylesheetname</span>}<span class="sc">;</span> | 
|  | 840  827   <span class="s">}</span> | 
|  | 841  828   <span class="k">else</span> <span class="s">{</span> | 
|  | 842  829     <span class="i">$CSSRef</span> = <span class="q">"..\/"</span> . <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">".css"</span><span class="sc">;</span> | 
|  | 843  830   <span class="s">}</span> | 
|  | 844  831 | 
|  | 845  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> | 
|  | 846  833   <span class="c"># is reversed: it causes structure background to be white by default...</span> | 
|  | 847  834   <span class="k">open</span> <span class="w">CMPDHTMLFILE</span><span class="cm">,</span> <span class="q">">$CmpdHTMLFile"</span> <span class="k">or</span> <span class="k">die</span> <span class="q">"Error: Can't open $CmpdHTMLFile: $! \n"</span><span class="sc">;</span> | 
|  | 848  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> | 
|  | 849  836 | 
|  | 850  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> | 
|  | 851  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> | 
|  | 852  839   <span class="s">}</span> | 
|  | 853  840 | 
|  | 854  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> | 
|  | 855  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">"center"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 856  843   <span class="s">}</span> | 
|  | 857  844   <span class="k">else</span> <span class="s">{</span> | 
|  | 858  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> | 
|  | 859  846   <span class="s">}</span> | 
|  | 860  847   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLAlignmentBegin</span><span class="s">(</span><span class="q">"center"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 861  848 | 
|  | 862  849   <span class="c"># Setup structure display ...</span> | 
|  | 863  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> | 
|  | 864  851 | 
|  | 865  852   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="q">"center"</span><span class="cm">,</span> <span class="q">"#ffffff"</span><span class="cm">,</span> <span class="q">"middle"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 866  853 | 
|  | 867  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> | 
|  | 868  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> | 
|  | 869  856 | 
|  | 870  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> | 
|  | 871  858     <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="q">"center"</span><span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">StrLinkShadeColor</span>}<span class="s">)</span><span class="sc">;</span> | 
|  | 872  859     <span class="i">$Tag</span> = <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">""</span><span class="s">)</span><span class="sc">;</span> | 
|  | 873  860     <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">$Tag</span><span class="sc">;</span> | 
|  | 874  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> | 
|  | 875  862   <span class="s">}</span> | 
|  | 876  863 | 
|  | 877  864   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="q">"left"</span><span class="cm">,</span> <span class="q">""</span><span class="cm">,</span> <span class="q">"middle"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 878  865   <span class="c"># Start a new table with two columns, one each for data field labels and values, in</span> | 
|  | 879  866   <span class="c"># current column...</span> | 
|  | 880  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> | 
|  | 881  868   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLAlignmentBegin</span><span class="s">(</span><span class="q">"left"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 882  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> | 
|  | 883  870 | 
|  | 884  871   <span class="c"># Setup table for other available data...</span> | 
|  | 885  872   <span class="k">my</span><span class="s">(</span><span class="i">$CmpdRowHeaderTags</span><span class="s">)</span><span class="sc">;</span> | 
|  | 886  873   <span class="i">$CmpdRowHeaderTags</span> = <span class="i">SetupHTMLTableRowHeader</span><span class="s">(</span><span class="q">"left"</span><span class="cm">,</span> <span class="q">""</span><span class="cm">,</span> <span class="q">"middle"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 887  874 | 
|  | 888  875   <span class="i">@CmpdLines</span> = <span class="k">split</span> <span class="q">"\n"</span><span class="cm">,</span> <span class="i">$CmpdString</span><span class="sc">;</span> | 
|  | 889  876 | 
|  | 890  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> | 
|  | 891  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> | 
|  | 892  879 | 
|  | 893  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> | 
|  | 894  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> | 
|  | 895  882 | 
|  | 896  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> | 
|  | 897  884     <span class="i">$Value</span> =  <span class="i">$DataFieldValues</span>{<span class="i">$Label</span>}<span class="sc">;</span> | 
|  | 898  885     <span class="i">$Label</span> .= <span class="q">":"</span><span class="sc">;</span> | 
|  | 899  886     <span class="k">if</span> <span class="s">(</span><span class="i">$Label</span> && <span class="s">(</span><span class="k">length</span><span class="s">(</span><span class="i">$Label</span><span class="s">)</span> > <span class="i">$LabelWrapLength</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> | 
|  | 900  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">"<br>"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 901  888     <span class="s">}</span> | 
|  | 902  889     <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">$CmpdRowHeaderTags</span><span class="sc">;</span> | 
|  | 903  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> | 
|  | 904  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">""</span><span class="cm">,</span> <span class="q">""</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> | 
|  | 905  892     <span class="s">}</span> | 
|  | 906  893     <span class="k">else</span> <span class="s">{</span> | 
|  | 907  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> | 
|  | 908  895     <span class="s">}</span> | 
|  | 909  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">"width"</span><span class="cm">,</span> <span class="q">"$LabelColWidth"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 910  897     <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">$Tag</span><span class="sc">;</span> | 
|  | 911  898 | 
|  | 912  899     <span class="k">if</span> <span class="s">(</span><span class="i">$Value</span> && <span class="s">(</span><span class="k">length</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span> >=<span class="i">$ValueWrapLength</span><span class="s">)</span> && <span class="i">$Value</span> !~ <span class="q">/a href/i</span><span class="s">)</span> <span class="s">{</span> | 
|  | 913  900       <span class="i">$Value</span> =~ <span class="q">s/(\r\n)|(\r)|\n//g</span><span class="sc">;</span> | 
|  | 914  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">"<br>"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 915  902     <span class="s">}</span> | 
|  | 916  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> | 
|  | 917  904     <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">$Tag</span><span class="sc">;</span> | 
|  | 918  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> | 
|  | 919  906   <span class="s">}</span> | 
|  | 920  907 | 
|  | 921  908   <span class="c"># Finish up table holding numerical data...</span> | 
|  | 922  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> | 
|  | 923  910   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLAlignmentEnd</span><span class="s">(</span><span class="q">"left"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 924  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> | 
|  | 925  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> | 
|  | 926  913 | 
|  | 927  914   <span class="c"># Finish up main table...</span> | 
|  | 928  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> | 
|  | 929  916   <span class="k">print</span> <span class="i">CMPDHTMLFILE</span> <span class="i">SetupHTMLAlignmentEnd</span><span class="s">(</span><span class="q">"center"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 930  917 | 
|  | 931  918   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">StrLinkNavigation</span>} && <span class="s">(</span><span class="i">$SDFilesInfo</span>{<span class="w">CmpdCount</span>}[<span class="i">$Index</span>] > <span class="n">1</span><span class="s">)</span> <span class="s">)</span> <span class="s">{</span> | 
|  | 932  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> | 
|  | 933  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> | 
|  | 934  921   <span class="s">}</span> | 
|  | 935  922 | 
|  | 936  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> | 
|  | 937  924   <span class="k">close</span> <span class="w">CMPDHTMLFILE</span><span class="sc">;</span> | 
|  | 938  925 | 
|  | 939  926   <span class="c"># Add a link to compound's HTML file in table cell...</span> | 
|  | 940  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">".\/html\/"</span> <span class="co">:</span> <span class="q">".\/"</span><span class="sc">;</span> | 
|  | 941  928   <span class="i">$CmpdHTMLFileRef</span> .= <span class="i">$CmpdHTMLFileName</span><span class="sc">;</span> | 
|  | 942  929 | 
|  | 943  930   <span class="k">return</span> <span class="i">$CmpdHTMLFileRef</span><span class="sc">;</span> | 
|  | 944  931 <span class="s">}</span> | 
|  | 945  932 | 
|  | 946  933 <span class="c"># Write navigation link information for compound summary page...</span> | 
|  | 947 <a name="WriteCompoundSummaryNavigationLinks-"></a> 934 <span class="k">sub </span><span class="m">WriteCompoundSummaryNavigationLinks</span> <span class="s">{</span> | 
|  | 948  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> | 
|  | 949  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> | 
|  | 950  937 | 
|  | 951  938   <span class="i">$FirstTableNum</span> = <span class="n">1</span><span class="sc">;</span> | 
|  | 952  939   <span class="i">$FirstCmpdNum</span> = <span class="n">1</span><span class="sc">;</span> | 
|  | 953  940 | 
|  | 954  941   <span class="i">$CurTableIndex</span> = <span class="i">$CurTableNum</span> - <span class="n">1</span><span class="sc">;</span> | 
|  | 955  942 | 
|  | 956  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> | 
|  | 957  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> | 
|  | 958  945     <span class="i">$FirstTableIndex</span> = <span class="i">$FirstTableNum</span> - <span class="n">1</span><span class="sc">;</span> | 
|  | 959  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> | 
|  | 960  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> | 
|  | 961  948   <span class="s">}</span> | 
|  | 962  949   <span class="k">else</span> <span class="s">{</span> | 
|  | 963  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> | 
|  | 964  951   <span class="s">}</span> | 
|  | 965  952 | 
|  | 966  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> | 
|  | 967  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> | 
|  | 968  955 | 
|  | 969  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">"#8e2323"</span><span class="cm">,</span> <span class="q">"1"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 970  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">""</span><span class="cm">,</span> <span class="q">""</span><span class="cm">,</span> <span class="q">"0"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 971  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> | 
|  | 972  959 | 
|  | 973  960   <span class="c"># Start link table...</span> | 
|  | 974  961   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLAlignmentBegin</span><span class="s">(</span><span class="q">"center"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 975  962   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLDivBegin</span><span class="s">(</span><span class="q">"tablenav"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 976  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> | 
|  | 977  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> | 
|  | 978  965 | 
|  | 979  966   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">"Compounds: "</span><span class="s">)</span><span class="sc">;</span> | 
|  | 980  967 | 
|  | 981  968   <span class="c"># Setup a link to first compound...</span> | 
|  | 982  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> | 
|  | 983  970     <span class="i">$HTMLFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">"Cmpd"</span> . <span class="i">$FirstCmpdNum</span> . <span class="q">".html"</span><span class="sc">;</span> | 
|  | 984  971     <span class="i">$HTMLRefFile</span> = <span class="q">"./${HTMLFile}"</span><span class="sc">;</span> | 
|  | 985  972     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">"First"</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">"First Compound"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 986  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> | 
|  | 987  974   <span class="s">}</span> | 
|  | 988  975 | 
|  | 989  976   <span class="c"># Setup a link to previous compund</span> | 
|  | 990  977   <span class="k">if</span> <span class="s">(</span><span class="i">$PreviousCmpdNum</span><span class="s">)</span> <span class="s">{</span> | 
|  | 991  978     <span class="i">$HTMLFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">"Cmpd"</span> . <span class="i">$PreviousCmpdNum</span> . <span class="q">".html"</span><span class="sc">;</span> | 
|  | 992  979     <span class="i">$HTMLRefFile</span> = <span class="q">"./${HTMLFile}"</span><span class="sc">;</span> | 
|  | 993  980     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">"Previous"</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">"Previous Compound"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 994  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> | 
|  | 995  982   <span class="s">}</span> | 
|  | 996  983 | 
|  | 997  984   <span class="c"># Setup a link to compound table...</span> | 
|  | 998  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> | 
|  | 999  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> | 
|  | 1000  987   <span class="s">}</span> | 
|  | 1001  988   <span class="k">else</span> <span class="s">{</span> | 
|  | 1002  989     <span class="i">$HTMLFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">".html"</span><span class="sc">;</span> | 
|  | 1003  990   <span class="s">}</span> | 
|  | 1004  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">"../"</span> <span class="co">:</span> <span class="q">"./"</span><span class="s">)</span> . <span class="i">$HTMLFile</span><span class="sc">;</span> | 
|  | 1005  992   <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">"Table"</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">"Table With This Compound"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1006  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> | 
|  | 1007  994 | 
|  | 1008  995   <span class="c"># Setup a link to next compound...</span> | 
|  | 1009  996   <span class="k">if</span> <span class="s">(</span><span class="i">$NextCmpdNum</span><span class="s">)</span> <span class="s">{</span> | 
|  | 1010  997     <span class="i">$HTMLFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">"Cmpd"</span> . <span class="i">$NextCmpdNum</span> . <span class="q">".html"</span><span class="sc">;</span> | 
|  | 1011  998     <span class="i">$HTMLRefFile</span> = <span class="q">"./${HTMLFile}"</span><span class="sc">;</span> | 
|  | 1012  999     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">"Next"</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">"Next Compound"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1013 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> | 
|  | 1014 1001   <span class="s">}</span> | 
|  | 1015 1002 | 
|  | 1016 1003   <span class="c"># Setup a link to last compund</span> | 
|  | 1017 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> | 
|  | 1018 1005     <span class="i">$HTMLFile</span> = <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] . <span class="q">"Cmpd"</span> . <span class="i">$LastCmpdNum</span> . <span class="q">".html"</span><span class="sc">;</span> | 
|  | 1019 1006     <span class="i">$HTMLRefFile</span> = <span class="q">"./${HTMLFile}"</span><span class="sc">;</span> | 
|  | 1020 1007     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">"Last"</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">"Last Compound"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1021 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> | 
|  | 1022 1009   <span class="s">}</span> | 
|  | 1023 1010 | 
|  | 1024 1011   <span class="c"># Setup current table info text....</span> | 
|  | 1025 1012   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">"&nbsp"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1026 1013   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">"&nbsp"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1027 1014   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">"Showing $CurCmpdNum of $LastCmpdNum"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1028 1015 | 
|  | 1029 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> | 
|  | 1030 1017 | 
|  | 1031 1018   <span class="c"># End link table...</span> | 
|  | 1032 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> | 
|  | 1033 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> | 
|  | 1034 1021   <span class="k">print</span> <span class="i">$CmpdHTMLFileRef</span> <span class="i">SetupHTMLAlignmentEnd</span><span class="s">(</span><span class="q">"center"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1035 1022 <span class="s">}</span> | 
|  | 1036 1023 | 
|  | 1037 1024 <span class="c"># Setup navigation link information for each table.</span> | 
|  | 1038 1025 <span class="c">#</span> | 
|  | 1039 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> | 
|  | 1040 1027 <span class="c"># First set: Current, Next, and LastTable</span> | 
|  | 1041 1028 <span class="c"># Last set: FirstTable, Previous and Current.</span> | 
|  | 1042 1029 <span class="c">#</span> | 
|  | 1043 <a name="WriteNavigationLinks-"></a>1030 <span class="k">sub </span><span class="m">WriteNavigationLinks</span> <span class="s">{</span> | 
|  | 1044 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> | 
|  | 1045 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> | 
|  | 1046 1033 | 
|  | 1047 1034   <span class="i">$LinksOffSet</span> = <span class="n">10</span><span class="sc">;</span> | 
|  | 1048 1035 | 
|  | 1049 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> | 
|  | 1050 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> | 
|  | 1051 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> | 
|  | 1052 1039 | 
|  | 1053 1040   <span class="c"># Figure out which links to display for a particular table...</span> | 
|  | 1054 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> | 
|  | 1055 1042   <span class="i">$StartTableNum</span> = <span class="s">(</span><span class="i">$StartTableNum</span> < <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> | 
|  | 1056 1043   <span class="k">if</span> <span class="s">(</span><span class="i">$CurTableNum</span> < <span class="i">$LinksOffSet</span><span class="s">)</span> <span class="s">{</span> | 
|  | 1057 1044     <span class="i">$EndTableNum</span> = <span class="i">$LinksOffSet</span><span class="sc">;</span> | 
|  | 1058 1045   <span class="s">}</span> | 
|  | 1059 1046   <span class="k">else</span> <span class="s">{</span> | 
|  | 1060 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> | 
|  | 1061 1048   <span class="s">}</span> | 
|  | 1062 1049   <span class="i">$EndTableNum</span> = <span class="s">(</span><span class="i">$EndTableNum</span> > <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> | 
|  | 1063 1050 | 
|  | 1064 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">"#8e2323"</span><span class="cm">,</span> <span class="q">"1"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1065 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">""</span><span class="cm">,</span> <span class="q">""</span><span class="cm">,</span> <span class="q">"1"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1066 1053 | 
|  | 1067 1054   <span class="c"># Start link table...</span> | 
|  | 1068 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> | 
|  | 1069 1056   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLAlignmentBegin</span><span class="s">(</span><span class="q">"center"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1070 1057   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLDivBegin</span><span class="s">(</span><span class="q">"tablenav"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1071 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> | 
|  | 1072 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> | 
|  | 1073 1060 | 
|  | 1074 1061   <span class="k">if</span> <span class="s">(</span><span class="i">$OptionsInfo</span>{<span class="w">NavLinksTableInfo</span>} && <span class="i">$OptionsInfo</span>{<span class="w">NavLinksCmpdInfo</span>}<span class="s">)</span> <span class="s">{</span> | 
|  | 1075 1062     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">"Showing table $CurTableNum of $LastTableNum"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1076 1063     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">"&nbsp"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1077 1064     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">"&nbsp"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1078 1065   <span class="s">}</span> | 
|  | 1079 1066 | 
|  | 1080 1067   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">"Tables: "</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1081 1068   <span class="c"># Setup a link to first table...</span> | 
|  | 1082 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> | 
|  | 1083 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> | 
|  | 1084 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> | 
|  | 1085 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> | 
|  | 1086 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> | 
|  | 1087 1074     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">"First"</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">"First Table Containing Compounds $TableStartCmpdNum To $TableEndCmpdNum"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1088 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> | 
|  | 1089 1076   <span class="s">}</span> | 
|  | 1090 1077 | 
|  | 1091 1078   <span class="c"># Setup link to previous table...</span> | 
|  | 1092 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> | 
|  | 1093 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> | 
|  | 1094 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> | 
|  | 1095 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> | 
|  | 1096 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> | 
|  | 1097 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> | 
|  | 1098 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> | 
|  | 1099 1086     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">"Previous"</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">"Previous Table Containing Compounds $TableStartCmpdNum To $TableEndCmpdNum"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1100 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> | 
|  | 1101 1088   <span class="s">}</span> | 
|  | 1102 1089 | 
|  | 1103 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> | 
|  | 1104 1091     <span class="i">$TableIndex</span> = <span class="i">$TableNum</span> - <span class="n">1</span><span class="sc">;</span> | 
|  | 1105 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> | 
|  | 1106 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> | 
|  | 1107 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> | 
|  | 1108 1095     <span class="s">}</span> | 
|  | 1109 1096     <span class="k">else</span> <span class="s">{</span> | 
|  | 1110 1097       <span class="c"># Setup the link...</span> | 
|  | 1111 1098       <span class="k">my</span><span class="s">(</span><span class="i">$RefTitle</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1112 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> | 
|  | 1113 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> | 
|  | 1114 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">" Table Containing Compounds $TableStartCmpdNum To $TableEndCmpdNum"</span><span class="sc">;</span> | 
|  | 1115 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> | 
|  | 1116 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> | 
|  | 1117 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> | 
|  | 1118 1105     <span class="s">}</span> | 
|  | 1119 1106   <span class="s">}</span> | 
|  | 1120 1107 | 
|  | 1121 1108   <span class="c"># Setup link to next table...</span> | 
|  | 1122 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> | 
|  | 1123 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> | 
|  | 1124 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> | 
|  | 1125 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> | 
|  | 1126 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> | 
|  | 1127 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> | 
|  | 1128 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> | 
|  | 1129 1116     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">"Next"</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">"Next Table Containing Compounds $TableStartCmpdNum To $TableEndCmpdNum"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1130 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> | 
|  | 1131 1118   <span class="s">}</span> | 
|  | 1132 1119 | 
|  | 1133 1120   <span class="c"># Setup link to last table...</span> | 
|  | 1134 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> | 
|  | 1135 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> | 
|  | 1136 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> | 
|  | 1137 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> | 
|  | 1138 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> | 
|  | 1139 1126     <span class="i">$HTMLRefValue</span> = <span class="i">SetupHTMLHRef</span><span class="s">(</span><span class="q">"Last"</span><span class="cm">,</span> <span class="i">$HTMLRefFile</span><span class="cm">,</span> <span class="q">"Last Table Containing Compounds $TableStartCmpdNum To $TableEndCmpdNum"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1140 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> | 
|  | 1141 1128   <span class="s">}</span> | 
|  | 1142 1129   <span class="c"># Setup current table info text....</span> | 
|  | 1143 1130   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">"&nbsp"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1144 1131   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">"&nbsp"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1145 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> | 
|  | 1146 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> | 
|  | 1147 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> | 
|  | 1148 1135     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">"Showing compounds $TableStartCmpdNum to $TableEndCmpdNum of $LastCmpdNum"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1149 1136   <span class="s">}</span> | 
|  | 1150 1137   <span class="k">else</span> <span class="s">{</span> | 
|  | 1151 1138     <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLTableRowDataValue</span><span class="s">(</span><span class="q">"Showing table $CurTableNum of $LastTableNum"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1152 1139   <span class="s">}</span> | 
|  | 1153 1140 | 
|  | 1154 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> | 
|  | 1155 1142   <span class="c"># End link table...</span> | 
|  | 1156 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> | 
|  | 1157 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> | 
|  | 1158 1145   <span class="k">print</span> <span class="i">$HTMLFileRef</span> <span class="i">SetupHTMLAlignmentEnd</span><span class="s">(</span><span class="q">"center"</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1159 1146 <span class="s">}</span> | 
|  | 1160 1147 | 
|  | 1161 1148 <span class="c"># Generate relative directory path...</span> | 
|  | 1162 <a name="GetRelativeFileDir-"></a>1149 <span class="k">sub </span><span class="m">GetRelativeFileDir</span> <span class="s">{</span> | 
|  | 1163 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> | 
|  | 1164 1151   <span class="k">my</span><span class="s">(</span><span class="i">$RelativeFileDir</span><span class="s">)</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 1165 1152 | 
|  | 1166 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> | 
|  | 1167 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">".\/"</span> <span class="co">:</span> <span class="q">".\/html\/"</span><span class="sc">;</span> | 
|  | 1168 1155   <span class="s">}</span> | 
|  | 1169 1156   <span class="k">else</span> <span class="s">{</span> | 
|  | 1170 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">"..\/"</span> <span class="co">:</span> <span class="q">".\/"</span><span class="sc">;</span> | 
|  | 1171 1158   <span class="s">}</span> | 
|  | 1172 1159   <span class="k">return</span> <span class="i">$RelativeFileDir</span><span class="sc">;</span> | 
|  | 1173 1160 <span class="s">}</span> | 
|  | 1174 1161 | 
|  | 1175 1162 <span class="c"># Based on hightlight stype, return appropriate colors for background or text...</span> | 
|  | 1176 <a name="GetValueHighlightColors-"></a>1163 <span class="k">sub </span><span class="m">GetValueHighlightColors</span> <span class="s">{</span> | 
|  | 1177 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> | 
|  | 1178 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> | 
|  | 1179 1166 | 
|  | 1180 1167   <span class="i">$BgColor</span> = <span class="q">""</span><span class="sc">;</span> <span class="i">$FontColor</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 1181 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> | 
|  | 1182 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> | 
|  | 1183 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> | 
|  | 1184 1171 | 
|  | 1185 1172   <span class="i">$ValueOk</span> = <span class="n">0</span><span class="sc">;</span> | 
|  | 1186 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> | 
|  | 1187 1174   <span class="j">NUMSWITCH:</span> <span class="s">{</span> | 
|  | 1188 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> >= <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> | 
|  | 1189 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> <= <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> | 
|  | 1190 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> | 
|  | 1191 1178       <span class="i">$Nothing</span> = <span class="n">1</span><span class="sc">;</span> | 
|  | 1192 1179     <span class="s">}</span> | 
|  | 1193 1180   <span class="s">}</span> | 
|  | 1194 1181   <span class="k">else</span> <span class="s">{</span> | 
|  | 1195 1182   <span class="j">TEXTSWITCH:</span> <span class="s">{</span> | 
|  | 1196 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> | 
|  | 1197 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> | 
|  | 1198 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> | 
|  | 1199 1186       <span class="i">$Nothing</span> = <span class="n">1</span><span class="sc">;</span> | 
|  | 1200 1187     <span class="s">}</span> | 
|  | 1201 1188   <span class="s">}</span> | 
|  | 1202 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> | 
|  | 1203 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> | 
|  | 1204 1191     <span class="i">$BgColor</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 1205 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> | 
|  | 1206 1193   <span class="s">}</span> | 
|  | 1207 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> | 
|  | 1208 1195 <span class="s">}</span> | 
|  | 1209 1196 | 
|  | 1210 1197 <span class="c">#Make sure appropriate mode specific option values are specified...</span> | 
|  | 1211 <a name="ProcessOptions-"></a>1198 <span class="k">sub </span><span class="m">ProcessOptions</span> <span class="s">{</span> | 
|  | 1212 1199 | 
|  | 1213 1200   <span class="i">%OptionsInfo</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1214 1201 | 
|  | 1215 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> | 
|  | 1216 1203 | 
|  | 1217 1204   <span class="i">$OptionsInfo</span>{<span class="w">RowHAlignment</span>} = <span class="q">"left"</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">RowVAlignment</span>} = <span class="q">"middle"</span><span class="sc">;</span> | 
|  | 1218 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> | 
|  | 1219 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">","</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">align</span>}<span class="sc">;</span> | 
|  | 1220 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> | 
|  | 1221 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> | 
|  | 1222 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> | 
|  | 1223 1210     <span class="s">}</span> | 
|  | 1224 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> | 
|  | 1225 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> | 
|  | 1226 1213     <span class="s">}</span> | 
|  | 1227 1214     <span class="k">else</span> <span class="s">{</span> | 
|  | 1228 1215       <span class="k">die</span> <span class="q">"Error: Invalid number of values, "</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">", specified by \"-a --align\" option.\nIt must contain only one or two values.\n"</span><span class="sc">;</span> | 
|  | 1229 1216     <span class="s">}</span> | 
|  | 1230 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> | 
|  | 1231 1218       <span class="k">die</span> <span class="q">"Error: The horizontal alignment value specified, $Options{align}, for option \"-a --align\" is not valid. Allowed values: left, center, or right\n"</span><span class="sc">;</span> | 
|  | 1232 1219     <span class="s">}</span> | 
|  | 1233 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> | 
|  | 1234 1221       <span class="k">die</span> <span class="q">"Error: The horizontal alignment value specified, $Options{align}, for option \"-a --align\" is not valid. Allowed values: top, middle, or bottom\n"</span><span class="sc">;</span> | 
|  | 1235 1222     <span class="s">}</span> | 
|  | 1236 1223   <span class="s">}</span> | 
|  | 1237 1224 | 
|  | 1238 1225   <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowHAlignment</span>} = <span class="q">"center"</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">TableHeaderRowVAlignment</span>} = <span class="q">"middle"</span><span class="sc">;</span> | 
|  | 1239 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> | 
|  | 1240 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">","</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">headeralign</span>}<span class="sc">;</span> | 
|  | 1241 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> | 
|  | 1242 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> | 
|  | 1243 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> | 
|  | 1244 1231     <span class="s">}</span> | 
|  | 1245 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> | 
|  | 1246 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> | 
|  | 1247 1234     <span class="s">}</span> | 
|  | 1248 1235     <span class="k">else</span> <span class="s">{</span> | 
|  | 1249 1236       <span class="k">die</span> <span class="q">"Error: Invalid number of values, "</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">", specified by \"--headeralign\" option.\nIt must contain only one or two value.\n"</span><span class="sc">;</span> | 
|  | 1250 1237     <span class="s">}</span> | 
|  | 1251 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> | 
|  | 1252 1239       <span class="k">die</span> <span class="q">"Error: The horizontal alignment value specified, $Options{headeralign}, for option \"--headeralign\" is not valid. Allowed values: left, center, or right\n"</span><span class="sc">;</span> | 
|  | 1253 1240     <span class="s">}</span> | 
|  | 1254 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> | 
|  | 1255 1242       <span class="k">die</span> <span class="q">"Error: The horizontal alignment value specified, $Options{headeralign}, for option \"-a --headeralign\" is not valid. Allowed values: top, middle, or bottom\n"</span><span class="sc">;</span> | 
|  | 1256 1243     <span class="s">}</span> | 
|  | 1257 1244   <span class="s">}</span> | 
|  | 1258 1245 | 
|  | 1259 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> | 
|  | 1260 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> | 
|  | 1261 1248   <span class="s">}</span> | 
|  | 1262 1249   <span class="k">else</span> <span class="s">{</span> | 
|  | 1263 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> | 
|  | 1264 1251   <span class="s">}</span> | 
|  | 1265 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> | 
|  | 1266 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> | 
|  | 1267 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">""</span><span class="sc">;</span> | 
|  | 1268 1255 | 
|  | 1269 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> | 
|  | 1270 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> | 
|  | 1271 1258   <span class="s">}</span> | 
|  | 1272 1259   <span class="k">else</span> <span class="s">{</span> | 
|  | 1273 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">""</span> <span class="co">:</span> <span class="q">"#e0e9eb"</span><span class="sc">;</span> | 
|  | 1274 1261   <span class="s">}</span> | 
|  | 1275 1262 | 
|  | 1276 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> | 
|  | 1277 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> | 
|  | 1278 1265     <span class="i">$OptionsInfo</span>{<span class="w">NavLinksAtTop</span>} = <span class="n">1</span><span class="sc">;</span> | 
|  | 1279 1266   <span class="s">}</span> | 
|  | 1280 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> | 
|  | 1281 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> | 
|  | 1282 1269     <span class="i">$OptionsInfo</span>{<span class="w">NavLinksCmpdInfo</span>} = <span class="n">1</span><span class="sc">;</span> | 
|  | 1283 1270     <span class="i">$OptionsInfo</span>{<span class="w">NavLinksTableInfo</span>} = <span class="n">1</span><span class="sc">;</span> | 
|  | 1284 1271   <span class="s">}</span> | 
|  | 1285 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> | 
|  | 1286 1273     <span class="i">$OptionsInfo</span>{<span class="w">NavLinksCmpdInfo</span>} = <span class="n">1</span><span class="sc">;</span> | 
|  | 1287 1274     <span class="i">$OptionsInfo</span>{<span class="w">NavLinksTableInfo</span>} = <span class="n">0</span><span class="sc">;</span> | 
|  | 1288 1275   <span class="s">}</span> | 
|  | 1289 1276 | 
|  | 1290 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> | 
|  | 1291 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> | 
|  | 1292 1279       <span class="k">die</span> <span class="q">"Error: No stylesheet name specified using \"--stylesheetname\" option: It is required for \"old\" value of \"-s --stylesheet\" option. \n"</span><span class="sc">;</span> | 
|  | 1293 1280     <span class="s">}</span> | 
|  | 1294 1281   <span class="s">}</span> | 
|  | 1295 1282 | 
|  | 1296 1283   <span class="k">my</span><span class="s">(</span><span class="i">@ColorValues</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1297 1284   <span class="i">$OptionsInfo</span>{<span class="w">ShadeRowsStatus</span>} = <span class="n">0</span><span class="sc">;</span> | 
|  | 1298 1285   <span class="i">$OptionsInfo</span>{<span class="w">OddRowsShadeColor</span>} = <span class="q">"#ffffff"</span><span class="sc">;</span> | 
|  | 1299 1286   <span class="i">$OptionsInfo</span>{<span class="w">EvenRowsShadeColor</span>} = <span class="q">"#e0e9eb"</span><span class="sc">;</span> | 
|  | 1300 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> | 
|  | 1301 1288     <span class="c"># Make sure only one value is specified...</span> | 
|  | 1302 1289     <span class="i">@ColorValues</span> = <span class="k">split</span> <span class="q">","</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">shadecolor</span>}<span class="sc">;</span> | 
|  | 1303 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> | 
|  | 1304 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> | 
|  | 1305 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> | 
|  | 1306 1293     <span class="s">}</span> | 
|  | 1307 1294     <span class="k">else</span> <span class="s">{</span> | 
|  | 1308 1295       <span class="k">die</span> <span class="q">"Error: Invalid number of values, "</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">", specified by \"--shadecolor\" option.\nIt must contain only two value.\n"</span><span class="sc">;</span> | 
|  | 1309 1296     <span class="s">}</span> | 
|  | 1310 1297   <span class="s">}</span> | 
|  | 1311 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> | 
|  | 1312 1299     <span class="i">$OptionsInfo</span>{<span class="w">ShadeRowsStatus</span>} = <span class="n">1</span><span class="sc">;</span> | 
|  | 1313 1300   <span class="s">}</span> | 
|  | 1314 1301 | 
|  | 1315 1302   <span class="i">$OptionsInfo</span>{<span class="w">SettingUpCmpdSummaryPage</span>} = <span class="n">0</span><span class="sc">;</span> | 
|  | 1316 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">"#e0e9eb"</span><span class="sc">;</span> | 
|  | 1317 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> | 
|  | 1318 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> | 
|  | 1319 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> | 
|  | 1320 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> | 
|  | 1321 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> && <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">"$Options{strlinktitle}"</span> <span class="co">:</span> <span class="q">"Compound Summary"</span><span class="sc">;</span> | 
|  | 1322 1309 | 
|  | 1323 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> && <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> | 
|  | 1324 1311 | 
|  | 1325 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> | 
|  | 1326 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> | 
|  | 1327 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">","</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">strtablesize</span>}<span class="sc">;</span> | 
|  | 1328 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> | 
|  | 1329 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> | 
|  | 1330 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> | 
|  | 1331 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> | 
|  | 1332 1319         <span class="k">die</span> <span class="q">"Error: The first value specified, $OptionsInfo{StrTableRows},  for option \"--strtablesize\" is not valid: Allowed integer values: > 0.\n"</span><span class="sc">;</span> | 
|  | 1333 1320       <span class="s">}</span> | 
|  | 1334 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> | 
|  | 1335 1322         <span class="k">die</span> <span class="q">"Error: The first value specified, $OptionsInfo{StrTableCols},  for option \"--strtablesize\" is not valid: Allowed integer values: > 0.\n"</span><span class="sc">;</span> | 
|  | 1336 1323       <span class="s">}</span> | 
|  | 1337 1324     <span class="s">}</span> | 
|  | 1338 1325     <span class="k">else</span> <span class="s">{</span> | 
|  | 1339 1326       <span class="k">die</span> <span class="q">"Error: Invalid number of values, "</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">", specified by \"--strtablesize\" option.\nIt must contain only two value for structuresonly \"-m --mode\" option.\n"</span><span class="sc">;</span> | 
|  | 1340 1327     <span class="s">}</span> | 
|  | 1341 1328   <span class="s">}</span> | 
|  | 1342 1329 | 
|  | 1343 1330   <span class="c"># Setup applet information...</span> | 
|  | 1344 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">"/Jmol"</span><span class="sc">;</span> | 
|  | 1345 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> | 
|  | 1346 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> | 
|  | 1347 1334 | 
|  | 1348 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> | 
|  | 1349 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> | 
|  | 1350 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">","</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">strviewerconfig</span>}<span class="sc">;</span> | 
|  | 1351 1338     <span class="k">if</span> <span class="s">(</span><span class="i">@StrViewerConfigParts</span> >=<span class="n">1</span> && <span class="i">@StrViewerConfigParts</span> <= <span class="n">3</span><span class="s">)</span> <span class="s">{</span> | 
|  | 1352 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> | 
|  | 1353 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> | 
|  | 1354 1341         <span class="i">$StrViewerAppletArchive</span> = <span class="i">$StrViewerConfigParts</span>[<span class="n">1</span>]<span class="sc">;</span> | 
|  | 1355 1342         <span class="i">$StrViewerAppletCode</span> = <span class="i">$StrViewerConfigParts</span>[<span class="n">2</span>]<span class="sc">;</span> | 
|  | 1356 1343       <span class="s">}</span> | 
|  | 1357 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> | 
|  | 1358 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> | 
|  | 1359 1346         <span class="i">$StrViewerAppletArchive</span> = <span class="i">$StrViewerConfigParts</span>[<span class="n">1</span>]<span class="sc">;</span> | 
|  | 1360 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> | 
|  | 1361 1348         <span class="i">$StrViewerAppletCode</span> = <span class="i">$AppletCode</span><span class="sc">;</span> | 
|  | 1362 1349       <span class="s">}</span> | 
|  | 1363 1350       <span class="k">else</span> <span class="s">{</span> | 
|  | 1364 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> | 
|  | 1365 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> | 
|  | 1366 1353       <span class="s">}</span> | 
|  | 1367 1354     <span class="s">}</span> | 
|  | 1368 1355     <span class="k">else</span> <span class="s">{</span> | 
|  | 1369 1356       <span class="k">die</span> <span class="q">"Error: Invalid number of values, "</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">", specified by \"--strviewerconfig\" option.\nNumver of allowed values:1 to 3 \n"</span><span class="sc">;</span> | 
|  | 1370 1357     <span class="s">}</span> | 
|  | 1371 1358   <span class="s">}</span> | 
|  | 1372 1359   <span class="k">else</span> <span class="s">{</span> | 
|  | 1373 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> | 
|  | 1374 1361       <span class="k">die</span> <span class="q">"Error: No codebase specified using \"--strviewerconfig\" option for $OptionsInfo{StrViewerType} structure viewer\n"</span><span class="sc">;</span> | 
|  | 1375 1362     <span class="s">}</span> | 
|  | 1376 1363     <span class="k">if</span> <span class="s">(</span><span class="i">$StrViewerEmbedUsingJS</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> | 
|  | 1377 1364       <span class="k">die</span> <span class="q">"Error: No codebase specified using \"--strviewerconfig\" option for javascript value of \"--strviewerembed\" option for $OptionsInfo{StrViewerType} structure viewer \n"</span><span class="sc">;</span> | 
|  | 1378 1365     <span class="s">}</span> | 
|  | 1379 1366   <span class="s">}</span> | 
|  | 1380 1367 | 
|  | 1381 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> | 
|  | 1382 1369     <span class="c"># Change local code base direcrory name to a relative directory name based on the</span> | 
|  | 1383 1370     <span class="c"># current directory containing SD file; otherwise, Java applets and JavaScripts don't</span> | 
|  | 1384 1371     <span class="c"># get loaded into Firefox and Chrome browsers.</span> | 
|  | 1385 1372     <span class="c">#</span> | 
|  | 1386 1373     <span class="c"># For top and sub HTML directories, add prefix "../" and "../../" to relative path...</span> | 
|  | 1387 1374     <span class="i">$OptionsInfo</span>{<span class="w">StrViewerCodeBase</span>} = <span class="w">File::Spec</span><span class="w">->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> | 
|  | 1388 1375 | 
|  | 1389 1376     <span class="i">$OptionsInfo</span>{<span class="w">TopHTMLDirStrViewerCodeBase</span>} = <span class="q">"../"</span> . <span class="i">$OptionsInfo</span>{<span class="w">StrViewerCodeBase</span>}<span class="sc">;</span> | 
|  | 1390 1377     <span class="i">$OptionsInfo</span>{<span class="w">SubHTMLDirStrViewerCodeBase</span>} = <span class="q">"../../"</span> . <span class="i">$OptionsInfo</span>{<span class="w">StrViewerCodeBase</span>}<span class="sc">;</span> | 
|  | 1391 1378   <span class="s">}</span> | 
|  | 1392 1379 | 
|  | 1393 1380   <span class="c"># Setup structure viewer parameter information...</span> | 
|  | 1394 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> | 
|  | 1395 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> | 
|  | 1396 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> | 
|  | 1397 1384     <span class="c">#@ParamsSplit = split " ", $Options{strviewerparams};</span> | 
|  | 1398 1385     <span class="i">@ParamsSplit</span> = <span class="i">quotewords</span><span class="s">(</span><span class="q">" "</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> | 
|  | 1399 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> | 
|  | 1400 1387       <span class="i">@ParamPairSplit</span> = <span class="k">split</span> <span class="q">"="</span><span class="cm">,</span> <span class="i">$ParamPair</span><span class="sc">;</span> | 
|  | 1401 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> | 
|  | 1402 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> | 
|  | 1403 1390       <span class="s">}</span> | 
|  | 1404 1391       <span class="k">else</span> <span class="s">{</span> | 
|  | 1405 1392         <span class="k">die</span> <span class="q">"Error: Invalid value, $ParamPair, specified by \"--strviewerparams\" option.\nValid values: name=value\n"</span><span class="sc">;</span> | 
|  | 1406 1393       <span class="s">}</span> | 
|  | 1407 1394     <span class="s">}</span> | 
|  | 1408 1395   <span class="s">}</span> | 
|  | 1409 1396 | 
|  | 1410 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> | 
|  | 1411 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> | 
|  | 1412 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> | 
|  | 1413 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> | 
|  | 1414 1401   <span class="s">}</span> | 
|  | 1415 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> | 
|  | 1416 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> | 
|  | 1417 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> | 
|  | 1418 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> | 
|  | 1419 1406 | 
|  | 1420 1407   <span class="i">$OptionsInfo</span>{<span class="w">StrLinkWidth</span>} = <span class="n">500</span><span class="sc">;</span> | 
|  | 1421 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> | 
|  | 1422 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> | 
|  | 1423 1410     <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">strlinkwidth</span>} = <span class="q">""</span><span class="sc">;</span> | 
|  | 1424 1411   <span class="s">}</span> | 
|  | 1425 1412   <span class="i">$OptionsInfo</span>{<span class="w">StrLinkHeight</span>} = <span class="n">295</span><span class="sc">;</span> | 
|  | 1426 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> | 
|  | 1427 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> | 
|  | 1428 1415     <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">strlinkheight</span>} = <span class="q">""</span><span class="sc">;</span> | 
|  | 1429 1416   <span class="s">}</span> | 
|  | 1430 1417 | 
|  | 1431 1418   <span class="i">$OptionsInfo</span>{<span class="w">StrBgColorSpecified</span>} = <span class="q">""</span><span class="sc">;</span> | 
|  | 1432 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> | 
|  | 1433 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> | 
|  | 1434 1421   <span class="s">}</span> | 
|  | 1435 1422 | 
|  | 1436 1423   <span class="i">$OptionsInfo</span>{<span class="w">StrLinkBgColorSpecified</span>} = <span class="q">"#ffffff"</span><span class="sc">;</span> | 
|  | 1437 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> | 
|  | 1438 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> | 
|  | 1439 1426     <span class="i">$OptionsInfo</span>{<span class="w">StrViewerParams</span>}{<span class="w">strlinkbgcolor</span>} = <span class="q">""</span><span class="sc">;</span> | 
|  | 1440 1427   <span class="s">}</span> | 
|  | 1441 1428 | 
|  | 1442 1429   <span class="c"># Setup Java Script usage...</span> | 
|  | 1443 1430   <span class="i">$OptionsInfo</span>{<span class="w">StrViewerJSFileRef</span>} = <span class="q">""</span><span class="sc">;</span> | 
|  | 1444 1431   <span class="i">$OptionsInfo</span>{<span class="w">TopHTMLDirStrViewerJSFileRef</span>} = <span class="q">""</span><span class="sc">;</span> | 
|  | 1445 1432   <span class="i">$OptionsInfo</span>{<span class="w">SubHTMLDirStrViewerJSFileRef</span>} = <span class="q">""</span><span class="sc">;</span> | 
|  | 1446 1433 | 
|  | 1447 1434   <span class="k">if</span> <span class="s">(</span><span class="i">$StrViewerEmbedUsingJS</span><span class="s">)</span> <span class="s">{</span> | 
|  | 1448 1435     <span class="k">my</span> <span class="s">(</span><span class="i">$StrViewerJSFileName</span><span class="s">)</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 1449 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> | 
|  | 1450 1437       <span class="i">$StrViewerJSFileName</span> = <span class="i">$Options</span>{<span class="w">strviewerjsfile</span>}<span class="sc">;</span> | 
|  | 1451 1438     <span class="s">}</span> | 
|  | 1452 1439     <span class="k">else</span> <span class="s">{</span> | 
|  | 1453 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> | 
|  | 1454 1441         <span class="i">$StrViewerJSFileName</span> = <span class="q">"Jmol.js"</span><span class="sc">;</span> | 
|  | 1455 1442       <span class="s">}</span> | 
|  | 1456 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> | 
|  | 1457 1444         <span class="i">$StrViewerJSFileName</span> = <span class="q">"marvin.js"</span><span class="sc">;</span> | 
|  | 1458 1445       <span class="s">}</span> | 
|  | 1459 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> | 
|  | 1460 1447         <span class="i">$StrViewerJSFileName</span> = <span class="q">"chemdraw.js"</span><span class="sc">;</span> | 
|  | 1461 1448       <span class="s">}</span> | 
|  | 1462 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> | 
|  | 1463 1450         <span class="i">$StrViewerJSFileName</span> = <span class="q">"chem3d.js"</span><span class="sc">;</span> | 
|  | 1464 1451       <span class="s">}</span> | 
|  | 1465 1452     <span class="s">}</span> | 
|  | 1466 1453     <span class="k">if</span> <span class="s">(</span><span class="i">$StrViewerJSFileName</span><span class="s">)</span> <span class="s">{</span> | 
|  | 1467 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> | 
|  | 1468 1455       <span class="i">$OptionsInfo</span>{<span class="w">StrViewerJSFileRef</span>} = <span class="q">"$OptionsInfo{StrViewerCodeBase}"</span> . <span class="q">"\/"</span> . <span class="q">"$StrViewerJSFileName"</span><span class="sc">;</span> | 
|  | 1469 1456       <span class="i">$OptionsInfo</span>{<span class="w">TopHTMLDirStrViewerJSFileRef</span>} = <span class="q">"$OptionsInfo{TopHTMLDirStrViewerCodeBase}"</span> . <span class="q">"\/"</span> . <span class="q">"$StrViewerJSFileName"</span><span class="sc">;</span> | 
|  | 1470 1457       <span class="i">$OptionsInfo</span>{<span class="w">SubHTMLDirStrViewerJSFileRef</span>} = <span class="q">"$OptionsInfo{SubHTMLDirStrViewerCodeBase}"</span> . <span class="q">"\/"</span> . <span class="q">"$StrViewerJSFileName"</span><span class="sc">;</span> | 
|  | 1471 1458     <span class="s">}</span> | 
|  | 1472 1459   <span class="s">}</span> | 
|  | 1473 1460 | 
|  | 1474 1461   <span class="c"># Check any other user specified parametrs applicable to all structure viewers...</span> | 
|  | 1475 1462 | 
|  | 1476 1463   <span class="i">$OptionsInfo</span>{<span class="w">StructuresOnlyMode</span>} = <span class="n">0</span><span class="sc">;</span> | 
|  | 1477 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> | 
|  | 1478 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> | 
|  | 1479 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> | 
|  | 1480 1467   <span class="s">}</span> | 
|  | 1481 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> | 
|  | 1482 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>} > <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> | 
|  | 1483 1470     <span class="i">$OptionsInfo</span>{<span class="w">StructuresOnlyMode</span>} = <span class="n">1</span><span class="sc">;</span> | 
|  | 1484 1471   <span class="s">}</span> | 
|  | 1485 1472   <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataField</span>} = <span class="q">""</span><span class="sc">;</span> | 
|  | 1486 1473   <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldLabel</span>} = <span class="q">"no"</span><span class="sc">;</span> | 
|  | 1487 1474   <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldPosition</span>} = <span class="q">"bottom"</span><span class="sc">;</span> | 
|  | 1488 1475   <span class="i">$OptionsInfo</span>{<span class="w">CmpdDataFieldAlignment</span>} = <span class="q">"center"</span><span class="sc">;</span> | 
|  | 1489 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> && <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> | 
|  | 1490 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">","</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">cmpddatafield</span>}<span class="sc">;</span> | 
|  | 1491 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> | 
|  | 1492 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> | 
|  | 1493 1480     <span class="s">}</span> | 
|  | 1494 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> | 
|  | 1495 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> | 
|  | 1496 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> | 
|  | 1497 1484     <span class="s">}</span> | 
|  | 1498 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> | 
|  | 1499 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> | 
|  | 1500 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> | 
|  | 1501 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> | 
|  | 1502 1489     <span class="s">}</span> | 
|  | 1503 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> | 
|  | 1504 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> | 
|  | 1505 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> | 
|  | 1506 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> | 
|  | 1507 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> | 
|  | 1508 1495     <span class="s">}</span> | 
|  | 1509 1496     <span class="k">else</span> <span class="s">{</span> | 
|  | 1510 1497       <span class="k">die</span> <span class="q">"Error: Invalid number of values, "</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">", specified by \"--cmpddatafield\" option.\nIt must contain only one, two, three, or four values.\n"</span><span class="sc">;</span> | 
|  | 1511 1498     <span class="s">}</span> | 
|  | 1512 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> | 
|  | 1513 1500       <span class="k">die</span> <span class="q">"Error: The label value specified, $Options{cmpddatafield}, for option \"--cmpddatafield\" is not valid. Allowed values: yes or no\n"</span><span class="sc">;</span> | 
|  | 1514 1501     <span class="s">}</span> | 
|  | 1515 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> | 
|  | 1516 1503       <span class="k">die</span> <span class="q">"Error: The position value specified, $Options{cmpddatafield}, for option \"--cmpddatafield\" is not valid. Allowed values: top or bottom\n"</span><span class="sc">;</span> | 
|  | 1517 1504     <span class="s">}</span> | 
|  | 1518 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> | 
|  | 1519 1506       <span class="k">die</span> <span class="q">"Error: The alignment value specified, $Options{cmpddatafield}, for option \"--cmpddatafield\" is not valid. Allowed values: left, center, or right\n"</span><span class="sc">;</span> | 
|  | 1520 1507     <span class="s">}</span> | 
|  | 1521 1508   <span class="s">}</span> | 
|  | 1522 1509 | 
|  | 1523 1510   <span class="c"># Process data fields to be displayed in tables...</span> | 
|  | 1524 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">"All"</span><span class="sc">;</span> | 
|  | 1525 1512 | 
|  | 1526 1513   <span class="i">$OptionsInfo</span>{<span class="w">ValueOkColor</span>} = <span class="q">""</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">ValueNotOkColor</span>} = <span class="q">""</span><span class="sc">;</span> <span class="i">$OptionsInfo</span>{<span class="w">HighlightStatus</span>} = <span class="n">0</span><span class="sc">;</span> | 
|  | 1527 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> | 
|  | 1528 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> | 
|  | 1529 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> | 
|  | 1530 1517 | 
|  | 1531 1518     <span class="i">$OptionsInfo</span>{<span class="w">HighlightStatus</span>} = <span class="n">1</span><span class="sc">;</span> | 
|  | 1532 1519     <span class="i">$OptionsInfo</span>{<span class="w">ValueOkColor</span>} = <span class="q">"#0fff0f"</span><span class="sc">;</span> | 
|  | 1533 1520     <span class="i">$OptionsInfo</span>{<span class="w">ValueNotOkColor</span>} = <span class="q">"#ff0f0f"</span><span class="sc">;</span> | 
|  | 1534 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> | 
|  | 1535 1522       <span class="i">$OptionsInfo</span>{<span class="w">ValueOkColor</span>} = <span class="q">"#0fbb0f"</span><span class="sc">;</span> | 
|  | 1536 1523       <span class="i">$OptionsInfo</span>{<span class="w">ValueNotOkColor</span>} = <span class="q">"#ff0f0f"</span><span class="sc">;</span> | 
|  | 1537 1524     <span class="s">}</span> | 
|  | 1538 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> | 
|  | 1539 1526       <span class="c"># Make sure two values are specified...</span> | 
|  | 1540 1527       <span class="i">@ColorValues</span> = <span class="k">split</span> <span class="q">","</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">highlightcolor</span>}<span class="sc">;</span> | 
|  | 1541 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> | 
|  | 1542 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> | 
|  | 1543 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> | 
|  | 1544 1531       <span class="s">}</span> | 
|  | 1545 1532       <span class="k">else</span> <span class="s">{</span> | 
|  | 1546 1533         <span class="k">die</span> <span class="q">"Error: Invalid number of values, "</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">", specified by \"--highlightcolor\" option.\nIt must contain only two value for $HighlightMode value specified using \"-m --mode\" option.\n"</span><span class="sc">;</span> | 
|  | 1547 1534       <span class="s">}</span> | 
|  | 1548 1535     <span class="s">}</span> | 
|  | 1549 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> | 
|  | 1550 1537       <span class="k">die</span> <span class="q">"Error: Specify columns to be highlighted using \"--hightlight\" option\n"</span><span class="sc">;</span> | 
|  | 1551 1538     <span class="s">}</span> | 
|  | 1552 1539     <span class="c"># Retrieve quartet values from "hightlight" option...</span> | 
|  | 1553 1540     <span class="k">my</span><span class="s">(</span><span class="i">@HighlightValueQuartets</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1554 1541 | 
|  | 1555 1542     <span class="i">@HighlightValueQuartets</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1556 1543     <span class="i">@HighlightValueQuartets</span> = <span class="k">split</span> <span class="q">","</span><span class="cm">,</span> <span class="i">$Options</span>{<span class="w">highlight</span>}<span class="sc">;</span> | 
|  | 1557 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> | 
|  | 1558 1545       <span class="k">die</span> <span class="q">"Error: Quartets not found in values specified using \"--highlight\" option for $HighlightMode \"-m --mode\"\n"</span><span class="sc">;</span> | 
|  | 1559 1546     <span class="s">}</span> | 
|  | 1560 1547     <span class="c"># Process quartets...</span> | 
|  | 1561 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> | 
|  | 1562 1549 | 
|  | 1563 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> | 
|  | 1564 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> | 
|  | 1565 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> | 
|  | 1566 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> | 
|  | 1567 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> | 
|  | 1568 1555 | 
|  | 1569 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> < <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> | 
|  | 1570 1557       <span class="i">$Label</span> = <span class="i">$HighlightValueQuartets</span>[<span class="i">$Index</span>]<span class="sc">;</span> | 
|  | 1571 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> | 
|  | 1572 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> | 
|  | 1573 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> | 
|  | 1574 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> | 
|  | 1575 1562         <span class="k">die</span> <span class="q">"Error: Invalid column data type, $DataType, specified in quartet, \"$Label,$DataType,$Criterion,$Value\", using \"--hightlight\" option: Valid values: numeric or text\n"</span><span class="sc">;</span> | 
|  | 1576 1563       <span class="s">}</span> | 
|  | 1577 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> | 
|  | 1578 1565         <span class="k">die</span> <span class="q">"Error: Invalid criterion value, $Criterion, specified in quartet, \"$Label,$DataType,$Criterion,$Value\", using \"--hightlight\" option: Valid values: le, ge, or eq\n"</span><span class="sc">;</span> | 
|  | 1579 1566       <span class="s">}</span> | 
|  | 1580 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> | 
|  | 1581 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> | 
|  | 1582 1569           <span class="k">die</span> <span class="q">"Error: Invalid criterion value, $Value, specified in quartet, \"$Label,$DataType,$Criterion,$Value\", using \"--hightlight\" option: Numeric value required for numeric data type\n"</span><span class="sc">;</span> | 
|  | 1583 1570         <span class="s">}</span> | 
|  | 1584 1571       <span class="s">}</span> | 
|  | 1585 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> | 
|  | 1586 1573         <span class="k">die</span> <span class="q">"Error: Invalid field label value, $Label, in quartet, \"$Label,$DataType,$Criterion,$Value\", using \"--hightlight\" option: Multiple occurences of label.  \n"</span><span class="sc">;</span> | 
|  | 1587 1574       <span class="s">}</span> | 
|  | 1588 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> | 
|  | 1589 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> | 
|  | 1590 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> | 
|  | 1591 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> | 
|  | 1592 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> | 
|  | 1593 1580     <span class="s">}</span> | 
|  | 1594 1581   <span class="s">}</span> | 
|  | 1595 1582 <span class="s">}</span> | 
|  | 1596 1583 | 
|  | 1597 1584 <span class="c"># Set up default archive and code values for a specific applet...</span> | 
|  | 1598 <a name="SetupDefaultAppletArchiveAndCode-"></a>1585 <span class="k">sub </span><span class="m">SetupDefaultAppletArchiveAndCode</span> <span class="s">{</span> | 
|  | 1599 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> | 
|  | 1600 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> | 
|  | 1601 1588 | 
|  | 1602 1589  <span class="j">STRVIEWERTYPE:</span> <span class="s">{</span> | 
|  | 1603 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">"JME.jar"</span><span class="sc">;</span> <span class="i">$Code</span> = <span class="q">"JME"</span><span class="sc">;</span> <span class="k">last</span> <span class="j">STRVIEWERTYPE</span><span class="sc">;</span> <span class="s">}</span> | 
|  | 1604 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">"JmolApplet.jar"</span><span class="sc">;</span> <span class="i">$Code</span> = <span class="q">"JmolApplet"</span><span class="sc">;</span>  <span class="k">last</span> <span class="j">STRVIEWERTYPE</span><span class="sc">;</span> <span class="s">}</span> | 
|  | 1605 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">"marvin.jar"</span><span class="sc">;</span> <span class="i">$Code</span> = <span class="q">"MView"</span><span class="sc">;</span> <span class="k">last</span> <span class="j">STRVIEWERTYPE</span><span class="sc">;</span> <span class="s">}</span> | 
|  | 1606 1593     <span class="i">$Nothing</span> = <span class="n">1</span><span class="sc">;</span> | 
|  | 1607 1594   <span class="s">}</span> | 
|  | 1608 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> | 
|  | 1609 1596 <span class="s">}</span> | 
|  | 1610 1597 | 
|  | 1611 1598 <span class="c"># Retrieve information about input SD files...</span> | 
|  | 1612 <a name="RetrieveSDFilesInfo-"></a>1599 <span class="k">sub </span><span class="m">RetrieveSDFilesInfo</span> <span class="s">{</span> | 
|  | 1613 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> | 
|  | 1614 1601 | 
|  | 1615 1602   <span class="i">%SDFilesInfo</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1616 1603 | 
|  | 1617 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> | 
|  | 1618 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> | 
|  | 1619 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> | 
|  | 1620 1607 | 
|  | 1621 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> | 
|  | 1622 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> | 
|  | 1623 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> | 
|  | 1624 1611 | 
|  | 1625 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> | 
|  | 1626 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> | 
|  | 1627 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> | 
|  | 1628 1615 | 
|  | 1629 1616 | 
|  | 1630 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> | 
|  | 1631 1618     <span class="i">$SDFile</span> = <span class="i">$SDFilesList</span>[<span class="i">$Index</span>]<span class="sc">;</span> | 
|  | 1632 1619 | 
|  | 1633 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> | 
|  | 1634 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> | 
|  | 1635 1622     <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] = <span class="q">""</span><span class="sc">;</span> | 
|  | 1636 1623     <span class="i">$SDFilesInfo</span>{<span class="w">HTMLTitle</span>}[<span class="i">$Index</span>] = <span class="q">""</span><span class="sc">;</span> | 
|  | 1637 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> | 
|  | 1638 1625     <span class="i">$SDFilesInfo</span>{<span class="w">TopHTMLDir</span>}[<span class="i">$Index</span>] = <span class="q">""</span><span class="sc">;</span> | 
|  | 1639 1626     <span class="i">$SDFilesInfo</span>{<span class="w">SubHTMLDir</span>}[<span class="i">$Index</span>] = <span class="q">""</span><span class="sc">;</span> | 
|  | 1640 1627     <span class="i">$SDFilesInfo</span>{<span class="w">SubMolDir</span>}[<span class="i">$Index</span>] = <span class="q">""</span><span class="sc">;</span> | 
|  | 1641 1628 | 
|  | 1642 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> | 
|  | 1643 1630 | 
|  | 1644 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> | 
|  | 1645 1632       <span class="k">warn</span> <span class="q">"Warning: Ignoring file $SDFile: It doesn't exist\n"</span><span class="sc">;</span> | 
|  | 1646 1633       <span class="k">next</span> <span class="j">FILELIST</span><span class="sc">;</span> | 
|  | 1647 1634     <span class="s">}</span> | 
|  | 1648 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">"sd sdf"</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> | 
|  | 1649 1636       <span class="k">warn</span> <span class="q">"Warning: Ignoring file $SDFile: It's not a SD file\n"</span><span class="sc">;</span> | 
|  | 1650 1637       <span class="k">next</span> <span class="j">FILELIST</span><span class="sc">;</span> | 
|  | 1651 1638     <span class="s">}</span> | 
|  | 1652 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> | 
|  | 1653 1640 | 
|  | 1654 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">"$SDFile"</span><span class="s">)</span> <span class="s">{</span> | 
|  | 1655 1642       <span class="k">warn</span> <span class="q">"Warning: Ignoring file $SDFile: Couldn't open it: $! \n"</span><span class="sc">;</span> | 
|  | 1656 1643       <span class="k">next</span> <span class="j">FILELIST</span><span class="sc">;</span> | 
|  | 1657 1644     <span class="s">}</span> | 
|  | 1658 1645     <span class="c"># Count number of compounds and collect all possible data field labels...</span> | 
|  | 1659 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> | 
|  | 1660 1647     <span class="i">$CmpdCount</span> = <span class="n">0</span><span class="sc">;</span> | 
|  | 1661 1648     <span class="i">@DataFieldLabels</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1662 1649     <span class="i">@CommonDataFieldLabels</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1663 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> | 
|  | 1664 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> | 
|  | 1665 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> | 
|  | 1666 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> | 
|  | 1667 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> | 
|  | 1668 1655     <span class="s">}</span> | 
|  | 1669 1656     <span class="k">else</span> <span class="s">{</span> | 
|  | 1670 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> | 
|  | 1671 1658         <span class="i">$CmpdCount</span>++<span class="sc">;</span> | 
|  | 1672 1659       <span class="s">}</span> | 
|  | 1673 1660     <span class="s">}</span> | 
|  | 1674 1661     <span class="k">close</span> <span class="w">SDFILE</span><span class="sc">;</span> | 
|  | 1675 1662 | 
|  | 1676 1663     <span class="i">$FileDir</span> = <span class="q">""</span><span class="sc">;</span> <span class="i">$FileName</span> = <span class="q">""</span><span class="sc">;</span> <span class="i">$FileExt</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 1677 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> | 
|  | 1678 1665     <span class="i">$HTMLRoot</span> = <span class="i">$FileName</span><span class="sc">;</span> | 
|  | 1679 1666     <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">root</span>} && <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> | 
|  | 1680 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> | 
|  | 1681 1668       <span class="k">if</span> <span class="s">(</span><span class="i">$RootFileName</span> && <span class="i">$RootFileExt</span><span class="s">)</span> <span class="s">{</span> | 
|  | 1682 1669         <span class="i">$HTMLRoot</span> = <span class="i">$RootFileName</span><span class="sc">;</span> | 
|  | 1683 1670       <span class="s">}</span> | 
|  | 1684 1671       <span class="k">else</span> <span class="s">{</span> | 
|  | 1685 1672         <span class="i">$HTMLRoot</span> = <span class="i">$Options</span>{<span class="w">root</span>}<span class="sc">;</span> | 
|  | 1686 1673       <span class="s">}</span> | 
|  | 1687 1674     <span class="s">}</span> | 
|  | 1688 1675     <span class="i">$HTMLTitle</span> = <span class="i">$HTMLRoot</span><span class="sc">;</span> | 
|  | 1689 1676     <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">title</span>} && <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> | 
|  | 1690 1677       <span class="i">$HTMLTitle</span> = <span class="i">$Options</span>{<span class="w">title</span>}<span class="sc">;</span> | 
|  | 1691 1678     <span class="s">}</span> | 
|  | 1692 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">"-html"</span><span class="sc">;</span> | 
|  | 1693 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> | 
|  | 1694 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> | 
|  | 1695 1682         <span class="k">warn</span> <span class="q">"Warning: Ignoring file $SDFile: The directory $HTMLFile already exists\n"</span><span class="sc">;</span> | 
|  | 1696 1683         <span class="k">next</span> <span class="j">FILELIST</span><span class="sc">;</span> | 
|  | 1697 1684       <span class="s">}</span> | 
|  | 1698 1685     <span class="s">}</span> | 
|  | 1699 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> | 
|  | 1700 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> | 
|  | 1701 1688     <span class="i">$SDFilesInfo</span>{<span class="w">HTMLRoot</span>}[<span class="i">$Index</span>] = <span class="q">"$HTMLRoot"</span><span class="sc">;</span> | 
|  | 1702 1689     <span class="i">$SDFilesInfo</span>{<span class="w">HTMLTitle</span>}[<span class="i">$Index</span>] = <span class="q">"$HTMLTitle"</span><span class="sc">;</span> | 
|  | 1703 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> <= <span class="i">$OptionsInfo</span>{<span class="w">MaxCmpdsPerTable</span>}<span class="s">)</span> <span class="s">{</span> | 
|  | 1704 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> | 
|  | 1705 1692     <span class="s">}</span> | 
|  | 1706 1693     <span class="k">else</span> <span class="s">{</span> | 
|  | 1707 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> | 
|  | 1708 1695     <span class="s">}</span> | 
|  | 1709 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> | 
|  | 1710 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> | 
|  | 1711 1698     <span class="s">}</span> | 
|  | 1712 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> | 
|  | 1713 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> | 
|  | 1714 1701     <span class="s">}</span> | 
|  | 1715 1702     <span class="k">else</span> <span class="s">{</span> | 
|  | 1716 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">","</span><span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">SpecifiedDataFields</span>}<span class="s">)</span><span class="sc">;</span> | 
|  | 1717 1704     <span class="s">}</span> | 
|  | 1718 1705 | 
|  | 1719 1706     <span class="c"># Setup HTML data directories paths...</span> | 
|  | 1720 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">"-html"</span><span class="sc">;</span> | 
|  | 1721 1708     <span class="i">$SDFilesInfo</span>{<span class="w">TopHTMLDir</span>}[<span class="i">$Index</span>] = <span class="q">"$TopHTMLDir"</span><span class="sc">;</span> | 
|  | 1722 1709     <span class="i">$SDFilesInfo</span>{<span class="w">SubHTMLDir</span>}[<span class="i">$Index</span>] = <span class="q">"$TopHTMLDir\/html"</span><span class="sc">;</span> | 
|  | 1723 1710     <span class="i">$SDFilesInfo</span>{<span class="w">SubMolDir</span>}[<span class="i">$Index</span>] = <span class="q">"$TopHTMLDir\/mol"</span><span class="sc">;</span> | 
|  | 1724 1711   <span class="s">}</span> | 
|  | 1725 1712 <span class="s">}</span> | 
|  | 1726 1713 | 
|  | 1727 1714 <span class="c"># Setup information...</span> | 
|  | 1728 <a name="SetupMultipleTablesAndMiscInfo-"></a>1715 <span class="k">sub </span><span class="m">SetupMultipleTablesAndMiscInfo</span> <span class="s">{</span> | 
|  | 1729 1716   <span class="i">SetupMultipleTablesInfo</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1730 1717   <span class="i">SetupMiscInfo</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1731 1718 <span class="s">}</span> | 
|  | 1732 1719 | 
|  | 1733 1720 <span class="c"># Setup navigation link information for multiple tables...</span> | 
|  | 1734 <a name="SetupMultipleTablesInfo-"></a>1721 <span class="k">sub </span><span class="m">SetupMultipleTablesInfo</span> <span class="s">{</span> | 
|  | 1735 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> | 
|  | 1736 1723 | 
|  | 1737 1724   <span class="i">$LinesPerTable</span> = <span class="i">$OptionsInfo</span>{<span class="w">MaxCmpdsPerTable</span>}<span class="sc">;</span> | 
|  | 1738 1725 | 
|  | 1739 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> | 
|  | 1740 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> | 
|  | 1741 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> | 
|  | 1742 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> | 
|  | 1743 1730 | 
|  | 1744 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> | 
|  | 1745 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> | 
|  | 1746 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> | 
|  | 1747 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> | 
|  | 1748 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> | 
|  | 1749 1736 | 
|  | 1750 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> | 
|  | 1751 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> | 
|  | 1752 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> | 
|  | 1753 1740 | 
|  | 1754 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> | 
|  | 1755 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> | 
|  | 1756 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> | 
|  | 1757 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> | 
|  | 1758 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> | 
|  | 1759 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> | 
|  | 1760 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> | 
|  | 1761 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> | 
|  | 1762 1749 | 
|  | 1763 1750           <span class="c"># Setup HTML file names for all the tables...</span> | 
|  | 1764 1751           <span class="i">$Name</span> = <span class="q">"Cmpd"</span> . <span class="q">"$TableStartLineNum"</span> . <span class="q">"To"</span> . <span class="q">"$TableEndLineNum"</span><span class="sc">;</span> | 
|  | 1765 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> | 
|  | 1766 1753             <span class="i">$Name</span> = <span class="q">""</span><span class="sc">;</span> | 
|  | 1767 1754           <span class="s">}</span> | 
|  | 1768 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">".html"</span><span class="sc">;</span> | 
|  | 1769 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> | 
|  | 1770 1757         <span class="s">}</span> | 
|  | 1771 1758         <span class="c">#print "$SDFilesList[$Index]: $TableCount -  @{$SDFilesInfo{TableStartCmpdNum}[$Index]} - @{$SDFilesInfo{TableEndCmpdNum}[$Index]} -  @{$SDFilesInfo{TableHTMLFiles}[$Index]}\n";</span> | 
|  | 1772 1759       <span class="s">}</span> | 
|  | 1773 1760     <span class="s">}</span> | 
|  | 1774 1761   <span class="s">}</span> | 
|  | 1775 1762 <span class="s">}</span> | 
|  | 1776 1763 | 
|  | 1777 1764 <span class="c"># Setup HTML tags and other information...</span> | 
|  | 1778 <a name="SetupMiscInfo-"></a>1765 <span class="k">sub </span><span class="m">SetupMiscInfo</span> <span class="s">{</span> | 
|  | 1779 1766   <span class="i">$SDFilesInfo</span>{<span class="w">RowHeaderTags</span>} = <span class="q">""</span><span class="sc">;</span> | 
|  | 1780 1767   <span class="i">$SDFilesInfo</span>{<span class="w">RowEndTags</span>} = <span class="q">""</span><span class="sc">;</span> | 
|  | 1781 1768   <span class="i">$SDFilesInfo</span>{<span class="w">BgFilledOddRowHeaderTags</span>} = <span class="q">""</span><span class="sc">;</span> | 
|  | 1782 1769   <span class="i">$SDFilesInfo</span>{<span class="w">BgFilledEvenRowHeaderTags</span>} = <span class="q">""</span><span class="sc">;</span> | 
|  | 1783 1770   <span class="i">$SDFilesInfo</span>{<span class="w">TableRowHeaderTags</span>} = <span class="q">""</span><span class="sc">;</span> | 
|  | 1784 1771 | 
|  | 1785 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">""</span><span class="cm">,</span> <span class="i">$OptionsInfo</span>{<span class="w">RowVAlignment</span>}<span class="s">)</span><span class="sc">;</span> | 
|  | 1786 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> | 
|  | 1787 1774 | 
|  | 1788 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> | 
|  | 1789 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> | 
|  | 1790 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> | 
|  | 1791 1778   <span class="s">}</span> | 
|  | 1792 1779 | 
|  | 1793 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> | 
|  | 1794 1781 | 
|  | 1795 1782   <span class="i">$SDFilesInfo</span>{<span class="w">MolEndTag</span>} = <span class="q">"M  END"</span><span class="sc">;</span> | 
|  | 1796 1783   <span class="i">$SDFilesInfo</span>{<span class="w">White</span>} = <span class="q">qq(#ffffff)</span><span class="sc">;</span> | 
|  | 1797 1784 <span class="s">}</span> | 
|  | 1798 1785 | 
|  | 1799 1786 <span class="c"># Setup various data directories to hold HTML and other related files...</span> | 
|  | 1800 <a name="SetupDataDirs-"></a>1787 <span class="k">sub </span><span class="m">SetupDataDirs</span> <span class="s">{</span> | 
|  | 1801 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> | 
|  | 1802 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> | 
|  | 1803 1790 | 
|  | 1804 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> | 
|  | 1805 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> | 
|  | 1806 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> | 
|  | 1807 1794 | 
|  | 1808 1795   <span class="c"># Clean up existing directories...</span> | 
|  | 1809 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> | 
|  | 1810 1797     <span class="k">unlink</span> <span class="q">"<$TopHTMLDir/*.html>"</span><span class="sc">;</span> | 
|  | 1811 1798     <span class="k">unlink</span> <span class="q">"<$TopHTMLDir/*.css>"</span><span class="sc">;</span> | 
|  | 1812 1799   <span class="s">}</span> | 
|  | 1813 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> | 
|  | 1814 1801     <span class="k">unlink</span> <span class="q">"<$SubHTMLDir/*.html>"</span><span class="sc">;</span> | 
|  | 1815 1802   <span class="s">}</span> | 
|  | 1816 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> | 
|  | 1817 1804     <span class="k">unlink</span> <span class="q">"<$SubMolDir/*.mol>"</span><span class="sc">;</span> | 
|  | 1818 1805   <span class="s">}</span> | 
|  | 1819 1806 | 
|  | 1820 1807   <span class="c"># What directories need to be created...</span> | 
|  | 1821 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> | 
|  | 1822 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> | 
|  | 1823 1810   <span class="i">$CreateSubMolDir</span> = <span class="n">0</span><span class="sc">;</span> | 
|  | 1824 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> | 
|  | 1825 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> | 
|  | 1826 1813   <span class="s">}</span> | 
|  | 1827 1814 | 
|  | 1828 1815   <span class="c"># Create appropriate directories...</span> | 
|  | 1829 1816   <span class="k">if</span> <span class="s">(</span><span class="i">$CreateTopHTMLDir</span><span class="s">)</span> <span class="s">{</span> | 
|  | 1830 1817     <span class="k">mkdir</span> <span class="i">$TopHTMLDir</span> <span class="k">or</span> <span class="k">die</span> <span class="q">"Couldn't mkdir $TopHTMLDir: $! \n"</span><span class="sc">;</span> | 
|  | 1831 1818   <span class="s">}</span> | 
|  | 1832 1819   <span class="k">if</span> <span class="s">(</span><span class="i">$CreateSubHTMLDir</span><span class="s">)</span> <span class="s">{</span> | 
|  | 1833 1820     <span class="k">mkdir</span> <span class="i">$SubHTMLDir</span> <span class="k">or</span> <span class="k">die</span> <span class="q">"Error: Couldn't mkdir $SubHTMLDir: $! \n"</span><span class="sc">;</span> | 
|  | 1834 1821   <span class="s">}</span> | 
|  | 1835 1822   <span class="k">else</span> <span class="s">{</span> | 
|  | 1836 1823     <span class="k">unlink</span> <span class="q"><$SubHTMLDir/*.html></span><span class="sc">;</span> | 
|  | 1837 1824   <span class="s">}</span> | 
|  | 1838 1825   <span class="k">if</span> <span class="s">(</span><span class="i">$CreateSubMolDir</span><span class="s">)</span> <span class="s">{</span> | 
|  | 1839 1826     <span class="k">mkdir</span> <span class="i">$SubMolDir</span> <span class="k">or</span> <span class="k">die</span> <span class="q">"Error: Couldn't mkdir $SubMolDir: $! \n"</span><span class="sc">;</span> | 
|  | 1840 1827   <span class="s">}</span> | 
|  | 1841 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> | 
|  | 1842 1829 <span class="s">}</span> | 
|  | 1843 1830 | 
|  | 1844 1831 <span class="c"># Setup script usage  and retrieve command line arguments specified using various options...</span> | 
|  | 1845 <a name="SetupScriptUsage-"></a>1832 <span class="k">sub </span><span class="m">SetupScriptUsage</span> <span class="s">{</span> | 
|  | 1846 1833 | 
|  | 1847 1834   <span class="c"># Retrieve all the options...</span> | 
|  | 1848 1835   <span class="i">%Options</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span> | 
|  | 1849 1836 | 
|  | 1850 1837   <span class="i">$Options</span>{<span class="w">mode</span>} = <span class="q">"shade"</span><span class="sc">;</span> | 
|  | 1851 1838   <span class="i">$Options</span>{<span class="w">highlightstyle</span>} = <span class="q">"background"</span><span class="sc">;</span> | 
|  | 1852 1839 | 
|  | 1853 1840   <span class="i">$Options</span>{<span class="w">cellpadding</span>} = <span class="n">2</span><span class="sc">;</span> | 
|  | 1854 1841   <span class="i">$Options</span>{<span class="w">cellspacing</span>} = <span class="n">1</span><span class="sc">;</span> | 
|  | 1855 1842 | 
|  | 1856 1843   <span class="i">$Options</span>{<span class="w">displaylinks</span>} = <span class="q">"both"</span><span class="sc">;</span> | 
|  | 1857 1844   <span class="i">$Options</span>{<span class="w">displaylinksinfo</span>} = <span class="q">"both"</span><span class="sc">;</span> | 
|  | 1858 1845   <span class="i">$Options</span>{<span class="w">stylesheet</span>} = <span class="q">"new"</span><span class="sc">;</span> | 
|  | 1859 1846 | 
|  | 1860 1847   <span class="i">$Options</span>{<span class="w">structure</span>} = <span class="q">"display"</span><span class="sc">;</span> | 
|  | 1861 1848   <span class="i">$Options</span>{<span class="w">strlinktype</span>} = <span class="q">"href"</span><span class="sc">;</span> | 
|  | 1862 1849   <span class="i">$Options</span>{<span class="w">strlinkmode</span>} = <span class="q">"plain"</span><span class="sc">;</span> | 
|  | 1863 1850   <span class="i">$Options</span>{<span class="w">strlinknavigation</span>} = <span class="q">"yes"</span><span class="sc">;</span> | 
|  | 1864 1851   <span class="i">$Options</span>{<span class="w">strlinktitledisplay</span>} = <span class="q">"no"</span><span class="sc">;</span> | 
|  | 1865 1852 | 
|  | 1866 1853   <span class="i">$Options</span>{<span class="w">strviewertype</span>} = <span class="q">"Jmol"</span><span class="sc">;</span> | 
|  | 1867 1854   <span class="i">$Options</span>{<span class="w">strviewerembed</span>} = <span class="q">"direct"</span><span class="sc">;</span> | 
|  | 1868 1855 | 
|  | 1869 1856   <span class="i">$Options</span>{<span class="w">titledisplay</span>} = <span class="q">"yes"</span><span class="sc">;</span> | 
|  | 1870 1857 | 
|  | 1871 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">"align|a=s"</span><span class="cm">,</span> <span class="q">"border|b=i"</span><span class="cm">,</span> <span class="q">"cellpadding=i"</span><span class="cm">,</span> <span class="q">"cellspacing=i"</span><span class="cm">,</span> <span class="q">"cmpddatafield|c=s"</span><span class="cm">,</span> <span class="q">"datafields=s"</span><span class="cm">,</span> <span class="q">"footer=s"</span><span class="cm">,</span> <span class="q">"displaylinks|d=s"</span><span class="cm">,</span> <span class="q">"displaylinksinfo=s"</span><span class="cm">,</span> <span class="q">"help|h"</span><span class="cm">,</span> <span class="q">"headeralign=s"</span><span class="cm">,</span> <span class="q">"headercolor=s"</span><span class="cm">,</span> <span class="q">"highlight=s"</span><span class="cm">,</span> <span class="q">"highlightcolor=s"</span><span class="cm">,</span> <span class="q">"highlightstyle=s"</span><span class="cm">,</span> <span class="q">"mode|m=s"</span><span class="cm">,</span> <span class="q">"numcmpds|n=i"</span><span class="cm">,</span> <span class="q">"overwrite|o"</span><span class="cm">,</span> <span class="q">"root|r=s"</span><span class="cm">,</span> <span class="q">"shadecolor=s"</span><span class="cm">,</span> <span class="q">"stylesheet=s"</span><span class="cm">,</span> <span class="q">"stylesheetname=s"</span><span class="cm">,</span> <span class="q">"structure|s=s"</span><span class="cm">,</span> <span class="q">"strlinkmode=s"</span><span class="cm">,</span> <span class="q">"strlinknavigation=s"</span><span class="cm">,</span> <span class="q">"strlinkshadecolor=s"</span><span class="cm">,</span> <span class="q">"strlinktitle=s"</span><span class="cm">,</span> <span class="q">"strlinktitledisplay=s"</span><span class="cm">,</span> <span class="q">"strlinktype=s"</span><span class="cm">,</span> <span class="q">"strviewertype=s"</span><span class="cm">,</span> <span class="q">"strviewerconfig=s"</span><span class="cm">,</span> <span class="q">"strviewerparams=s"</span><span class="cm">,</span> <span class="q">"strviewerembed=s"</span><span class="cm">,</span>  <span class="q">"strviewerjsfile=s"</span><span class="cm">,</span> <span class="q">"strtablesize=s"</span><span class="cm">,</span> <span class="q">"title|t=s"</span><span class="cm">,</span> <span class="q">"titledisplay=s"</span><span class="cm">,</span> <span class="q">"workingdir|w=s"</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> | 
|  | 1872 1859     <span class="k">die</span> <span class="q">"\nTo get a list of valid options and their values, use \"$ScriptName -h\" or\n\"perl -S $ScriptName -h\" command and try again...\n"</span><span class="sc">;</span> | 
|  | 1873 1860   <span class="s">}</span> | 
|  | 1874 1861 | 
|  | 1875 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> | 
|  | 1876 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> | 
|  | 1877 1864       <span class="k">die</span> <span class="q">"Error: The value specified, $Options{workingdir}, for option \"-w --workingdir\" is not a directory name.\n"</span><span class="sc">;</span> | 
|  | 1878 1865     <span class="s">}</span> | 
|  | 1879 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">"Error: Couldn't chdir $Options{workingdir}: $! \n"</span><span class="sc">;</span> | 
|  | 1880 1867   <span class="s">}</span> | 
|  | 1881 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> | 
|  | 1882 1869     <span class="k">die</span> <span class="q">"Error: The value specified, $Options{displaylinks}, for option \"-d --displaylinks\" is not valid. Allowed values: top, bottom, or both\n"</span><span class="sc">;</span> | 
|  | 1883 1870   <span class="s">}</span> | 
|  | 1884 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> | 
|  | 1885 1872     <span class="k">die</span> <span class="q">"Error: The value specified, $Options{displaylinksinfo}, for option \"--displaylinksinfo\" is not valid. Allowed values: compound, table, or both\n"</span><span class="sc">;</span> | 
|  | 1886 1873   <span class="s">}</span> | 
|  | 1887 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> | 
|  | 1888 1875     <span class="k">die</span> <span class="q">"Error: The value specified, $Options{highlightstyle}, for option \"--highlightstyle\" is not valid. Allowed values: background or text\n"</span><span class="sc">;</span> | 
|  | 1889 1876   <span class="s">}</span> | 
|  | 1890 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> | 
|  | 1891 1878     <span class="k">die</span> <span class="q">"Error: The value specified, $Options{mode}, for option \"-m --mode\" is not valid. Allowed values: plain, shade, hightlight, shadedhighlight, structuresonly, or shadedstructuresonly\n"</span><span class="sc">;</span> | 
|  | 1892 1879   <span class="s">}</span> | 
|  | 1893 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> | 
|  | 1894 1881     <span class="k">die</span> <span class="q">"Error: The value specified, $Options{stylesheet}, for option \"-s --stylesheet\" is not valid. Allowed values: old, new, or none\n"</span><span class="sc">;</span> | 
|  | 1895 1882   <span class="s">}</span> | 
|  | 1896 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> | 
|  | 1897 1884     <span class="k">die</span> <span class="q">"Error: The value specified, $Options{structure}, for option \"-s --structure\" is not valid. Allowed values: display or link\n"</span><span class="sc">;</span> | 
|  | 1898 1885   <span class="s">}</span> | 
|  | 1899 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> | 
|  | 1900 1887     <span class="k">die</span> <span class="q">"Error: The value specified, $Options{strlinkmode}, for option \"--strlinkmode\" is not valid. Allowed values: plain or shade\n"</span><span class="sc">;</span> | 
|  | 1901 1888   <span class="s">}</span> | 
|  | 1902 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> | 
|  | 1903 1890     <span class="k">die</span> <span class="q">"Error: The value specified, $Options{strlinktype}, for option \"--strlinktype\" is not valid. Allowed values: href or button\n"</span><span class="sc">;</span> | 
|  | 1904 1891   <span class="s">}</span> | 
|  | 1905 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> | 
|  | 1906 1893     <span class="k">die</span> <span class="q">"Error: The value specified, $Options{strlinknavigation}, for option \"--strlinknavigation\" is not valid. Allowed values: yes or no\n"</span><span class="sc">;</span> | 
|  | 1907 1894   <span class="s">}</span> | 
|  | 1908 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> | 
|  | 1909 1896     <span class="k">die</span> <span class="q">"Error: The value specified, $Options{strlinktitledisplay}, for option \"--strlinktitledisplay\" is not valid. Allowed values: yes or no\n"</span><span class="sc">;</span> | 
|  | 1910 1897   <span class="s">}</span> | 
|  | 1911 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> | 
|  | 1912 1899     <span class="k">die</span> <span class="q">"Error: The value specified, $Options{strviewertype}, for option \"--strviewertype\" is not valid. Allowed values: Chem3DActiveX, ChemDrawActiveX, ChemDrawPlugIn, Chime, JME, Jmol, MarvinView, or ViewerActiveX.\n"</span><span class="sc">;</span> | 
|  | 1913 1900   <span class="s">}</span> | 
|  | 1914 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> | 
|  | 1915 1902     <span class="k">die</span> <span class="q">"Error: The value specified, $Options{strviewerembed},  for option \"--strviewerembed\" is not valid. Allowed values: direct or javascript \n"</span><span class="sc">;</span> | 
|  | 1916 1903   <span class="s">}</span> | 
|  | 1917 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>} && <span class="i">$Options</span>{<span class="w">numcmpds</span>} < <span class="n">0</span><span class="s">)</span> <span class="s">{</span> | 
|  | 1918 1905     <span class="k">die</span> <span class="q">"Error: The value specified, $Options{numcmpds},  for option \"-n --numcmpds\" is not valid. Allowed values: >= 0 \n"</span><span class="sc">;</span> | 
|  | 1919 1906   <span class="s">}</span> | 
|  | 1920 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> | 
|  | 1921 1908     <span class="k">die</span> <span class="q">"Error: The value specified, $Options{titledisplay}, for option \"--titledisplay\" is not valid. Allowed values: yes or no\n"</span><span class="sc">;</span> | 
|  | 1922 1909   <span class="s">}</span> | 
|  | 1923 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> | 
|  | 1924 1911     <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">border</span>} < <span class="n">0</span><span class="s">)</span> <span class="s">{</span> | 
|  | 1925 1912       <span class="k">die</span> <span class="q">"Error: The value specified, $Options{border},  for option \"--border\" is not valid. Allowed values: >= 0 \n"</span><span class="sc">;</span> | 
|  | 1926 1913     <span class="s">}</span> | 
|  | 1927 1914   <span class="s">}</span> | 
|  | 1928 1915   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">cellpadding</span>} < <span class="n">0</span><span class="s">)</span> <span class="s">{</span> | 
|  | 1929 1916     <span class="k">die</span> <span class="q">"Error: The value specified, $Options{cellpadding},  for option \"--cellpadding\" is not valid. Allowed values: >= 0 \n"</span><span class="sc">;</span> | 
|  | 1930 1917   <span class="s">}</span> | 
|  | 1931 1918   <span class="k">if</span> <span class="s">(</span><span class="i">$Options</span>{<span class="w">cellspacing</span>} < <span class="n">0</span><span class="s">)</span> <span class="s">{</span> | 
|  | 1932 1919     <span class="k">die</span> <span class="q">"Error: The value specified, $Options{cellspacing},  for option \"--cellspacing\" is not valid. Allowed values: >= 0 \n"</span><span class="sc">;</span> | 
|  | 1933 1920   <span class="s">}</span> | 
|  | 1934 1921 <span class="s">}</span> | 
|  | 1935 1922 | 
|  | 1936 <a name="EOF-"></a></pre> | 
|  | 1937 <p> </p> | 
|  | 1938 <br /> | 
|  | 1939 <center> | 
|  | 1940 <img src="../../../images/h2o2.png"> | 
|  | 1941 </center> | 
|  | 1942 </body> | 
|  | 1943 </html> |