view mayachemtools/docs/modules/html/code/HTMLUtil.html @ 0:73ae111cf86f draft

Uploaded
author deepakjadmin
date Wed, 20 Jan 2016 11:55:01 -0500
parents
children
line wrap: on
line source

<html>
<head>
<title>MayaChemTools:Code:HTMLUtil.pm</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../css/MayaChemToolsCode.css">
</head>
<body leftmargin="20" rightmargin="20" topmargin="10" bottommargin="10">
<br/>
<center>
<a href="http://www.mayachemtools.org" title="MayaChemTools Home"><img src="../../../images/MayaChemToolsLogo.gif" border="0" alt="MayaChemTools"></a>
</center>
<br/>
<pre>
<a name="package-HTMLUtil-"></a>   1 <span class="k">package </span><span class="i">HTMLUtil</span><span class="sc">;</span>
   2 <span class="c">#</span>
   3 <span class="c"># $RCSfile: HTMLUtil.pm,v $</span>
   4 <span class="c"># $Date: 2015/02/28 20:47:17 $</span>
   5 <span class="c"># $Revision: 1.42 $</span>
   6 <span class="c">#</span>
   7 <span class="c"># Author: Manish Sud &lt;msud@san.rr.com&gt;</span>
   8 <span class="c">#</span>
   9 <span class="c"># Copyright (C) 2015 Manish Sud. All rights reserved.</span>
  10 <span class="c">#</span>
  11 <span class="c"># This file is part of MayaChemTools.</span>
  12 <span class="c">#</span>
  13 <span class="c"># MayaChemTools is free software; you can redistribute it and/or modify it under</span>
  14 <span class="c"># the terms of the GNU Lesser General Public License as published by the Free</span>
  15 <span class="c"># Software Foundation; either version 3 of the License, or (at your option) any</span>
  16 <span class="c"># later version.</span>
  17 <span class="c">#</span>
  18 <span class="c"># MayaChemTools is distributed in the hope that it will be useful, but without</span>
  19 <span class="c"># any warranty; without even the implied warranty of merchantability of fitness</span>
  20 <span class="c"># for a particular purpose.  See the GNU Lesser General Public License for more</span>
  21 <span class="c"># details.</span>
  22 <span class="c">#</span>
  23 <span class="c"># You should have received a copy of the GNU Lesser General Public License</span>
  24 <span class="c"># along with MayaChemTools; if not, see &lt;http://www.gnu.org/licenses/&gt; or</span>
  25 <span class="c"># write to the Free Software Foundation Inc., 59 Temple Place, Suite 330,</span>
  26 <span class="c"># Boston, MA, 02111-1307, USA.</span>
  27 <span class="c">#</span>
  28 
  29 <span class="k">use</span> <span class="w">strict</span><span class="sc">;</span>
  30 <span class="k">use</span> <span class="w">Exporter</span><span class="sc">;</span>
  31 
  32 <span class="k">use</span> <span class="w">vars</span> <span class="q">qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS)</span><span class="sc">;</span>
  33 
  34 <span class="i">@ISA</span> = <span class="q">qw(Exporter)</span><span class="sc">;</span>
  35 <span class="i">@EXPORT</span> = <span class="q">qw(InsertHTMLTags SetupHTMLAlignmentBegin SetupHTMLAlignmentEnd SetupHTMLButtonRef SetupHTMLDivBegin SetupHTMLDivEnd SetupHTMLEmptyLines SetupHTMLPageHeader SetupHTMLHRef SetupHTMLPageEnd SetupHTMLPageTitle SetupHTMLStyleSheetTags SetupHTMLTableHeader SetupHTMLTableEnd SetupHTMLTableColumnHeader SetupHTMLTableColumnEnd SetupHTMLTableRowHeader SetupHTMLTableRowEnd SetupHTMLTableRowHeaderValue SetupHTMLTableRowDataValue SetupJavaScriptCmds SetupStrViewerJSInitCmd SetupStrViewerJMEApplet SetupStrViewerJmolApplet SetupStrViewerChimePlugIn SetupStrViewerChem3DActiveX SetupStrViewerChemDrawActiveX SetupStrViewerChemDrawPlugIn SetupStrViewerMarvinViewApplet SetupStrViewerAccelrysActiveX)</span><span class="sc">;</span>
  36 <span class="i">@EXPORT_OK</span> = <span class="q">qw()</span><span class="sc">;</span>
  37 
  38 <span class="i">%EXPORT_TAGS</span> = <span class="s">(</span><span class="w">all</span>  <span class="cm">=&gt;</span> <span class="s">[</span><span class="i">@EXPORT</span><span class="cm">,</span> <span class="i">@EXPORT_OK</span><span class="s">]</span><span class="s">)</span><span class="sc">;</span>
  39 
  40 <span class="c"># Default window size for various supported structure viewers...</span>
  41 <span class="k">my</span><span class="s">(</span><span class="i">$StrViewerWidth</span><span class="cm">,</span> <span class="i">$StrViewerHeight</span><span class="s">)</span> = <span class="s">(</span><span class="n">250</span><span class="cm">,</span> <span class="n">170</span><span class="s">)</span><span class="sc">;</span>
  42 
  43 <span class="c"># Insert specfied tags into existing tag string...</span>
<a name="InsertHTMLTags-"></a>  44 <span class="k">sub </span><span class="m">InsertHTMLTags</span> <span class="s">{</span>
  45   <span class="k">my</span><span class="s">(</span><span class="i">$Tag</span><span class="cm">,</span> <span class="i">%TagsMap</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
  46   <span class="k">my</span><span class="s">(</span><span class="i">$NewTag</span><span class="cm">,</span> <span class="i">$TagName</span><span class="cm">,</span> <span class="i">$TagValue</span><span class="cm">,</span> <span class="i">$TagPart1</span><span class="cm">,</span> <span class="i">$TagPart2</span><span class="s">)</span><span class="sc">;</span>
  47 
  48   <span class="i">$NewTag</span> = <span class="i">$Tag</span><span class="sc">;</span> <span class="i">$TagPart1</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$TagPart2</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
  49   <span class="s">(</span><span class="i">$TagPart1</span><span class="s">)</span> = <span class="i">$Tag</span> =~ <span class="q">/^(.*?)&gt;/</span><span class="sc">;</span>
  50 
  51   <span class="k">if</span> <span class="s">(</span><span class="i">$TagPart1</span> &amp;&amp; <span class="k">length</span><span class="s">(</span><span class="i">$TagPart1</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
  52     <span class="i">$TagPart2</span> = <span class="i">$Tag</span><span class="sc">;</span>
  53     <span class="i">$TagPart2</span> =~ <span class="q">s/^(.*?)&gt;//</span><span class="sc">;</span>
  54     <span class="k">if</span> <span class="s">(</span><span class="i">$TagPart2</span> &amp;&amp; <span class="k">length</span><span class="s">(</span><span class="i">$TagPart2</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
  55       <span class="k">for</span> <span class="i">$TagName</span> <span class="s">(</span><span class="k">keys</span> <span class="i">%TagsMap</span><span class="s">)</span> <span class="s">{</span>
  56         <span class="i">$TagValue</span> = <span class="i">$TagsMap</span>{<span class="i">$TagName</span>}<span class="sc">;</span>
  57         <span class="i">$TagPart1</span> .= <span class="q">qq( $TagName=&quot;$TagValue&quot; )</span><span class="sc">;</span>
  58       <span class="s">}</span>
  59       <span class="i">$NewTag</span> = <span class="q">&quot;${TagPart1}&gt;${TagPart2}&quot;</span><span class="sc">;</span>
  60     <span class="s">}</span>
  61   <span class="s">}</span>
  62 
  63   <span class="k">return</span> <span class="i">$NewTag</span><span class="sc">;</span>
  64 <span class="s">}</span>
  65 
<a name="SetupHTMLAlignmentBegin-"></a>  66 <span class="k">sub </span><span class="m">SetupHTMLAlignmentBegin</span> <span class="s">{</span>
  67   <span class="k">my</span><span class="s">(</span><span class="i">$AlignmentTag</span><span class="cm">,</span> <span class="i">$Alignment</span><span class="s">)</span><span class="sc">;</span>
  68 
  69   <span class="i">$Alignment</span> = <span class="s">(</span><span class="i">@_</span> == <span class="n">1</span><span class="s">)</span> ? <span class="i">$_</span>[<span class="n">0</span>] <span class="co">:</span> <span class="q">&quot;left&quot;</span><span class="sc">;</span>
  70   <span class="i">$AlignmentTag</span> = <span class="q">qq(&lt;$Alignment&gt;\n)</span><span class="sc">;</span>
  71 
  72   <span class="k">return</span> <span class="i">$AlignmentTag</span><span class="sc">;</span>
  73 <span class="s">}</span>
  74 
<a name="SetupHTMLAlignmentEnd-"></a>  75 <span class="k">sub </span><span class="m">SetupHTMLAlignmentEnd</span> <span class="s">{</span>
  76   <span class="k">my</span><span class="s">(</span><span class="i">$AlignmentTag</span><span class="cm">,</span> <span class="i">$Alignment</span><span class="s">)</span><span class="sc">;</span>
  77 
  78   <span class="i">$Alignment</span> = <span class="s">(</span><span class="i">@_</span> == <span class="n">1</span><span class="s">)</span> ? <span class="i">$_</span>[<span class="n">0</span>] <span class="co">:</span> <span class="q">&quot;left&quot;</span><span class="sc">;</span>
  79   <span class="i">$AlignmentTag</span> = <span class="q">qq(&lt;/$Alignment&gt;\n)</span><span class="sc">;</span>
  80 
  81   <span class="k">return</span> <span class="i">$AlignmentTag</span><span class="sc">;</span>
  82 <span class="s">}</span>
  83 
  84 <span class="c"># Setup a button reference...</span>
<a name="SetupHTMLButtonRef-"></a>  85 <span class="k">sub </span><span class="m">SetupHTMLButtonRef</span> <span class="s">{</span>
  86   <span class="k">my</span><span class="s">(</span><span class="i">$ButtonLabel</span><span class="cm">,</span> <span class="i">$RefFile</span><span class="cm">,</span> <span class="i">$ButtonTags</span><span class="s">)</span><span class="sc">;</span>
  87 
  88   <span class="s">(</span><span class="i">$ButtonLabel</span><span class="cm">,</span> <span class="i">$RefFile</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
  89 
  90   <span class="i">$ButtonTags</span> = <span class="q">qq(&lt;input type=&quot;button&quot; value=&quot;$ButtonLabel&quot; onClick=&quot;document.location=&#39;$RefFile&#39;&quot;&gt;)</span><span class="sc">;</span>
  91   <span class="k">return</span> <span class="i">$ButtonTags</span><span class="sc">;</span>
  92 <span class="s">}</span>
  93 
<a name="SetupHTMLDivBegin-"></a>  94 <span class="k">sub </span><span class="m">SetupHTMLDivBegin</span> <span class="s">{</span>
  95   <span class="k">my</span><span class="s">(</span><span class="i">$Id</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
  96   <span class="k">my</span><span class="s">(</span><span class="i">$DivTag</span><span class="s">)</span><span class="sc">;</span>
  97 
  98   <span class="i">$DivTag</span> = <span class="q">qq(&lt;div id=&quot;$Id&quot;&gt;\n)</span><span class="sc">;</span>
  99 
 100   <span class="k">return</span> <span class="i">$DivTag</span><span class="sc">;</span>
 101 <span class="s">}</span>
 102 
<a name="SetupHTMLDivEnd-"></a> 103 <span class="k">sub </span><span class="m">SetupHTMLDivEnd</span> <span class="s">{</span>
 104   <span class="k">my</span><span class="s">(</span><span class="i">$DivTag</span><span class="s">)</span><span class="sc">;</span>
 105 
 106   <span class="i">$DivTag</span> = <span class="q">qq(&lt;/div&gt;\n)</span><span class="sc">;</span>
 107 
 108   <span class="k">return</span> <span class="i">$DivTag</span><span class="sc">;</span>
 109 <span class="s">}</span>
<a name="SetupHTMLEmptyLines-"></a> 110 <span class="k">sub </span><span class="m">SetupHTMLEmptyLines</span> <span class="s">{</span>
 111   <span class="k">my</span><span class="s">(</span><span class="i">$LineCount</span><span class="cm">,</span> <span class="i">$Index</span><span class="cm">,</span> <span class="i">$EmptyLineTags</span><span class="s">)</span><span class="sc">;</span>
 112 
 113   <span class="i">$LineCount</span> = <span class="n">1</span><span class="sc">;</span>
 114   <span class="i">$EmptyLineTags</span> = <span class="q">qq(&lt;p&gt;&amp;nbsp&lt;/p&gt;)</span><span class="sc">;</span>
 115   <span class="s">(</span><span class="i">$LineCount</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 116   <span class="k">if</span> <span class="s">(</span><span class="i">$LineCount</span> &gt; <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
 117     <span class="k">for</span> <span class="i">$Index</span> <span class="s">(</span><span class="n">2</span> .. <span class="i">$LineCount</span><span class="s">)</span> <span class="s">{</span>
 118       <span class="i">$EmptyLineTags</span> .= <span class="q">qq(&lt;p&gt;&amp;nbsp&lt;/p&gt;)</span><span class="sc">;</span>
 119     <span class="s">}</span>
 120   <span class="s">}</span>
 121   <span class="k">return</span> <span class="i">$EmptyLineTags</span><span class="sc">;</span>
 122 <span class="s">}</span>
 123 
 124 <span class="c"># Setup HTML page header...</span>
<a name="SetupHTMLPageHeader-"></a> 125 <span class="k">sub </span><span class="m">SetupHTMLPageHeader</span> <span class="s">{</span>
 126   <span class="k">my</span><span class="s">(</span><span class="i">$HeaderTitle</span><span class="cm">,</span> <span class="i">$Stylesheet</span><span class="cm">,</span> <span class="i">$JavaScript</span><span class="cm">,</span> <span class="i">$PageHeader</span><span class="s">)</span><span class="sc">;</span>
 127 
 128   <span class="i">$HeaderTitle</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>  <span class="i">$Stylesheet</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$JavaScript</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 129   <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">3</span><span class="s">)</span> <span class="s">{</span>
 130     <span class="s">(</span><span class="i">$HeaderTitle</span><span class="cm">,</span> <span class="i">$Stylesheet</span><span class="cm">,</span> <span class="i">$JavaScript</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 131   <span class="s">}</span>
 132   <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
 133     <span class="s">(</span><span class="i">$HeaderTitle</span><span class="cm">,</span> <span class="i">$Stylesheet</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 134   <span class="s">}</span>
 135   <span class="k">else</span> <span class="s">{</span>
 136     <span class="s">(</span><span class="i">$HeaderTitle</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 137   <span class="s">}</span>
 138   <span class="i">$PageHeader</span> = <span class="q">qq(&lt;html&gt;\n)</span><span class="sc">;</span>
 139   <span class="i">$PageHeader</span> .= <span class="q">qq(&lt;head&gt;\n)</span><span class="sc">;</span>
 140   <span class="i">$PageHeader</span> .= <span class="q">qq(&lt;title&gt;$HeaderTitle&lt;/title&gt;\n)</span><span class="sc">;</span>
 141   <span class="i">$PageHeader</span> .= <span class="q">qq(&lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html;charset=utf-8&quot;&gt;\n)</span><span class="sc">;</span>
 142   <span class="k">if</span> <span class="s">(</span><span class="i">$Stylesheet</span><span class="s">)</span> <span class="s">{</span>
 143     <span class="i">$PageHeader</span> .= <span class="q">qq(&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;$Stylesheet&quot;&gt;\n)</span><span class="sc">;</span>
 144   <span class="s">}</span>
 145   <span class="k">if</span> <span class="s">(</span><span class="i">$JavaScript</span><span class="s">)</span> <span class="s">{</span>
 146     <span class="i">$PageHeader</span> .= <span class="q">qq(&lt;script src=&quot;$JavaScript&quot;&gt;&lt;/script&gt;\n)</span><span class="sc">;</span>
 147   <span class="s">}</span>
 148   <span class="i">$PageHeader</span> .= <span class="h">&lt;&lt;ENDPAGEHEADER</span><span class="sc">;</span>
 149 <span class="hh">&lt;/head&gt;</span>
 150 <span class="hh">&lt;body&gt;</span>
 151 <span class="hh">&lt;p&gt;&amp;nbsp&lt;/p&gt;</span>
 152 <span class="h">ENDPAGEHEADER</span>
 153 
 154   <span class="k">return</span> <span class="i">$PageHeader</span><span class="sc">;</span>
 155 <span class="s">}</span>
 156 
 157 <span class="c"># Setup page title...</span>
<a name="SetupHTMLPageTitle-"></a> 158 <span class="k">sub </span><span class="m">SetupHTMLPageTitle</span> <span class="s">{</span>
 159   <span class="k">my</span><span class="s">(</span><span class="i">$Title</span><span class="cm">,</span> <span class="i">$Alignment</span><span class="cm">,</span> <span class="i">$PageTitle</span><span class="s">)</span><span class="sc">;</span>
 160 
 161   <span class="i">$Alignment</span> = <span class="q">&quot;center&quot;</span><span class="sc">;</span>
 162   <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
 163     <span class="s">(</span><span class="i">$Title</span><span class="cm">,</span> <span class="i">$Alignment</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 164   <span class="s">}</span>
 165   <span class="k">else</span> <span class="s">{</span>
 166     <span class="s">(</span><span class="i">$Title</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 167   <span class="s">}</span>
 168 
 169   <span class="i">$PageTitle</span>=<span class="h">&lt;&lt;ENDPAGETITLE</span><span class="sc">;</span>
 170 <span class="hh">&lt;$Alignment&gt;</span>
 171 <span class="hh">&lt;h3&gt;$Title&lt;/h3&gt;</span>
 172 <span class="hh">&lt;/$Alignment&gt;</span>
 173 <span class="h">ENDPAGETITLE</span>
 174 
 175   <span class="k">return</span> <span class="i">$PageTitle</span><span class="sc">;</span>
 176 <span class="s">}</span>
 177 
 178 <span class="c"># Setup HTML page end...</span>
<a name="SetupHTMLPageEnd-"></a> 179 <span class="k">sub </span><span class="m">SetupHTMLPageEnd</span> <span class="s">{</span>
 180   <span class="k">my</span><span class="s">(</span><span class="i">$PageEnd</span><span class="cm">,</span> <span class="i">$Footer</span><span class="s">)</span><span class="sc">;</span>
 181 
 182   <span class="i">$Footer</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 183   <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
 184     <span class="s">(</span><span class="i">$Footer</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 185   <span class="s">}</span>
 186   <span class="k">if</span> <span class="s">(</span><span class="i">$Footer</span><span class="s">)</span> <span class="s">{</span>
 187     <span class="i">$Footer</span> = <span class="q">qq(&lt;span class=&quot;Footer&quot;&gt;$Footer&lt;/span&gt;)</span><span class="sc">;</span>
 188   <span class="s">}</span>
 189   <span class="i">$PageEnd</span>=<span class="h">&lt;&lt;ENDPAGE</span><span class="sc">;</span>
 190 <span class="hh">&lt;center&gt;</span>
 191 <span class="hh">&lt;p&gt;&amp;nbsp&lt;/p&gt;</span>
 192 <span class="hh">$Footer</span>
 193 <span class="hh">&lt;/center&gt;</span>
 194 <span class="hh">&lt;/body&gt;</span>
 195 <span class="hh">&lt;/html&gt;</span>
 196 <span class="h">ENDPAGE</span>
 197 
 198   <span class="k">return</span> <span class="i">$PageEnd</span><span class="sc">;</span>
 199 <span class="s">}</span>
 200 
 201 <span class="c"># Setup HTML link tags...</span>
<a name="SetupHTMLHRef-"></a> 202 <span class="k">sub </span><span class="m">SetupHTMLHRef</span> <span class="s">{</span>
 203   <span class="k">my</span><span class="s">(</span><span class="i">$Value</span><span class="cm">,</span> <span class="i">$RefFile</span><span class="cm">,</span> <span class="i">$HRef</span><span class="cm">,</span> <span class="i">$Title</span><span class="s">)</span><span class="sc">;</span>
 204 
 205   <span class="i">$Title</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 206   <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">3</span><span class="s">)</span> <span class="s">{</span>
 207     <span class="s">(</span><span class="i">$Value</span><span class="cm">,</span> <span class="i">$RefFile</span><span class="cm">,</span> <span class="i">$Title</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 208   <span class="s">}</span>
 209   <span class="k">else</span> <span class="s">{</span>
 210     <span class="s">(</span><span class="i">$Value</span><span class="cm">,</span> <span class="i">$RefFile</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 211   <span class="s">}</span>
 212 
 213   <span class="i">$HRef</span> = <span class="q">qq(&lt;a href=&quot;$RefFile&quot;)</span><span class="sc">;</span>
 214   <span class="k">if</span> <span class="s">(</span><span class="i">$Title</span><span class="s">)</span> <span class="s">{</span>
 215     <span class="i">$HRef</span> .= <span class="q">qq( title=&quot;$Title&quot;)</span><span class="sc">;</span>
 216   <span class="s">}</span>
 217   <span class="i">$HRef</span> .= <span class="q">qq(&gt;$Value&lt;/a&gt;)</span><span class="sc">;</span>
 218   <span class="k">return</span> <span class="i">$HRef</span><span class="sc">;</span>
 219 <span class="s">}</span>
 220 
 221 <span class="c">#</span>
<a name="SetupHTMLStyleSheetTags-"></a> 222 <span class="k">sub </span><span class="m">SetupHTMLStyleSheetTags</span> <span class="s">{</span>
 223   <span class="k">my</span><span class="s">(</span><span class="i">$StyleSheetTags</span><span class="s">)</span><span class="sc">;</span>
 224 
 225   <span class="i">$StyleSheetTags</span>=<span class="h">&lt;&lt;ENDSTYLESHEET</span><span class="sc">;</span>
 226 <span class="hh">body</span>
 227 <span class="hh">{</span>
 228 <span class="hh">    background-color: #ffffff;</span>
 229 <span class="hh">    font-family: Verdana, Arial, Helvetica, sans-serif;</span>
 230 <span class="hh">    font-size: 11px;</span>
 231 <span class="hh">}</span>
 232 <span class="hh">p</span>
 233 <span class="hh">{</span>
 234 <span class="hh">    font-family: Verdana, Arial, Helvetica, sans-serif;</span>
 235 <span class="hh">    font-size: 11px;</span>
 236 <span class="hh">}</span>
 237 <span class="hh">h1</span>
 238 <span class="hh">{</span>
 239 <span class="hh">    font-family: Verdana, Arial, Helvetica, sans-serif;</span>
 240 <span class="hh">    font-size: 25px;</span>
 241 <span class="hh">    font-weight: bold;</span>
 242 <span class="hh">    color: #0054aa;</span>
 243 <span class="hh">}</span>
 244 <span class="hh">h2</span>
 245 <span class="hh">{</span>
 246 <span class="hh">    font-family: Verdana, Arial, Helvetica, sans-serif;</span>
 247 <span class="hh">    font-size: 18px;</span>
 248 <span class="hh">    font-weight: bold;</span>
 249 <span class="hh">    color: #0054aa;</span>
 250 <span class="hh">}</span>
 251 <span class="hh">h3</span>
 252 <span class="hh">{</span>
 253 <span class="hh">    font-family: Verdana, Arial, Helvetica, sans-serif;</span>
 254 <span class="hh">    font-size: 14px;</span>
 255 <span class="hh">    font-weight: bold;</span>
 256 <span class="hh">    color: #0054aa;</span>
 257 <span class="hh">}</span>
 258 <span class="hh">b</span>
 259 <span class="hh">{</span>
 260 <span class="hh">    font-weight: bold;</span>
 261 <span class="hh">}</span>
 262 <span class="hh">td</span>
 263 <span class="hh">{</span>
 264 <span class="hh">    font-family: Verdana, Arial, Helvetica, sans-serif;</span>
 265 <span class="hh">    font-size: 11px;</span>
 266 <span class="hh">}</span>
 267 <span class="hh">th</span>
 268 <span class="hh">{</span>
 269 <span class="hh">    font-family: Verdana, Arial, Helvetica, sans-serif;</span>
 270 <span class="hh">    font-size: 11px;</span>
 271 <span class="hh">    color: #0054aa;</span>
 272 <span class="hh">    font-weight: bold;</span>
 273 <span class="hh">}</span>
 274 <span class="hh">.box {</span>
 275 <span class="hh">  border-color: #000000;</span>
 276 <span class="hh">  border-style: solid;</span>
 277 <span class="hh">  border-top-width: 1px;</span>
 278 <span class="hh">  border-bottom-width: 1px;</span>
 279 <span class="hh">  border-left-width: 1px;</span>
 280 <span class="hh">  border-right-width: 1px;</span>
 281 <span class="hh">}</span>
 282 <span class="hh">a</span>
 283 <span class="hh">{</span>
 284 <span class="hh">    color: #0000bb;</span>
 285 <span class="hh">    text-decoration: none;</span>
 286 <span class="hh">    font-family: Verdana, Arial, Helvetica, sans-serif;</span>
 287 <span class="hh">    font-size: 11px;</span>
 288 <span class="hh">}</span>
 289 <span class="hh">a:hover</span>
 290 <span class="hh">{</span>
 291 <span class="hh">    color: #ff0000;</span>
 292 <span class="hh">}</span>
 293 <span class="hh">#tablenav {</span>
 294 <span class="hh">    font-family: Verdana, Arial, Helvetica, sans-serif;</span>
 295 <span class="hh">    font-size: 11px;</span>
 296 <span class="hh">}</span>
 297 <span class="hh">#tablenav td</span>
 298 <span class="hh">{</span>
 299 <span class="hh">    font-family: Verdana, Arial, Helvetica, sans-serif;</span>
 300 <span class="hh">    font-size: 11px;</span>
 301 <span class="hh">}</span>
 302 <span class="hh">#tablenav th</span>
 303 <span class="hh">{</span>
 304 <span class="hh">    font-family: Verdana, Arial, Helvetica, sans-serif;</span>
 305 <span class="hh">    font-size: 11px;</span>
 306 <span class="hh">    font-weight: bold;</span>
 307 <span class="hh">}</span>
 308 <span class="hh">#tablenav a</span>
 309 <span class="hh">{</span>
 310 <span class="hh">    color: #0000bb;</span>
 311 <span class="hh">    text-decoration: none;</span>
 312 <span class="hh">    font-family: Verdana, Arial, Helvetica, sans-serif;</span>
 313 <span class="hh">    font-size: 11px;</span>
 314 <span class="hh">}</span>
 315 <span class="hh">#tablenav a:hover</span>
 316 <span class="hh">{</span>
 317 <span class="hh">    color: #ff0000;</span>
 318 <span class="hh">}</span>
 319 <span class="hh">.footer</span>
 320 <span class="hh">{</span>
 321 <span class="hh">    font-family: Arial, Verdana, Helvetica, sans-serif;</span>
 322 <span class="hh">    font-size: 9px;</span>
 323 <span class="hh">    color: #888888;</span>
 324 <span class="hh">}</span>
 325 <span class="h">ENDSTYLESHEET</span>
 326 
 327   <span class="k">return</span> <span class="i">$StyleSheetTags</span><span class="sc">;</span>
 328 <span class="s">}</span>
 329 
 330 <span class="c"># Setup HTML table header...</span>
<a name="SetupHTMLTableHeader-"></a> 331 <span class="k">sub </span><span class="m">SetupHTMLTableHeader</span> <span class="s">{</span>
 332   <span class="k">my</span><span class="s">(</span><span class="i">$TableHeader</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">$Width</span><span class="cm">,</span> <span class="i">$Height</span><span class="s">)</span><span class="sc">;</span>
 333 
 334   <span class="i">$BorderWidth</span> = <span class="n">1</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">0</span><span class="sc">;</span> <span class="i">$Width</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$Height</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 335   <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>
 336     <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="cm">,</span> <span class="i">$Width</span><span class="cm">,</span> <span class="i">$Height</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 337   <span class="s">}</span>
 338   <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">4</span><span class="s">)</span> <span class="s">{</span>
 339     <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="cm">,</span> <span class="i">$Width</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 340   <span class="s">}</span>
 341   <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">3</span><span class="s">)</span> <span class="s">{</span>
 342     <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="i">@_</span><span class="sc">;</span>
 343   <span class="s">}</span>
 344   <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
 345     <span class="s">(</span><span class="i">$BorderWidth</span><span class="cm">,</span> <span class="i">$CellPadding</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 346   <span class="s">}</span>
 347   <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> = <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
 348     <span class="s">(</span><span class="i">$BorderWidth</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 349   <span class="s">}</span>
 350   <span class="i">$TableHeader</span> = <span class="q">qq(&lt;table border=$BorderWidth cellpadding=$CellPadding cellspacing=$CellSpacing)</span><span class="sc">;</span>
 351   <span class="k">if</span> <span class="s">(</span><span class="i">$Width</span><span class="s">)</span> <span class="s">{</span>
 352     <span class="i">$TableHeader</span> .= <span class="q">qq( width=$Width)</span><span class="sc">;</span>
 353   <span class="s">}</span>
 354   <span class="k">if</span> <span class="s">(</span><span class="i">$Height</span><span class="s">)</span> <span class="s">{</span>
 355     <span class="i">$TableHeader</span> .= <span class="q">qq( height=$Height)</span><span class="sc">;</span>
 356   <span class="s">}</span>
 357   <span class="i">$TableHeader</span> .= <span class="q">qq(&gt;\n)</span><span class="sc">;</span>
 358 
 359   <span class="k">return</span> <span class="i">$TableHeader</span><span class="sc">;</span>
 360 <span class="s">}</span>
 361 
 362 <span class="c"># Setup HTML table end...</span>
<a name="SetupHTMLTableEnd-"></a> 363 <span class="k">sub </span><span class="m">SetupHTMLTableEnd</span> <span class="s">{</span>
 364   <span class="k">my</span><span class="s">(</span><span class="i">$TableEnd</span><span class="s">)</span><span class="sc">;</span>
 365 
 366   <span class="i">$TableEnd</span>=<span class="h">&lt;&lt;ENDTABLE</span><span class="sc">;</span>
 367 <span class="hh">&lt;/table&gt;</span>
 368 <span class="h">ENDTABLE</span>
 369 
 370   <span class="k">return</span> <span class="i">$TableEnd</span><span class="sc">;</span>
 371 <span class="s">}</span>
 372 
 373 <span class="c"># Setup HTML table column header...</span>
<a name="SetupHTMLTableColumnHeader-"></a> 374 <span class="k">sub </span><span class="m">SetupHTMLTableColumnHeader</span> <span class="s">{</span>
 375   <span class="k">my</span><span class="s">(</span><span class="i">$BgColor</span><span class="cm">,</span> <span class="i">$Width</span><span class="cm">,</span> <span class="i">$ColumnHeader</span><span class="s">)</span><span class="sc">;</span>
 376 
 377   <span class="i">$BgColor</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$Width</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 378   <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
 379     <span class="s">(</span><span class="i">$BgColor</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 380   <span class="s">}</span>
 381   <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
 382     <span class="s">(</span><span class="i">$BgColor</span><span class="cm">,</span> <span class="i">$Width</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 383   <span class="s">}</span>
 384   <span class="i">$ColumnHeader</span> = <span class="q">qq(&lt;td)</span><span class="sc">;</span>
 385   <span class="k">if</span> <span class="s">(</span><span class="i">$BgColor</span><span class="s">)</span> <span class="s">{</span>
 386     <span class="i">$ColumnHeader</span> .= <span class="q">qq( bgcolor=&quot;$BgColor&quot;)</span>
 387   <span class="s">}</span>
 388   <span class="k">if</span> <span class="s">(</span><span class="i">$Width</span><span class="s">)</span> <span class="s">{</span>
 389     <span class="i">$ColumnHeader</span> .= <span class="q">qq( width=&quot;$Width&quot;)</span>
 390   <span class="s">}</span>
 391   <span class="i">$ColumnHeader</span> .= <span class="q">qq(&gt;)</span><span class="sc">;</span>
 392   <span class="k">return</span> <span class="i">$ColumnHeader</span><span class="sc">;</span>
 393 <span class="s">}</span>
 394 
 395 <span class="c"># Setup HTML table column end...</span>
<a name="SetupHTMLTableColumnEnd-"></a> 396 <span class="k">sub </span><span class="m">SetupHTMLTableColumnEnd</span> <span class="s">{</span>
 397   <span class="k">my</span><span class="s">(</span><span class="i">$ColumnEnd</span><span class="s">)</span><span class="sc">;</span>
 398 
 399   <span class="i">$ColumnEnd</span> = <span class="q">qq(&lt;/td&gt;)</span><span class="sc">;</span>
 400   <span class="k">return</span> <span class="i">$ColumnEnd</span><span class="sc">;</span>
 401 <span class="s">}</span>
 402 
 403 <span class="c"># Setup HTML table row header...</span>
<a name="SetupHTMLTableRowHeader-"></a> 404 <span class="k">sub </span><span class="m">SetupHTMLTableRowHeader</span> <span class="s">{</span>
 405   <span class="k">my</span><span class="s">(</span><span class="i">$RowHeader</span><span class="cm">,</span> <span class="i">$HAlignment</span><span class="cm">,</span> <span class="i">$BgColor</span><span class="cm">,</span> <span class="i">$VAlignment</span><span class="s">)</span><span class="sc">;</span>
 406 
 407   <span class="i">$HAlignment</span> = <span class="q">&quot;center&quot;</span><span class="sc">;</span> <span class="i">$BgColor</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$VAlignment</span> = <span class="q">&quot;top&quot;</span><span class="sc">;</span>
 408   <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">3</span><span class="s">)</span> <span class="s">{</span>
 409     <span class="s">(</span><span class="i">$HAlignment</span><span class="cm">,</span> <span class="i">$BgColor</span><span class="cm">,</span> <span class="i">$VAlignment</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 410   <span class="s">}</span>
 411   <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
 412     <span class="s">(</span><span class="i">$HAlignment</span><span class="cm">,</span> <span class="i">$BgColor</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 413   <span class="s">}</span>
 414   <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
 415     <span class="s">(</span><span class="i">$HAlignment</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 416   <span class="s">}</span>
 417   <span class="k">if</span> <span class="s">(</span><span class="i">$BgColor</span><span class="s">)</span> <span class="s">{</span>
 418     <span class="i">$RowHeader</span> = <span class="q">qq(&lt;tr bgcolor=&quot;$BgColor&quot; align=&quot;$HAlignment&quot; valign=&quot;$VAlignment&quot;&gt;)</span><span class="sc">;</span>
 419   <span class="s">}</span>
 420   <span class="k">else</span> <span class="s">{</span>
 421     <span class="i">$RowHeader</span> = <span class="q">qq(&lt;tr align=&quot;$HAlignment&quot; valign=&quot;$VAlignment&quot;&gt;)</span><span class="sc">;</span>
 422   <span class="s">}</span>
 423 
 424   <span class="k">return</span> <span class="i">$RowHeader</span><span class="sc">;</span>
 425 <span class="s">}</span>
 426 
 427 <span class="c"># Setup HTML table row end...</span>
<a name="SetupHTMLTableRowEnd-"></a> 428 <span class="k">sub </span><span class="m">SetupHTMLTableRowEnd</span> <span class="s">{</span>
 429   <span class="k">my</span><span class="s">(</span><span class="i">$RowEnd</span><span class="s">)</span><span class="sc">;</span>
 430 
 431   <span class="i">$RowEnd</span> = <span class="q">qq(&lt;/tr&gt;\n)</span><span class="sc">;</span>
 432   <span class="k">return</span> <span class="i">$RowEnd</span><span class="sc">;</span>
 433 <span class="s">}</span>
 434 
 435 <span class="c"># Setup HTML table header values...</span>
<a name="SetupHTMLTableRowHeaderValue-"></a> 436 <span class="k">sub </span><span class="m">SetupHTMLTableRowHeaderValue</span> <span class="s">{</span>
 437   <span class="k">my</span><span class="s">(</span><span class="i">$HeaderValue</span><span class="cm">,</span> <span class="i">$Value</span><span class="s">)</span><span class="sc">;</span>
 438 
 439   <span class="i">$Value</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 440   <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> &gt;= <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
 441     <span class="s">(</span><span class="i">$Value</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 442   <span class="s">}</span>
 443   <span class="k">if</span> <span class="s">(</span><span class="k">defined</span> <span class="i">$Value</span> &amp;&amp; <span class="k">length</span> <span class="i">$Value</span><span class="s">)</span> <span class="s">{</span>
 444     <span class="i">$HeaderValue</span> = <span class="q">qq(&lt;th&gt;$Value&lt;/th&gt;)</span><span class="sc">;</span>
 445   <span class="s">}</span>
 446   <span class="k">else</span> <span class="s">{</span>
 447     <span class="i">$HeaderValue</span> = <span class="q">qq(&lt;th&gt;&amp;nbsp&lt;/th&gt;)</span><span class="sc">;</span>
 448   <span class="s">}</span>
 449   <span class="k">return</span> <span class="i">$HeaderValue</span><span class="sc">;</span>
 450 <span class="s">}</span>
 451 
 452 <span class="c"># Setup HTML table row data values...</span>
<a name="SetupHTMLTableRowDataValue-"></a> 453 <span class="k">sub </span><span class="m">SetupHTMLTableRowDataValue</span> <span class="s">{</span>
 454   <span class="k">my</span><span class="s">(</span><span class="i">$RowValues</span><span class="cm">,</span> <span class="i">$Value</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">$FontBold</span><span class="cm">,</span> <span class="i">$FontBoldTag1</span><span class="cm">,</span> <span class="i">$FontBoldTag2</span><span class="s">)</span><span class="sc">;</span>
 455 
 456   <span class="i">$Value</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$BgColor</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$FontColor</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$FontBold</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 457   <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">1</span><span class="s">)</span> <span class="s">{</span>
 458     <span class="s">(</span><span class="i">$Value</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 459   <span class="s">}</span>
 460   <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
 461     <span class="s">(</span><span class="i">$Value</span><span class="cm">,</span> <span class="i">$BgColor</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 462   <span class="s">}</span>
 463   <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">3</span><span class="s">)</span> <span class="s">{</span>
 464     <span class="s">(</span><span class="i">$Value</span><span class="cm">,</span> <span class="i">$BgColor</span><span class="cm">,</span> <span class="i">$FontColor</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 465   <span class="s">}</span>
 466   <span class="k">elsif</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">4</span><span class="s">)</span> <span class="s">{</span>
 467     <span class="s">(</span><span class="i">$Value</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">$FontBold</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 468   <span class="s">}</span>
 469   <span class="k">if</span> <span class="s">(</span>!<span class="s">(</span><span class="k">defined</span> <span class="i">$Value</span> &amp;&amp; <span class="k">length</span> <span class="i">$Value</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
 470     <span class="i">$Value</span> = <span class="q">qq(&amp;nbsp)</span><span class="sc">;</span>
 471   <span class="s">}</span>
 472   <span class="i">$FontBoldTag1</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$FontBoldTag2</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 473   <span class="k">if</span> <span class="s">(</span><span class="i">$FontBold</span><span class="s">)</span> <span class="s">{</span>
 474     <span class="i">$FontBoldTag1</span> = <span class="q">qq(&lt;b&gt;)</span><span class="sc">;</span>
 475     <span class="i">$FontBoldTag2</span> = <span class="q">qq(&lt;/b&gt;)</span><span class="sc">;</span>
 476   <span class="s">}</span>
 477   <span class="k">if</span> <span class="s">(</span><span class="i">$BgColor</span> || <span class="i">$FontColor</span><span class="s">)</span> <span class="s">{</span>
 478     <span class="k">my</span> <span class="s">(</span><span class="i">$BgColorTag</span><span class="cm">,</span> <span class="i">$FontTag1</span><span class="cm">,</span> <span class="i">$FontTag2</span><span class="s">)</span><span class="sc">;</span>
 479 
 480     <span class="i">$BgColorTag</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 481     <span class="k">if</span> <span class="s">(</span><span class="i">$BgColor</span><span class="s">)</span> <span class="s">{</span>
 482       <span class="i">$BgColorTag</span> = <span class="q">qq( bgcolor=&quot;$BgColor&quot;)</span><span class="sc">;</span>
 483     <span class="s">}</span>
 484     <span class="i">$FontTag1</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$FontTag2</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 485     <span class="k">if</span> <span class="s">(</span><span class="i">$FontColor</span><span class="s">)</span> <span class="s">{</span>
 486       <span class="i">$FontTag1</span> = <span class="q">qq(&lt;font color=&quot;$FontColor&quot;&gt;)</span><span class="sc">;</span>
 487       <span class="i">$FontTag2</span> = <span class="q">qq(&lt;/font&gt;)</span><span class="sc">;</span>
 488     <span class="s">}</span>
 489     <span class="k">if</span> <span class="s">(</span><span class="i">$FontBold</span><span class="s">)</span> <span class="s">{</span>
 490       <span class="i">$RowValues</span> = <span class="q">&quot;&lt;td&quot;</span> . <span class="i">$BgColorTag</span> . <span class="q">&quot;&gt;&quot;</span> . <span class="i">$FontBoldTag1</span> . <span class="i">$FontTag1</span> . <span class="q">&quot;$Value&quot;</span> . <span class="i">$FontTag2</span> . <span class="i">$FontBoldTag2</span> .  <span class="q">&quot;&lt;/td&gt;&quot;</span><span class="sc">;</span>
 491     <span class="s">}</span>
 492     <span class="k">else</span> <span class="s">{</span>
 493       <span class="i">$RowValues</span> = <span class="q">&quot;&lt;td&quot;</span> . <span class="i">$BgColorTag</span> . <span class="q">&quot;&gt;&quot;</span> . <span class="i">$FontTag1</span> . <span class="q">&quot;$Value&quot;</span> . <span class="i">$FontTag2</span> .  <span class="q">&quot;&lt;/td&gt;&quot;</span><span class="sc">;</span>
 494     <span class="s">}</span>
 495   <span class="s">}</span>
 496   <span class="k">elsif</span> <span class="s">(</span><span class="i">$FontBold</span><span class="s">)</span> <span class="s">{</span>
 497     <span class="i">$RowValues</span> = <span class="q">&quot;&lt;td&gt;&quot;</span> . <span class="i">$FontBoldTag1</span> . <span class="q">&quot;$Value&quot;</span> . <span class="i">$FontBoldTag2</span> . <span class="q">&quot;&lt;/td&gt;&quot;</span><span class="sc">;</span>
 498   <span class="s">}</span>
 499   <span class="k">else</span> <span class="s">{</span>
 500     <span class="i">$RowValues</span> = <span class="q">qq(&lt;td&gt;$Value&lt;/td&gt;)</span><span class="sc">;</span>
 501   <span class="s">}</span>
 502   <span class="k">return</span> <span class="i">$RowValues</span><span class="sc">;</span>
 503 <span class="s">}</span>
 504 
 505 <span class="c"># Setup Java scripts command...</span>
<a name="SetupJavaScriptCmds-"></a> 506 <span class="k">sub </span><span class="m">SetupJavaScriptCmds</span> <span class="s">{</span>
 507   <span class="k">my</span><span class="s">(</span><span class="i">@JSCmdList</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 508   <span class="k">my</span><span class="s">(</span><span class="i">$JSTags</span><span class="cm">,</span> <span class="i">$JSCmd</span><span class="s">)</span><span class="sc">;</span>
 509 
 510   <span class="i">$JSTags</span> = <span class="q">qq(&lt;script&gt;\n)</span><span class="sc">;</span>
 511   <span class="k">for</span> <span class="i">$JSCmd</span> <span class="s">(</span><span class="i">@JSCmdList</span><span class="s">)</span> <span class="s">{</span>
 512     <span class="i">$JSTags</span> .= <span class="q">qq($JSCmd\n)</span><span class="sc">;</span>
 513   <span class="s">}</span>
 514   <span class="i">$JSTags</span> .= <span class="q">qq(&lt;/script&gt;\n)</span><span class="sc">;</span>
 515 
 516   <span class="k">return</span> <span class="i">$JSTags</span><span class="sc">;</span>
 517 <span class="s">}</span>
 518 
 519 <span class="c"># Setup Java script initialize command...</span>
<a name="SetupStrViewerJSInitCmd-"></a> 520 <span class="k">sub </span><span class="m">SetupStrViewerJSInitCmd</span> <span class="s">{</span>
 521   <span class="k">my</span><span class="s">(</span><span class="i">$StrViewerType</span><span class="cm">,</span> <span class="i">$CodeBase</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 522   <span class="k">my</span><span class="s">(</span><span class="i">$JSTag</span><span class="s">)</span><span class="sc">;</span>
 523 
 524   <span class="i">$JSTag</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 525   <span class="k">if</span> <span class="s">(</span><span class="i">$StrViewerType</span> <span class="k">eq</span> <span class="q">&quot;Jmol&quot;</span><span class="s">)</span> <span class="s">{</span>
 526     <span class="i">$JSTag</span> = <span class="q">qq(&lt;script&gt;jmolInitialize(&quot;$CodeBase&quot;, &quot;JmolApplet.jar&quot;);&lt;/script&gt;\n)</span><span class="sc">;</span>
 527   <span class="s">}</span>
 528   <span class="k">elsif</span> <span class="s">(</span><span class="i">$StrViewerType</span> <span class="k">eq</span> <span class="q">&quot;ChemDrawPlugIn&quot;</span> || <span class="i">$StrViewerType</span> <span class="k">eq</span> <span class="q">&quot;ChemDrawActiveX&quot;</span><span class="s">)</span> <span class="s">{</span>
 529     <span class="i">$JSTag</span> = <span class="q">qq(&lt;script&gt;cd_includeWrapperFile(&quot;$CodeBase/&quot;);&lt;/script&gt;\n)</span><span class="sc">;</span>
 530   <span class="s">}</span>
 531   <span class="k">elsif</span> <span class="s">(</span><span class="i">$StrViewerType</span> <span class="k">eq</span> <span class="q">&quot;Chem3DActiveX&quot;</span><span class="s">)</span> <span class="s">{</span>
 532   <span class="s">}</span>
 533   <span class="k">return</span> <span class="i">$JSTag</span><span class="sc">;</span>
 534 <span class="s">}</span>
 535 
 536 
 537 <span class="c"># Setup Jmol applet...</span>
<a name="SetupStrViewerJmolApplet-"></a> 538 <span class="k">sub </span><span class="m">SetupStrViewerJmolApplet</span> <span class="s">{</span>
 539   <span class="k">my</span><span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$CodeBase</span><span class="cm">,</span> <span class="i">$ParamsMapRef</span><span class="cm">,</span> <span class="i">%ParamsMap</span><span class="cm">,</span> <span class="i">$AppletTags</span><span class="cm">,</span> <span class="i">$JavaScriptTags</span><span class="cm">,</span> <span class="i">$ReturnTags</span><span class="cm">,</span> <span class="i">$Name</span><span class="cm">,</span> <span class="i">$Code</span><span class="cm">,</span> <span class="i">$Archive</span><span class="cm">,</span> <span class="i">$Width</span><span class="cm">,</span> <span class="i">$Height</span><span class="cm">,</span> <span class="i">$ParamName</span><span class="cm">,</span> <span class="i">$ParamValue</span><span class="cm">,</span> <span class="i">$JSFileName</span><span class="cm">,</span> <span class="i">$UseJavaScript</span><span class="s">)</span><span class="sc">;</span>
 540   <span class="k">my</span><span class="s">(</span><span class="i">$ProgressBar</span><span class="cm">,</span> <span class="i">$ProgressColor</span><span class="cm">,</span> <span class="i">$BoxMessage</span><span class="cm">,</span> <span class="i">$BoxFgColor</span><span class="cm">,</span> <span class="i">$BoxBgColor</span><span class="cm">,</span> <span class="i">$BgColor</span><span class="cm">,</span> <span class="i">$JMolScript</span><span class="s">)</span><span class="sc">;</span>
 541 
 542   <span class="i">$AppletTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>  <span class="i">$JavaScriptTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$ReturnTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 543   <span class="i">$ParamsMapRef</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">%ParamsMap</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
 544   <span class="i">$Name</span> = <span class="q">&quot;Jmol&quot;</span><span class="sc">;</span> <span class="i">$Code</span> = <span class="q">&quot;JmolApplet&quot;</span><span class="sc">;</span> <span class="i">$Archive</span> = <span class="q">&quot;JmolApplet.jar&quot;</span><span class="sc">;</span> <span class="i">$Width</span> = <span class="i">$StrViewerWidth</span><span class="sc">;</span> <span class="i">$Height</span> = <span class="i">$StrViewerHeight</span><span class="sc">;</span>
 545   <span class="i">$ProgressBar</span> = <span class="q">&quot;true&quot;</span><span class="sc">;</span> <span class="i">$ProgressColor</span> = <span class="q">&quot;#0000ff&quot;</span><span class="sc">;</span> <span class="i">$BgColor</span> = <span class="q">&quot;#000000&quot;</span><span class="sc">;</span>
 546   <span class="i">$BoxMessage</span> = <span class="q">&quot;Setting up JmolApplet...&quot;</span><span class="sc">;</span> <span class="i">$BoxFgColor</span> = <span class="q">&quot;#000000&quot;</span><span class="sc">;</span> <span class="i">$BoxBgColor</span> = <span class="q">&quot;#ffffff&quot;</span><span class="sc">;</span>
 547   <span class="i">$UseJavaScript</span> = <span class="n">0</span><span class="sc">;</span> <span class="i">$JSFileName</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 548   <span class="i">$JMolScript</span> = <span class="q">&quot;select *; set frank off; wireframe on; spacefill off&quot;</span><span class="sc">;</span>
 549 
 550  <span class="j">PARAMS:</span> <span class="s">{</span>
 551     <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">3</span><span class="s">)</span> <span class="s">{</span> <span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$CodeBase</span><span class="cm">,</span> <span class="i">$ParamsMapRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> <span class="k">last</span> <span class="j">PARAMS</span><span class="sc">;</span> <span class="s">}</span>
 552     <span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$CodeBase</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 553   <span class="s">}</span>
 554 
 555   <span class="k">if</span> <span class="s">(</span><span class="i">$ParamsMapRef</span><span class="s">)</span> <span class="s">{</span>
 556     <span class="i">%ParamsMap</span> = <span class="i">%$ParamsMapRef</span><span class="sc">;</span>
 557     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">usejavascript</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$JSFileName</span> = <span class="i">$ParamsMap</span>{<span class="w">usejavascript</span>}<span class="sc">;</span> <span class="i">$UseJavaScript</span> = <span class="n">1</span><span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">usejavascript</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 558     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">name</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Name</span> = <span class="i">$ParamsMap</span>{<span class="w">name</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">name</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 559     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">code</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Code</span> = <span class="i">$ParamsMap</span>{<span class="w">code</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">code</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 560     <span class="c"># if (exists $ParamsMap{archive} ) { $Archive = $ParamsMap{archive}; $ParamsMap{archive} = &quot;&quot;; }</span>
 561     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">archive</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$ParamsMap</span>{<span class="w">archive</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 562     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">height</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Height</span> = <span class="i">$ParamsMap</span>{<span class="w">height</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">height</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 563     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">width</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Width</span> = <span class="i">$ParamsMap</span>{<span class="w">width</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">width</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 564     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">progressbar</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$ProgressBar</span> = <span class="i">$ParamsMap</span>{<span class="w">progressbar</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">progressbar</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 565     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">progresscolor</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$ProgressColor</span> = <span class="i">$ParamsMap</span>{<span class="w">progresscolor</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">progresscolor</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 566     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">boxmessage</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$BoxMessage</span> = <span class="i">$ParamsMap</span>{<span class="w">boxmessage</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">boxmessage</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 567     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">script</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$JMolScript</span> = <span class="i">$ParamsMap</span>{<span class="w">script</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">script</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 568     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">bgcolor</span>}<span class="s">)</span> <span class="s">{</span>
 569       <span class="i">$BgColor</span> = <span class="i">$ParamsMap</span>{<span class="w">bgcolor</span>}<span class="sc">;</span>
 570       <span class="k">if</span> <span class="s">(</span><span class="k">length</span><span class="s">(</span><span class="i">$BgColor</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span>
 571         <span class="k">if</span> <span class="s">(</span><span class="i">$BgColor</span> =~ <span class="q">/black/i</span> || <span class="i">$BgColor</span> =~ <span class="q">/#000000/</span> <span class="s">)</span> <span class="s">{</span>
 572           <span class="i">$BoxFgColor</span> = <span class="q">&quot;#ffffff&quot;</span><span class="sc">;</span>
 573           <span class="i">$BoxBgColor</span> = <span class="q">&quot;#000000&quot;</span><span class="sc">;</span>
 574         <span class="s">}</span>
 575       <span class="s">}</span>
 576     <span class="s">}</span>
 577     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">boxbgcolor</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$BoxBgColor</span> = <span class="i">$ParamsMap</span>{<span class="w">boxbgcolor</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">boxbgcolor</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 578     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">boxfgcolor</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$BoxFgColor</span> = <span class="i">$ParamsMap</span>{<span class="w">boxfgcolor</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">boxfgcolor</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 579   <span class="s">}</span>
 580 
 581   <span class="i">$MolString</span> =~ <span class="q">s/(\r\n)|(\r)|(\n)/|/g</span><span class="sc">;</span>
 582   <span class="k">if</span> <span class="s">(</span><span class="i">$UseJavaScript</span><span class="s">)</span> <span class="s">{</span>
 583     <span class="i">$JavaScriptTags</span> = <span class="q">qq(\n&lt;script&gt;\n)</span><span class="sc">;</span>
 584     <span class="k">my</span><span class="s">(</span><span class="i">$Size</span><span class="s">)</span> = <span class="s">(</span><span class="i">$Width</span> &gt; <span class="i">$Height</span> <span class="s">)</span> ? <span class="i">$Width</span> <span class="co">:</span> <span class="i">$Height</span><span class="sc">;</span>
 585     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(var $Name = \n)</span><span class="sc">;</span>
 586     <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">/\|/</span><span class="cm">,</span> <span class="i">$MolString</span><span class="sc">;</span>
 587     <span class="k">my</span><span class="s">(</span><span class="i">$LineIndex</span><span class="s">)</span><span class="sc">;</span>
 588     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(&quot;$MolLines[0]\\n&quot;)</span><span class="sc">;</span>
 589     <span class="k">for</span> <span class="i">$LineIndex</span> <span class="s">(</span><span class="n">1</span> .. <span class="i">$#MolLines</span><span class="s">)</span> <span class="s">{</span>
 590       <span class="i">$JavaScriptTags</span> .= <span class="q">qq( + \n&quot;$MolLines[$LineIndex]\\n&quot;)</span><span class="sc">;</span>
 591     <span class="s">}</span>
 592     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(;\n)</span><span class="sc">;</span>
 593     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(jmolSetAppletColor(&quot;$BgColor&quot;, &quot;$BoxBgColor&quot;, &quot;$BoxFgColor&quot;, &quot;$ProgressColor&quot;);\n)</span><span class="sc">;</span>
 594     <span class="c"># &quot;set frank off turns&quot; off JMol logo. For wireframe display; use wireframe on; spacefill off...</span>
 595     <span class="c"># $JavaScriptTags .= qq(jmolAppletInline($Size, $Name);\n);</span>
 596     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(jmolAppletInline([$Width,$Height], $Name, \&quot;$JMolScript\&quot;);\n)</span><span class="sc">;</span>
 597     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(&lt;/script&gt;\n)</span><span class="sc">;</span>
 598     <span class="i">$ReturnTags</span> = <span class="i">$JavaScriptTags</span><span class="sc">;</span>
 599   <span class="s">}</span>
 600   <span class="k">else</span> <span class="s">{</span>
 601     <span class="c"># Setup applet header...</span>
 602     <span class="i">$AppletTags</span> = <span class="q">qq(\n&lt;applet name=&quot;$Name&quot; id=&quot;$Name&quot; code=&quot;$Code&quot; archive=&quot;$Archive&quot; codebase=&quot;$CodeBase&quot; width=&quot;$Width&quot; height=&quot;$Height&quot;&gt;\n)</span><span class="sc">;</span>
 603 
 604     <span class="c"># Setup molecule data...</span>
 605     <span class="i">$AppletTags</span> .= <span class="q">qq(&lt;param name=&quot;loadInline&quot; value=&quot;$MolString&quot;&gt;\n)</span><span class="sc">;</span>
 606 
 607     <span class="c"># Setup prograss bar...</span>
 608     <span class="i">$AppletTags</span> .= <span class="q">qq(&lt;param name=&quot;progressbar&quot; value=&quot;$ProgressBar&quot;&gt;\n&lt;param name=&quot;progresscolor&quot; value=&quot;$ProgressColor&quot;&gt;\n&lt;param name=&quot;boxmessage&quot; value=&quot;$BoxMessage&quot;&gt;\n&lt;param name=&quot;boxbgcolor&quot; value=&quot;$BoxBgColor&quot;&gt;\n&lt;param name=&quot;boxfgcolor&quot; value=&quot;$BoxFgColor&quot;&gt;\n)</span><span class="sc">;</span>
 609 
 610     <span class="c"># &quot;set frank off turns&quot; off JMol logo. For wireframe display; use wireframe on; spacefill off...</span>
 611     <span class="i">$AppletTags</span> .= <span class="q">qq(&lt;param name=&quot;script&quot; value=&quot;$JMolScript&quot;&gt;)</span><span class="sc">;</span>
 612 
 613     <span class="c">#Setup other parameters...</span>
 614     <span class="k">for</span> <span class="i">$ParamName</span> <span class="s">(</span><span class="k">sort</span> <span class="k">keys</span> <span class="i">%ParamsMap</span><span class="s">)</span> <span class="s">{</span>
 615       <span class="i">$ParamValue</span> = <span class="i">$ParamsMap</span>{<span class="i">$ParamName</span>}<span class="sc">;</span>
 616       <span class="k">if</span> <span class="s">(</span><span class="k">length</span> <span class="i">$ParamValue</span><span class="s">)</span> <span class="s">{</span>
 617         <span class="i">$AppletTags</span> .= <span class="q">qq(&lt;param name=&quot;$ParamName&quot; value=&quot;$ParamValue&quot;&gt;\n)</span><span class="sc">;</span>
 618       <span class="s">}</span>
 619     <span class="s">}</span>
 620     <span class="c">#Finish it up...</span>
 621     <span class="i">$AppletTags</span> .= <span class="q">qq(&lt;/applet&gt;\n)</span><span class="sc">;</span>
 622     <span class="i">$ReturnTags</span> = <span class="i">$AppletTags</span><span class="sc">;</span>
 623   <span class="s">}</span>
 624   <span class="k">return</span> <span class="i">$ReturnTags</span><span class="sc">;</span>
 625 <span class="s">}</span>
 626 
 627 <span class="c"># Setup JME applet...</span>
<a name="SetupStrViewerJMEApplet-"></a> 628 <span class="k">sub </span><span class="m">SetupStrViewerJMEApplet</span> <span class="s">{</span>
 629   <span class="k">my</span><span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$CodeBase</span><span class="cm">,</span> <span class="i">$ParamsMapRef</span><span class="cm">,</span> <span class="i">%ParamsMap</span><span class="cm">,</span> <span class="i">$AppletTags</span><span class="cm">,</span> <span class="i">$Name</span><span class="cm">,</span> <span class="i">$Code</span><span class="cm">,</span> <span class="i">$Archive</span><span class="cm">,</span> <span class="i">$Width</span><span class="cm">,</span> <span class="i">$Height</span><span class="cm">,</span> <span class="i">$ParamName</span><span class="cm">,</span> <span class="i">$ParamValue</span><span class="s">)</span><span class="sc">;</span>
 630   <span class="k">my</span><span class="s">(</span><span class="i">$Options</span><span class="s">)</span><span class="sc">;</span>
 631 
 632   <span class="i">$AppletTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>  <span class="i">$ParamsMapRef</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">%ParamsMap</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
 633   <span class="i">$Name</span> = <span class="q">&quot;JME&quot;</span><span class="sc">;</span> <span class="i">$Code</span> = <span class="q">&quot;JME&quot;</span><span class="sc">;</span> <span class="i">$Archive</span> = <span class="q">&quot;JME.jar&quot;</span><span class="sc">;</span> <span class="i">$Width</span> = <span class="i">$StrViewerWidth</span><span class="sc">;</span> <span class="i">$Height</span> = <span class="i">$StrViewerHeight</span><span class="sc">;</span>
 634   <span class="i">$Options</span> = <span class="q">&quot;depict&quot;</span><span class="sc">;</span>
 635 
 636   <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">3</span><span class="s">)</span> <span class="s">{</span>
 637     <span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$CodeBase</span><span class="cm">,</span> <span class="i">$ParamsMapRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 638   <span class="s">}</span>
 639   <span class="k">else</span> <span class="s">{</span>
 640     <span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$CodeBase</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 641   <span class="s">}</span>
 642   <span class="i">$MolString</span> =~ <span class="q">s/(\r\n)|(\r)|(\n)/|/g</span><span class="sc">;</span>
 643 
 644   <span class="k">if</span> <span class="s">(</span><span class="i">$ParamsMapRef</span><span class="s">)</span> <span class="s">{</span>
 645     <span class="i">%ParamsMap</span> = <span class="i">%$ParamsMapRef</span><span class="sc">;</span>
 646     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">name</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Name</span> = <span class="i">$ParamsMap</span>{<span class="w">name</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">name</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 647     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">code</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Code</span> = <span class="i">$ParamsMap</span>{<span class="w">code</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">code</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 648     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">archive</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Archive</span> = <span class="i">$ParamsMap</span>{<span class="w">archive</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">archive</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 649     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">height</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Height</span> = <span class="i">$ParamsMap</span>{<span class="w">height</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">height</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 650     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">width</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Width</span> = <span class="i">$ParamsMap</span>{<span class="w">width</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">width</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 651     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">options</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Options</span> = <span class="i">$ParamsMap</span>{<span class="w">options</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">options</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 652   <span class="s">}</span>
 653 
 654   <span class="c"># Setup applet header...</span>
 655   <span class="i">$AppletTags</span> = <span class="q">qq(\n&lt;applet name=&quot;$Name&quot; id=&quot;$Name&quot; code=&quot;$Code&quot; archive=&quot;$Archive&quot; codebase=&quot;$CodeBase&quot; width=&quot;$Width&quot; height=&quot;$Height&quot;&gt;\n)</span><span class="sc">;</span>
 656 
 657   <span class="c"># Setup molecule data...</span>
 658   <span class="i">$AppletTags</span> .= <span class="q">qq(&lt;param name=&quot;mol&quot; value=&quot;$MolString&quot;&gt;\n&lt;param name=&quot;options&quot; value=&quot;$Options&quot;&gt;\n)</span><span class="sc">;</span>
 659 
 660   <span class="c">#Setup other parameters...</span>
 661   <span class="k">for</span> <span class="i">$ParamName</span> <span class="s">(</span><span class="k">sort</span> <span class="k">keys</span> <span class="i">%ParamsMap</span><span class="s">)</span> <span class="s">{</span>
 662     <span class="i">$ParamValue</span> = <span class="i">$ParamsMap</span>{<span class="i">$ParamName</span>}<span class="sc">;</span>
 663     <span class="k">if</span> <span class="s">(</span><span class="k">length</span> <span class="i">$ParamValue</span><span class="s">)</span> <span class="s">{</span>
 664       <span class="i">$AppletTags</span> .= <span class="q">qq(&lt;param name=&quot;$ParamName&quot; value=&quot;$ParamValue&quot;&gt;\n)</span><span class="sc">;</span>
 665     <span class="s">}</span>
 666   <span class="s">}</span>
 667 
 668   <span class="c">#Finish it up...</span>
 669   <span class="i">$AppletTags</span> .= <span class="q">qq(&lt;/applet&gt;\n)</span><span class="sc">;</span>
 670 
 671   <span class="k">return</span> <span class="i">$AppletTags</span><span class="sc">;</span>
 672 <span class="s">}</span>
 673 
 674 <span class="c"># Setup MarvinView applet...</span>
<a name="SetupStrViewerMarvinViewApplet-"></a> 675 <span class="k">sub </span><span class="m">SetupStrViewerMarvinViewApplet</span> <span class="s">{</span>
 676   <span class="k">my</span><span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$CodeBase</span><span class="cm">,</span> <span class="i">$ParamsMapRef</span><span class="cm">,</span> <span class="i">%ParamsMap</span><span class="cm">,</span> <span class="i">$AppletTags</span><span class="cm">,</span> <span class="i">$JavaScriptTags</span><span class="cm">,</span> <span class="i">$ReturnTags</span><span class="cm">,</span> <span class="i">$Name</span><span class="cm">,</span> <span class="i">$Code</span><span class="cm">,</span> <span class="i">$Archive</span><span class="cm">,</span> <span class="i">$Width</span><span class="cm">,</span> <span class="i">$Height</span><span class="cm">,</span> <span class="i">$ParamName</span><span class="cm">,</span> <span class="i">$NavMode</span><span class="cm">,</span> <span class="i">$ParamValue</span><span class="cm">,</span> <span class="i">$JSFileName</span><span class="cm">,</span> <span class="i">$UseJavaScript</span><span class="cm">,</span> <span class="i">$MarvinJVM</span><span class="s">)</span><span class="sc">;</span>
 677 
 678   <span class="i">$AppletTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>  <span class="i">$JavaScriptTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$ReturnTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 679   <span class="i">$ParamsMapRef</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">%ParamsMap</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
 680   <span class="i">$Name</span> = <span class="q">&quot;MView&quot;</span><span class="sc">;</span> <span class="i">$Code</span> = <span class="q">&quot;MView&quot;</span><span class="sc">;</span> <span class="i">$Archive</span> = <span class="q">&quot;marvin.jar&quot;</span><span class="sc">;</span> <span class="i">$Width</span> = <span class="i">$StrViewerWidth</span><span class="sc">;</span> <span class="i">$Height</span> = <span class="i">$StrViewerHeight</span><span class="sc">;</span>
 681   <span class="i">$NavMode</span> = <span class="q">&quot;zoom&quot;</span><span class="sc">;</span>
 682   <span class="i">$UseJavaScript</span> = <span class="n">0</span><span class="sc">;</span> <span class="i">$JSFileName</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$MarvinJVM</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 683 
 684   <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">3</span><span class="s">)</span> <span class="s">{</span>
 685     <span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$CodeBase</span><span class="cm">,</span> <span class="i">$ParamsMapRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 686   <span class="s">}</span>
 687   <span class="k">else</span> <span class="s">{</span>
 688     <span class="s">(</span><span class="i">$MolString</span><span class="cm">,</span> <span class="i">$CodeBase</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 689   <span class="s">}</span>
 690 
 691   <span class="k">if</span> <span class="s">(</span><span class="i">$ParamsMapRef</span><span class="s">)</span> <span class="s">{</span>
 692     <span class="i">%ParamsMap</span> = <span class="i">%$ParamsMapRef</span><span class="sc">;</span>
 693     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">usejavascript</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$JSFileName</span> = <span class="i">$ParamsMap</span>{<span class="w">usejavascript</span>}<span class="sc">;</span> <span class="i">$UseJavaScript</span> = <span class="n">1</span><span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">usejavascript</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 694     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">marvin_jvm</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$MarvinJVM</span> = <span class="i">$ParamsMap</span>{<span class="w">marvin_jvm</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">marvin_jvm</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 695     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">name</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Name</span> = <span class="i">$ParamsMap</span>{<span class="w">name</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">name</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 696     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">code</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Code</span> = <span class="i">$ParamsMap</span>{<span class="w">code</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">code</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 697     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">archive</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Archive</span> = <span class="i">$ParamsMap</span>{<span class="w">archive</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">archive</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 698     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">height</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Height</span> = <span class="i">$ParamsMap</span>{<span class="w">height</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">height</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 699     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">width</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Width</span> = <span class="i">$ParamsMap</span>{<span class="w">width</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">width</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 700     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">bgcolor</span>}<span class="s">)</span> <span class="s">{</span>
 701       <span class="i">$ParamsMap</span>{<span class="w">background</span>} = <span class="q">&quot;$ParamsMap{bgcolor}&quot;</span><span class="sc">;</span>
 702       <span class="i">$ParamsMap</span>{<span class="w">molbg</span>} = <span class="q">&quot;$ParamsMap{bgcolor}&quot;</span><span class="sc">;</span>
 703       <span class="i">$ParamsMap</span>{<span class="w">bgcolor</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 704     <span class="s">}</span>
 705     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">navmode</span>}<span class="s">)</span> <span class="s">{</span>
 706       <span class="i">$NavMode</span> = <span class="i">$ParamsMap</span>{<span class="w">navmode</span>}<span class="sc">;</span>
 707       <span class="i">$ParamsMap</span>{<span class="w">navmode</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 708     <span class="s">}</span>
 709   <span class="s">}</span>
 710   <span class="i">$MolString</span> =~ <span class="q">s/(\r\n)|(\r)|(\n)/\\/g</span><span class="sc">;</span>
 711   <span class="k">if</span> <span class="s">(</span><span class="i">$UseJavaScript</span><span class="s">)</span> <span class="s">{</span>
 712     <span class="i">$JavaScriptTags</span> = <span class="q">qq(\n&lt;script&gt;\n)</span><span class="sc">;</span>
 713     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(var marvin_name = &quot;$Name&quot;;\n)</span><span class="sc">;</span>
 714     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(var marvin_jvm = &quot;$MarvinJVM&quot;;\n)</span><span class="sc">;</span>
 715 
 716     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(mview_begin(&quot;$CodeBase&quot;, $Width, $Height);\n)</span><span class="sc">;</span>
 717 
 718     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(var $Name = \n)</span><span class="sc">;</span>
 719     <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">/\\/</span><span class="cm">,</span> <span class="i">$MolString</span><span class="sc">;</span>
 720     <span class="k">my</span><span class="s">(</span><span class="i">$LineIndex</span><span class="s">)</span><span class="sc">;</span>
 721     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(&quot;$MolLines[0]\\n&quot;)</span><span class="sc">;</span>
 722     <span class="k">for</span> <span class="i">$LineIndex</span> <span class="s">(</span><span class="n">1</span> .. <span class="i">$#MolLines</span><span class="s">)</span> <span class="s">{</span>
 723       <span class="i">$JavaScriptTags</span> .= <span class="q">qq( + \n&quot;$MolLines[$LineIndex]\\n&quot;)</span><span class="sc">;</span>
 724     <span class="s">}</span>
 725     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(;\n)</span><span class="sc">;</span>
 726     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(mview_param(&quot;mol&quot;, $Name);\n)</span><span class="sc">;</span>
 727 
 728     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(mview_param(&quot;navmode&quot;, &quot;$NavMode&quot;);\n)</span><span class="sc">;</span>
 729 
 730     <span class="k">for</span> <span class="i">$ParamName</span> <span class="s">(</span><span class="k">sort</span> <span class="k">keys</span> <span class="i">%ParamsMap</span><span class="s">)</span> <span class="s">{</span>
 731       <span class="i">$ParamValue</span> = <span class="i">$ParamsMap</span>{<span class="i">$ParamName</span>}<span class="sc">;</span>
 732       <span class="k">if</span> <span class="s">(</span><span class="k">length</span> <span class="i">$ParamValue</span><span class="s">)</span> <span class="s">{</span>
 733         <span class="i">$JavaScriptTags</span> .= <span class="q">qq(mview_param(&quot;$ParamName&quot;, &quot;$ParamValue&quot;);\n)</span><span class="sc">;</span>
 734       <span class="s">}</span>
 735     <span class="s">}</span>
 736     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(mview_end();\n)</span><span class="sc">;</span>
 737     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(&lt;/script&gt;\n)</span><span class="sc">;</span>
 738     <span class="i">$ReturnTags</span> = <span class="i">$JavaScriptTags</span><span class="sc">;</span>
 739   <span class="s">}</span>
 740   <span class="k">else</span> <span class="s">{</span>
 741     <span class="c"># Setup applet header...</span>
 742     <span class="i">$AppletTags</span> = <span class="q">qq(\n&lt;applet name=&quot;$Name&quot; id=&quot;$Name&quot; code=&quot;$Code&quot; archive=&quot;$Archive&quot; codebase=&quot;$CodeBase&quot; width=&quot;$Width&quot; height=&quot;$Height&quot;&gt;\n)</span><span class="sc">;</span>
 743 
 744     <span class="c"># Setup molecule data...</span>
 745     <span class="i">$AppletTags</span> .= <span class="q">qq(&lt;param name=&quot;mol&quot; value=&quot;$MolString&quot;&gt;\n)</span><span class="sc">;</span>
 746 
 747     <span class="i">$AppletTags</span> .= <span class="q">qq(&lt;param name=&quot;navmode&quot; value=&quot;$NavMode&quot;&gt;\n)</span><span class="sc">;</span>
 748 
 749     <span class="c">#Setup other parameters...</span>
 750     <span class="k">for</span> <span class="i">$ParamName</span> <span class="s">(</span><span class="k">sort</span> <span class="k">keys</span> <span class="i">%ParamsMap</span><span class="s">)</span> <span class="s">{</span>
 751       <span class="i">$ParamValue</span> = <span class="i">$ParamsMap</span>{<span class="i">$ParamName</span>}<span class="sc">;</span>
 752       <span class="k">if</span> <span class="s">(</span><span class="k">length</span> <span class="i">$ParamValue</span><span class="s">)</span> <span class="s">{</span>
 753         <span class="i">$AppletTags</span> .= <span class="q">qq(&lt;param name=&quot;$ParamName&quot; value=&quot;$ParamValue&quot;&gt;\n)</span><span class="sc">;</span>
 754       <span class="s">}</span>
 755     <span class="s">}</span>
 756     <span class="i">$AppletTags</span> .= <span class="q">qq(&lt;/applet&gt;\n)</span><span class="sc">;</span>
 757     <span class="i">$ReturnTags</span> = <span class="i">$AppletTags</span><span class="sc">;</span>
 758   <span class="s">}</span>
 759   <span class="k">return</span> <span class="i">$ReturnTags</span><span class="sc">;</span>
 760 <span class="s">}</span>
 761 
 762 <span class="c"># Setup MDL chime plug-in...</span>
<a name="SetupStrViewerChimePlugIn-"></a> 763 <span class="k">sub </span><span class="m">SetupStrViewerChimePlugIn</span> <span class="s">{</span>
 764   <span class="k">my</span><span class="s">(</span><span class="i">$MolFile</span><span class="cm">,</span> <span class="i">$ParamsMapRef</span><span class="cm">,</span> <span class="i">%ParamsMap</span><span class="cm">,</span> <span class="i">$Width</span><span class="cm">,</span> <span class="i">$Height</span><span class="cm">,</span> <span class="i">$ParamName</span><span class="cm">,</span> <span class="i">$ParamValue</span><span class="cm">,</span> <span class="i">$PlugInTags</span><span class="s">)</span><span class="sc">;</span>
 765   <span class="k">my</span><span class="s">(</span><span class="i">$Display2D</span><span class="s">)</span><span class="sc">;</span>
 766 
 767   <span class="i">$PlugInTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$ParamsMapRef</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">%ParamsMap</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
 768   <span class="i">$Width</span> = <span class="i">$StrViewerWidth</span><span class="sc">;</span> <span class="i">$Height</span> = <span class="i">$StrViewerHeight</span><span class="sc">;</span>
 769   <span class="i">$Display2D</span> = <span class="q">&quot;true&quot;</span><span class="sc">;</span>
 770 
 771   <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
 772     <span class="s">(</span><span class="i">$MolFile</span><span class="cm">,</span> <span class="i">$ParamsMapRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 773   <span class="s">}</span>
 774   <span class="k">else</span> <span class="s">{</span>
 775     <span class="s">(</span><span class="i">$MolFile</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 776   <span class="s">}</span>
 777 
 778   <span class="k">if</span> <span class="s">(</span><span class="i">$ParamsMapRef</span><span class="s">)</span> <span class="s">{</span>
 779     <span class="i">%ParamsMap</span> = <span class="i">%$ParamsMapRef</span><span class="sc">;</span>
 780     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">height</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Height</span> = <span class="i">$ParamsMap</span>{<span class="w">height</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">height</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 781     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">width</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Width</span> = <span class="i">$ParamsMap</span>{<span class="w">width</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">width</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 782     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">display2d</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Display2D</span> = <span class="i">$ParamsMap</span>{<span class="w">display2d</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">display2d</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 783   <span class="s">}</span>
 784   <span class="c"># Start plug-in tag...</span>
 785   <span class="i">$PlugInTags</span> = <span class="q">qq(&lt;embed src=&quot;$MolFile&quot; width=&quot;$Width&quot; height=&quot;$Height&quot; display2d=&quot;$Display2D&quot;)</span><span class="sc">;</span>
 786 
 787   <span class="c">#Setup other parameters...</span>
 788   <span class="k">for</span> <span class="i">$ParamName</span> <span class="s">(</span><span class="k">sort</span> <span class="k">keys</span> <span class="i">%ParamsMap</span><span class="s">)</span> <span class="s">{</span>
 789     <span class="i">$ParamValue</span> = <span class="i">$ParamsMap</span>{<span class="i">$ParamName</span>}<span class="sc">;</span>
 790     <span class="k">if</span> <span class="s">(</span><span class="k">length</span> <span class="i">$ParamValue</span><span class="s">)</span> <span class="s">{</span>
 791       <span class="i">$PlugInTags</span> .= <span class="q">qq( $ParamName=&quot;$ParamValue&quot;)</span><span class="sc">;</span>
 792     <span class="s">}</span>
 793   <span class="s">}</span>
 794 
 795   <span class="c"># Finish it off...</span>
 796   <span class="i">$PlugInTags</span> .= <span class="q">qq( &gt;)</span><span class="sc">;</span>
 797 
 798   <span class="k">return</span> <span class="i">$PlugInTags</span><span class="sc">;</span>
 799 <span class="s">}</span>
 800 
 801 <span class="c"># Setup Accelrys ViewerActiveX controls...</span>
<a name="SetupStrViewerAccelrysActiveX-"></a> 802 <span class="k">sub </span><span class="m">SetupStrViewerAccelrysActiveX</span> <span class="s">{</span>
 803   <span class="k">my</span><span class="s">(</span><span class="i">$MolFile</span><span class="cm">,</span> <span class="i">$ParamsMapRef</span><span class="cm">,</span> <span class="i">%ParamsMap</span><span class="cm">,</span> <span class="i">$ActiveXTags</span><span class="cm">,</span> <span class="i">$Name</span><span class="cm">,</span> <span class="i">$Width</span><span class="cm">,</span> <span class="i">$Height</span><span class="cm">,</span> <span class="i">$ParamName</span><span class="cm">,</span> <span class="i">$ParamValue</span><span class="s">)</span><span class="sc">;</span>
 804   <span class="k">my</span><span class="s">(</span><span class="i">$ClassId</span><span class="cm">,</span> <span class="i">$Convert2DTo3D</span><span class="cm">,</span> <span class="i">$Style</span><span class="cm">,</span> <span class="i">$Mouse</span><span class="s">)</span><span class="sc">;</span>
 805 
 806   <span class="i">$ActiveXTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>  <span class="i">$ParamsMapRef</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">%ParamsMap</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
 807   <span class="i">$Name</span> = <span class="q">&quot;ViewerActiveX&quot;</span><span class="sc">;</span> <span class="i">$Width</span> = <span class="i">$StrViewerWidth</span><span class="sc">;</span> <span class="i">$Height</span> = <span class="i">$StrViewerHeight</span><span class="sc">;</span>
 808   <span class="i">$ClassId</span> = <span class="q">&quot;clsid:90690CB6-BC07-11D4-AEF7-0050DA948176&quot;</span><span class="sc">;</span>
 809   <span class="i">$Convert2DTo3D</span> = <span class="q">&quot;0&quot;</span><span class="sc">;</span>
 810   <span class="i">$Mouse</span> = <span class="n">4</span><span class="sc">;</span>
 811 
 812   <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
 813     <span class="s">(</span><span class="i">$MolFile</span><span class="cm">,</span> <span class="i">$ParamsMapRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 814   <span class="s">}</span>
 815   <span class="k">else</span> <span class="s">{</span>
 816     <span class="s">(</span><span class="i">$MolFile</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 817   <span class="s">}</span>
 818 
 819   <span class="k">if</span> <span class="s">(</span><span class="i">$ParamsMapRef</span><span class="s">)</span> <span class="s">{</span>
 820     <span class="i">%ParamsMap</span> = <span class="i">%$ParamsMapRef</span><span class="sc">;</span>
 821     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">classid</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$ClassId</span> = <span class="i">$ParamsMap</span>{<span class="w">classid</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">classid</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 822     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">name</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Name</span> = <span class="i">$ParamsMap</span>{<span class="w">name</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">name</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 823     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">height</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Height</span> = <span class="i">$ParamsMap</span>{<span class="w">height</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">height</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 824     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">width</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Width</span> = <span class="i">$ParamsMap</span>{<span class="w">width</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">width</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 825     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">Convert2Dto3D</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Convert2DTo3D</span> = <span class="i">$ParamsMap</span>{<span class="w">Convert2Dto3D</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">Convert2Dto3D</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 826     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">Mouse</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Mouse</span> = <span class="i">$ParamsMap</span>{<span class="w">Mouse</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">Mouse</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 827     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">bgcolor</span>} <span class="s">)</span> <span class="s">{</span>
 828       <span class="k">my</span><span class="s">(</span><span class="i">$BgColor</span><span class="s">)</span> = <span class="i">$ParamsMap</span>{<span class="w">bgcolor</span>}<span class="sc">;</span>
 829       <span class="i">$ParamsMap</span>{<span class="w">bgcolor</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 830       <span class="c"># Get OLE color value: &amp;aabbggrr&amp;</span>
 831       <span class="c"># Set it to white for now...</span>
 832       <span class="i">$BgColor</span> = <span class="q">&quot;16777215&quot;</span><span class="sc">;</span>
 833       <span class="i">$ParamsMap</span>{<span class="w">BackColor</span>} = <span class="q">&quot;$BgColor&quot;</span><span class="sc">;</span>
 834     <span class="s">}</span>
 835   <span class="s">}</span>
 836   <span class="i">$Style</span> = <span class="q">qq(style=&quot;height: )</span> . <span class="i">$Height</span> . <span class="q">qq(px; width: )</span> . <span class="i">$Width</span> . <span class="q">qq(px&quot;)</span><span class="sc">;</span>
 837 
 838   <span class="c"># Setup object header...</span>
 839   <span class="i">$ActiveXTags</span> = <span class="q">qq(\n&lt;object id=&quot;$Name&quot; classid=&quot;$ClassId&quot; $Style&gt;\n)</span><span class="sc">;</span>
 840 
 841   <span class="c"># Setup molecule data...</span>
 842   <span class="i">$ActiveXTags</span> .= <span class="q">qq(&lt;param name=&quot;Source&quot; value=&quot;$MolFile&quot;&gt;\n&lt;param name=&quot;Mouse&quot; value=&quot;$Mouse&quot;&gt;\n&lt;param name=&quot;Convert2Dto3D&quot; value=&quot;$Convert2DTo3D&quot;&gt;\n)</span><span class="sc">;</span>
 843 
 844   <span class="c">#Setup other parameters...</span>
 845   <span class="k">for</span> <span class="i">$ParamName</span> <span class="s">(</span><span class="k">sort</span> <span class="k">keys</span> <span class="i">%ParamsMap</span><span class="s">)</span> <span class="s">{</span>
 846     <span class="i">$ParamValue</span> = <span class="i">$ParamsMap</span>{<span class="i">$ParamName</span>}<span class="sc">;</span>
 847     <span class="k">if</span> <span class="s">(</span><span class="k">length</span> <span class="i">$ParamValue</span><span class="s">)</span> <span class="s">{</span>
 848       <span class="i">$ActiveXTags</span> .= <span class="q">qq(&lt;param name=&quot;$ParamName&quot; value=&quot;$ParamValue&quot;&gt;\n)</span><span class="sc">;</span>
 849     <span class="s">}</span>
 850   <span class="s">}</span>
 851 
 852   <span class="c"># Finish it off...</span>
 853   <span class="i">$ActiveXTags</span> .= <span class="q">qq(&lt;/object&gt;\n)</span><span class="sc">;</span>
 854 
 855   <span class="k">return</span> <span class="i">$ActiveXTags</span><span class="sc">;</span>
 856 <span class="s">}</span>
 857 
 858 <span class="c"># Setup Chem3D ActiveX 8.0 control...</span>
<a name="SetupStrViewerChem3DActiveX-"></a> 859 <span class="k">sub </span><span class="m">SetupStrViewerChem3DActiveX</span> <span class="s">{</span>
 860   <span class="k">my</span><span class="s">(</span><span class="i">$MolFile</span><span class="cm">,</span> <span class="i">$ParamsMapRef</span><span class="cm">,</span> <span class="i">%ParamsMap</span><span class="cm">,</span> <span class="i">$ActiveXTags</span><span class="cm">,</span> <span class="i">$JavaScriptTags</span><span class="cm">,</span> <span class="i">$ReturnTags</span><span class="cm">,</span> <span class="i">$Name</span><span class="cm">,</span> <span class="i">$Width</span><span class="cm">,</span> <span class="i">$Height</span><span class="cm">,</span> <span class="i">$ParamName</span><span class="cm">,</span> <span class="i">$ParamValue</span><span class="s">)</span><span class="sc">;</span>
 861   <span class="k">my</span><span class="s">(</span><span class="i">$ClassId</span><span class="cm">,</span> <span class="i">$Style</span><span class="cm">,</span> <span class="i">$DisplayType</span><span class="cm">,</span> <span class="i">$RotationBars</span><span class="cm">,</span> <span class="i">$MovieController</span><span class="cm">,</span> <span class="i">$JSFileName</span><span class="cm">,</span> <span class="i">$UseJavaScript</span><span class="s">)</span><span class="sc">;</span>
 862 
 863   <span class="i">$ActiveXTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$JavaScriptTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$ReturnTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 864   <span class="i">$ParamsMapRef</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">%ParamsMap</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
 865   <span class="i">$Name</span> = <span class="q">&quot;Chem3D&quot;</span><span class="sc">;</span> <span class="i">$Width</span> = <span class="i">$StrViewerWidth</span><span class="sc">;</span> <span class="i">$Height</span> = <span class="i">$StrViewerHeight</span><span class="sc">;</span>
 866   <span class="i">$ClassId</span> = <span class="q">&quot;clsid:B7A6B8E4-3E8B-4D18-8F8F-B4057EFC784B&quot;</span><span class="sc">;</span>
 867   <span class="i">$DisplayType</span> = <span class="q">&quot;Ball&amp;Stick&quot;</span><span class="sc">;</span>
 868   <span class="i">$RotationBars</span> = <span class="q">&quot;false&quot;</span><span class="sc">;</span>
 869   <span class="i">$MovieController</span> = <span class="q">&quot;false&quot;</span><span class="sc">;</span>
 870 
 871   <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
 872     <span class="s">(</span><span class="i">$MolFile</span><span class="cm">,</span> <span class="i">$ParamsMapRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 873   <span class="s">}</span>
 874   <span class="k">else</span> <span class="s">{</span>
 875     <span class="s">(</span><span class="i">$MolFile</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 876   <span class="s">}</span>
 877 
 878   <span class="k">if</span> <span class="s">(</span><span class="i">$ParamsMapRef</span><span class="s">)</span> <span class="s">{</span>
 879     <span class="i">%ParamsMap</span> = <span class="i">%$ParamsMapRef</span><span class="sc">;</span>
 880     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">usejavascript</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$JSFileName</span> = <span class="i">$ParamsMap</span>{<span class="w">usejavascript</span>}<span class="sc">;</span> <span class="i">$UseJavaScript</span> = <span class="n">1</span><span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">usejavascript</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 881     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">classid</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$ClassId</span> = <span class="i">$ParamsMap</span>{<span class="w">classid</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">classid</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 882     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">name</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Name</span> = <span class="i">$ParamsMap</span>{<span class="w">name</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">name</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 883     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">height</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Height</span> = <span class="i">$ParamsMap</span>{<span class="w">height</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">height</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 884     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">width</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Width</span> = <span class="i">$ParamsMap</span>{<span class="w">width</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">width</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 885     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">displaytype</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$DisplayType</span> = <span class="i">$ParamsMap</span>{<span class="w">displaytype</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">displaytype</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 886     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">rotationbars</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$RotationBars</span> = <span class="i">$ParamsMap</span>{<span class="w">rotationbars</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">rotationbars</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 887     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">moviecontroller</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$MovieController</span> = <span class="i">$ParamsMap</span>{<span class="w">moviecontroller</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">moviecontroller</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 888   <span class="s">}</span>
 889   <span class="i">$Style</span> = <span class="q">qq(style=&quot;height: )</span> . <span class="i">$Height</span> . <span class="q">qq(px; width: )</span> . <span class="i">$Width</span> . <span class="q">qq(px&quot;)</span><span class="sc">;</span>
 890 
 891   <span class="k">if</span> <span class="s">(</span><span class="i">$UseJavaScript</span><span class="s">)</span> <span class="s">{</span>
 892     <span class="c">#Setup parameters...</span>
 893     <span class="k">my</span><span class="s">(</span><span class="i">$Params</span><span class="s">)</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 894     <span class="k">for</span> <span class="i">$ParamName</span> <span class="s">(</span><span class="k">sort</span> <span class="k">keys</span> <span class="i">%ParamsMap</span><span class="s">)</span> <span class="s">{</span>
 895       <span class="i">$ParamValue</span> = <span class="i">$ParamsMap</span>{<span class="i">$ParamName</span>}<span class="sc">;</span>
 896       <span class="k">if</span> <span class="s">(</span><span class="k">length</span> <span class="i">$ParamValue</span><span class="s">)</span> <span class="s">{</span>
 897         <span class="i">$Params</span> .= <span class="q">qq( $ParamName=&#39;$ParamValue&#39;)</span><span class="sc">;</span>
 898       <span class="s">}</span>
 899     <span class="s">}</span>
 900     <span class="i">$JavaScriptTags</span> = <span class="q">qq(\n&lt;script&gt;\n)</span><span class="sc">;</span>
 901     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(c3d_insert3dStr(&quot;name=&#39;$Name&#39; src=&#39;$MolFile&#39; width=&#39;$Width&#39; height=&#39;$Height&#39; displaytype=&#39;$DisplayType&#39; rotation_bars_visible=&#39;$RotationBars&#39; movie_controller_visible=&#39;$MovieController&#39; $Params&quot;);\n)</span><span class="sc">;</span>
 902     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(&lt;/script&gt;\n)</span><span class="sc">;</span>
 903     <span class="i">$ReturnTags</span> = <span class="i">$JavaScriptTags</span><span class="sc">;</span>
 904   <span class="s">}</span>
 905   <span class="k">else</span> <span class="s">{</span>
 906     <span class="c"># Setup object header...</span>
 907     <span class="i">$ActiveXTags</span> = <span class="q">qq(\n&lt;object id=&quot;$Name&quot; classid=&quot;$ClassId&quot; $Style&gt;\n)</span><span class="sc">;</span>
 908 
 909     <span class="c"># Setup molecule data...</span>
 910     <span class="i">$ActiveXTags</span> .= <span class="q">qq(&lt;param name=&quot;src&quot; value=&quot;$MolFile&quot;&gt;\n&lt;param name=&quot;displaytype&quot; value=&quot;$DisplayType&quot;&gt;\n&lt;param name=&quot;rotationbars&quot; value=&quot;$RotationBars&quot;&gt;\n&lt;param name=&quot;moviecontroller&quot; value=&quot;$MovieController&quot;&gt;\n)</span><span class="sc">;</span>
 911 
 912     <span class="c">#Setup other parameters...</span>
 913     <span class="k">for</span> <span class="i">$ParamName</span> <span class="s">(</span><span class="k">sort</span> <span class="k">keys</span> <span class="i">%ParamsMap</span><span class="s">)</span> <span class="s">{</span>
 914       <span class="i">$ParamValue</span> = <span class="i">$ParamsMap</span>{<span class="i">$ParamName</span>}<span class="sc">;</span>
 915       <span class="k">if</span> <span class="s">(</span><span class="k">length</span> <span class="i">$ParamValue</span><span class="s">)</span> <span class="s">{</span>
 916         <span class="i">$ActiveXTags</span> .= <span class="q">qq(&lt;param name=&quot;$ParamName&quot; value=&quot;$ParamValue&quot;&gt;\n)</span><span class="sc">;</span>
 917       <span class="s">}</span>
 918     <span class="s">}</span>
 919     <span class="i">$ActiveXTags</span> .= <span class="q">qq(&lt;/object&gt;\n)</span><span class="sc">;</span>
 920     <span class="i">$ReturnTags</span> = <span class="i">$ActiveXTags</span><span class="sc">;</span>
 921   <span class="s">}</span>
 922   <span class="k">return</span> <span class="i">$ReturnTags</span><span class="sc">;</span>
 923 <span class="s">}</span>
 924 
 925 <span class="c"># Setup ChemDraw ActiveX 8.0 control...</span>
 926 <span class="c"># Problems: &quot;bgcolor&quot; parameter doesn&#39;t work.</span>
<a name="SetupStrViewerChemDrawActiveX-"></a> 927 <span class="k">sub </span><span class="m">SetupStrViewerChemDrawActiveX</span> <span class="s">{</span>
 928   <span class="k">my</span><span class="s">(</span><span class="i">$MolFile</span><span class="cm">,</span> <span class="i">$ParamsMapRef</span><span class="cm">,</span> <span class="i">%ParamsMap</span><span class="cm">,</span> <span class="i">$ActiveXTags</span><span class="cm">,</span> <span class="i">$JavaScriptTags</span><span class="cm">,</span> <span class="i">$ReturnTags</span><span class="cm">,</span> <span class="i">$Name</span><span class="cm">,</span> <span class="i">$Width</span><span class="cm">,</span> <span class="i">$Height</span><span class="cm">,</span> <span class="i">$ParamName</span><span class="cm">,</span> <span class="i">$ParamValue</span><span class="s">)</span><span class="sc">;</span>
 929   <span class="k">my</span><span class="s">(</span><span class="i">$ClassId</span><span class="cm">,</span> <span class="i">$Style</span><span class="cm">,</span> <span class="i">$ViewOnly</span><span class="cm">,</span> <span class="i">$ShrinkToFit</span><span class="cm">,</span> <span class="i">$ShowToolsWhenVisible</span><span class="cm">,</span> <span class="i">$JSFileName</span><span class="cm">,</span> <span class="i">$UseJavaScript</span><span class="s">)</span><span class="sc">;</span>
 930 
 931   <span class="i">$ActiveXTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>  <span class="i">$JavaScriptTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$ReturnTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 932   <span class="i">$ParamsMapRef</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">%ParamsMap</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
 933   <span class="i">$Name</span> = <span class="q">&quot;ChemDraw&quot;</span><span class="sc">;</span> <span class="i">$Width</span> = <span class="i">$StrViewerWidth</span><span class="sc">;</span> <span class="i">$Height</span> = <span class="i">$StrViewerHeight</span><span class="sc">;</span>
 934   <span class="i">$ClassId</span> = <span class="q">&quot;clsid:51A649C4-3E3D-4557-9BD8-B14C0AD44B0C&quot;</span><span class="sc">;</span>
 935   <span class="i">$ViewOnly</span> = <span class="q">&quot;1&quot;</span><span class="sc">;</span> <span class="i">$JavaScriptTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 936   <span class="i">$ShrinkToFit</span> = <span class="q">&quot;1&quot;</span><span class="sc">;</span>
 937   <span class="i">$ShowToolsWhenVisible</span> = <span class="q">&quot;1&quot;</span><span class="sc">;</span>
 938 
 939   <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
 940     <span class="s">(</span><span class="i">$MolFile</span><span class="cm">,</span> <span class="i">$ParamsMapRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 941   <span class="s">}</span>
 942   <span class="k">else</span> <span class="s">{</span>
 943     <span class="s">(</span><span class="i">$MolFile</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
 944   <span class="s">}</span>
 945 
 946   <span class="k">if</span> <span class="s">(</span><span class="i">$ParamsMapRef</span><span class="s">)</span> <span class="s">{</span>
 947     <span class="i">%ParamsMap</span> = <span class="i">%$ParamsMapRef</span><span class="sc">;</span>
 948     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">usejavascript</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$JSFileName</span> = <span class="i">$ParamsMap</span>{<span class="w">usejavascript</span>}<span class="sc">;</span> <span class="i">$UseJavaScript</span> = <span class="n">1</span><span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">usejavascript</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 949     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">classid</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$ClassId</span> = <span class="i">$ParamsMap</span>{<span class="w">classid</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">classid</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 950     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">name</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Name</span> = <span class="i">$ParamsMap</span>{<span class="w">name</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">name</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 951     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">height</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Height</span> = <span class="i">$ParamsMap</span>{<span class="w">height</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">height</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 952     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">width</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Width</span> = <span class="i">$ParamsMap</span>{<span class="w">width</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">width</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 953     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">ViewOnly</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$ViewOnly</span> = <span class="i">$ParamsMap</span>{<span class="w">ViewOnly</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">ViewOnly</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 954     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">ShrinkToFit</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$ShrinkToFit</span> = <span class="i">$ParamsMap</span>{<span class="w">ShrinkToFit</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">ShrinkToFit</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 955     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">ShowToolsWhenVisible</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$ShowToolsWhenVisible</span> = <span class="i">$ParamsMap</span>{<span class="w">ShowToolsWhenVisible</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">ShowToolsWhenVisible</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
 956   <span class="s">}</span>
 957   <span class="k">if</span> <span class="s">(</span><span class="i">$UseJavaScript</span><span class="s">)</span> <span class="s">{</span>
 958     <span class="c">#Setup parameter...</span>
 959     <span class="k">my</span><span class="s">(</span><span class="i">$Params</span><span class="s">)</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
 960     <span class="k">for</span> <span class="i">$ParamName</span> <span class="s">(</span><span class="k">sort</span> <span class="k">keys</span> <span class="i">%ParamsMap</span><span class="s">)</span> <span class="s">{</span>
 961       <span class="i">$ParamValue</span> = <span class="i">$ParamsMap</span>{<span class="i">$ParamName</span>}<span class="sc">;</span>
 962       <span class="k">if</span> <span class="s">(</span><span class="k">length</span> <span class="i">$ParamValue</span><span class="s">)</span> <span class="s">{</span>
 963         <span class="i">$Params</span> .= <span class="q">qq( $ParamName=&#39;$ParamValue&#39;)</span><span class="sc">;</span>
 964       <span class="s">}</span>
 965     <span class="s">}</span>
 966     <span class="i">$JavaScriptTags</span> = <span class="q">qq(\n&lt;script&gt;\n)</span><span class="sc">;</span>
 967     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(cd_insertObjectStr(&quot;name=&#39;$Name&#39; src=&#39;$MolFile&#39; width=&#39;$Width&#39; height=&#39;$Height&#39; shrinktofit=&#39;$ShrinkToFit&#39; viewonly=&#39;$ViewOnly&#39; $Params&quot;);\n)</span><span class="sc">;</span>
 968     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(&lt;/script&gt;\n)</span><span class="sc">;</span>
 969     <span class="i">$ReturnTags</span> = <span class="i">$JavaScriptTags</span><span class="sc">;</span>
 970   <span class="s">}</span>
 971   <span class="k">else</span> <span class="s">{</span>
 972     <span class="i">$Style</span> = <span class="q">qq(style=&quot;height: )</span> . <span class="i">$Height</span> . <span class="q">qq(px; width: )</span> . <span class="i">$Width</span> . <span class="q">qq(px&quot;)</span><span class="sc">;</span>
 973 
 974     <span class="c"># Setup object header...</span>
 975     <span class="i">$ActiveXTags</span> = <span class="q">qq(\n&lt;object id=&quot;$Name&quot; classid=&quot;$ClassId&quot; $Style&gt;\n)</span><span class="sc">;</span>
 976 
 977     <span class="c"># Setup molecule data...</span>
 978     <span class="i">$ActiveXTags</span> .= <span class="q">qq(&lt;param name=&quot;SourceURL&quot; value=&quot;$MolFile&quot;&gt;\n&lt;param name=&quot;ShrinkToFit&quot; value=&quot;$ShrinkToFit&quot;&gt;\n&lt;param name=&quot;ViewOnly&quot; value=&quot;$ViewOnly&quot;&gt;\n&lt;param name=&quot;ShowToolsWhenVisible&quot; value=&quot;$ShowToolsWhenVisible&quot;&gt;\n)</span><span class="sc">;</span>
 979 
 980     <span class="c">#Setup other parameters...</span>
 981     <span class="k">for</span> <span class="i">$ParamName</span> <span class="s">(</span><span class="k">sort</span> <span class="k">keys</span> <span class="i">%ParamsMap</span><span class="s">)</span> <span class="s">{</span>
 982       <span class="i">$ParamValue</span> = <span class="i">$ParamsMap</span>{<span class="i">$ParamName</span>}<span class="sc">;</span>
 983       <span class="k">if</span> <span class="s">(</span><span class="k">length</span> <span class="i">$ParamValue</span><span class="s">)</span> <span class="s">{</span>
 984         <span class="i">$ActiveXTags</span> .= <span class="q">qq(&lt;param name=&quot;$ParamName&quot; value=&quot;$ParamValue&quot;&gt;\n)</span><span class="sc">;</span>
 985       <span class="s">}</span>
 986     <span class="s">}</span>
 987     <span class="i">$ActiveXTags</span> .= <span class="q">qq(&lt;/object&gt;\n)</span><span class="sc">;</span>
 988     <span class="i">$ReturnTags</span> = <span class="i">$ActiveXTags</span><span class="sc">;</span>
 989   <span class="s">}</span>
 990   <span class="k">return</span> <span class="i">$ReturnTags</span><span class="sc">;</span>
 991 <span class="s">}</span>
 992 
 993 <span class="c"># Setup ChemDraw plug-in used for Netscape browsers...</span>
 994 <span class="c"># Problems: &quot;bgcolor&quot; parameter doesn&#39;t work.</span>
<a name="SetupStrViewerChemDrawPlugIn-"></a> 995 <span class="k">sub </span><span class="m">SetupStrViewerChemDrawPlugIn</span> <span class="s">{</span>
 996   <span class="k">my</span><span class="s">(</span><span class="i">$MolFile</span><span class="cm">,</span> <span class="i">$Name</span><span class="cm">,</span> <span class="i">$ParamsMapRef</span><span class="cm">,</span> <span class="i">%ParamsMap</span><span class="cm">,</span> <span class="i">$Width</span><span class="cm">,</span> <span class="i">$Height</span><span class="cm">,</span> <span class="i">$ParamName</span><span class="cm">,</span> <span class="i">$ParamValue</span><span class="cm">,</span> <span class="i">$PlugInTags</span><span class="cm">,</span> <span class="i">$JavaScriptTags</span><span class="cm">,</span> <span class="i">$ReturnTags</span><span class="cm">,</span><span class="s">)</span><span class="sc">;</span>
 997   <span class="k">my</span><span class="s">(</span><span class="i">$MimeType</span><span class="cm">,</span> <span class="i">$ViewOnly</span><span class="cm">,</span> <span class="i">$ShrinkToFit</span><span class="cm">,</span> <span class="i">$ShowToolsWhenVisible</span><span class="cm">,</span> <span class="i">$JSFileName</span><span class="cm">,</span> <span class="i">$UseJavaScript</span><span class="s">)</span><span class="sc">;</span>
 998 
 999   <span class="i">$Name</span> = <span class="q">&quot;ChemDraw&quot;</span><span class="sc">;</span> <span class="i">$PlugInTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">$ParamsMapRef</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="i">%ParamsMap</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
1000   <span class="i">$Width</span> = <span class="i">$StrViewerWidth</span><span class="sc">;</span> <span class="i">$Height</span> = <span class="i">$StrViewerHeight</span><span class="sc">;</span>
1001   <span class="i">$MimeType</span> = <span class="q">&quot;chemical/x-mdl-molfile&quot;</span><span class="sc">;</span>
1002   <span class="i">$ViewOnly</span> = <span class="q">&quot;1&quot;</span><span class="sc">;</span>
1003   <span class="i">$ShrinkToFit</span> = <span class="q">&quot;1&quot;</span><span class="sc">;</span>
1004   <span class="i">$ShowToolsWhenVisible</span> = <span class="q">&quot;1&quot;</span><span class="sc">;</span> <span class="i">$JavaScriptTags</span> = <span class="q">&quot;&quot;</span><span class="sc">;</span>
1005 
1006   <span class="k">if</span> <span class="s">(</span><span class="i">@_</span> == <span class="n">2</span><span class="s">)</span> <span class="s">{</span>
1007     <span class="s">(</span><span class="i">$MolFile</span><span class="cm">,</span> <span class="i">$ParamsMapRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
1008   <span class="s">}</span>
1009   <span class="k">else</span> <span class="s">{</span>
1010     <span class="s">(</span><span class="i">$MolFile</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
1011   <span class="s">}</span>
1012 
1013   <span class="k">if</span> <span class="s">(</span><span class="i">$ParamsMapRef</span><span class="s">)</span> <span class="s">{</span>
1014     <span class="i">%ParamsMap</span> = <span class="i">%$ParamsMapRef</span><span class="sc">;</span>
1015     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">usejavascript</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$JSFileName</span> = <span class="i">$ParamsMap</span>{<span class="w">usejavascript</span>}<span class="sc">;</span> <span class="i">$UseJavaScript</span> = <span class="n">1</span><span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">usejavascript</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
1016     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">height</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Height</span> = <span class="i">$ParamsMap</span>{<span class="w">height</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">height</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
1017     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">width</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$Width</span> = <span class="i">$ParamsMap</span>{<span class="w">width</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">width</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
1018     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">type</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$MimeType</span> = <span class="i">$ParamsMap</span>{<span class="w">type</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">type</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
1019     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">viewonly</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$ViewOnly</span> = <span class="i">$ParamsMap</span>{<span class="w">viewonly</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">viewonly</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
1020     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">shrinktofit</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$ShrinkToFit</span> = <span class="i">$ParamsMap</span>{<span class="w">shrinktofit</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">shrinktofit</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
1021     <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$ParamsMap</span>{<span class="w">showtoolswhenvisible</span>} <span class="s">)</span> <span class="s">{</span> <span class="i">$ShowToolsWhenVisible</span> = <span class="i">$ParamsMap</span>{<span class="w">showtoolswhenvisible</span>}<span class="sc">;</span> <span class="i">$ParamsMap</span>{<span class="w">showtoolswhenvisible</span>} = <span class="q">&quot;&quot;</span><span class="sc">;</span> <span class="s">}</span>
1022   <span class="s">}</span>
1023   <span class="k">if</span> <span class="s">(</span><span class="i">$UseJavaScript</span><span class="s">)</span> <span class="s">{</span>
1024     <span class="i">$JavaScriptTags</span> = <span class="q">qq(\n&lt;script&gt;\n)</span><span class="sc">;</span>
1025     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(cd_insertObjectStr(&quot;name=&#39;$Name&#39; src=&#39;$MolFile&#39; type=&#39;$MimeType&#39; width=&#39;$Width&#39; height=&#39;$Height&#39; shrinktofit=&#39;$ShrinkToFit&#39; viewonly=&#39;$ViewOnly&#39;&quot;);\n)</span><span class="sc">;</span>
1026     <span class="i">$JavaScriptTags</span> .= <span class="q">qq(&lt;/script&gt;\n)</span><span class="sc">;</span>
1027     <span class="i">$ReturnTags</span> = <span class="i">$JavaScriptTags</span><span class="sc">;</span>
1028   <span class="s">}</span>
1029   <span class="k">else</span> <span class="s">{</span>
1030     <span class="c"># Start plug-in tag...</span>
1031     <span class="i">$PlugInTags</span> = <span class="q">qq(&lt;embed src=&quot;$MolFile&quot; width=&quot;$Width&quot; height=&quot;$Height&quot; type=&quot;$MimeType&quot; viewonly=&quot;$ViewOnly&quot; shrinktofit=&quot;$ShrinkToFit&quot; showtoolswhenvisible=&#39;&#39;$ShowToolsWhenVisible&quot;)</span><span class="sc">;</span>
1032 
1033     <span class="c">#Setup other parameters...</span>
1034     <span class="k">for</span> <span class="i">$ParamName</span> <span class="s">(</span><span class="k">sort</span> <span class="k">keys</span> <span class="i">%ParamsMap</span><span class="s">)</span> <span class="s">{</span>
1035       <span class="i">$ParamValue</span> = <span class="i">$ParamsMap</span>{<span class="i">$ParamName</span>}<span class="sc">;</span>
1036       <span class="k">if</span> <span class="s">(</span><span class="k">length</span> <span class="i">$ParamValue</span><span class="s">)</span> <span class="s">{</span>
1037         <span class="i">$PlugInTags</span> .= <span class="q">qq(&quot; $ParamName&quot;=&quot;$ParamValue&quot;)</span><span class="sc">;</span>
1038       <span class="s">}</span>
1039     <span class="s">}</span>
1040     <span class="c"># Finish it off...</span>
1041     <span class="i">$PlugInTags</span> .= <span class="q">qq( &gt;)</span><span class="sc">;</span>
1042     <span class="i">$ReturnTags</span> = <span class="i">$PlugInTags</span><span class="sc">;</span>
1043   <span class="s">}</span>
1044 
1045   <span class="k">return</span> <span class="i">$ReturnTags</span><span class="sc">;</span>
1046 <span class="s">}</span>
1047 
1048 
<a name="EOF-"></a></pre>
<p>&nbsp;</p>
<br />
<center>
<img src="../../../images/h2o2.png">
</center>
</body>
</html>