File: app_variables.htm

package info (click to toggle)
zeroc-ice 3.3.1-12
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 40,720 kB
  • ctags: 46,971
  • sloc: cpp: 241,481; java: 104,729; cs: 66,568; python: 18,996; makefile: 5,797; xml: 5,397; ruby: 4,788; php: 3,172; yacc: 3,113; lex: 2,223; ansic: 1,249; perl: 1,200; sh: 182; sql: 73
file content (236 lines) | stat: -rw-r--r-- 23,354 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- saved from url=(0029)http://www.helpandmanual.com/ -->
<head><script type="text/javascript" src="helpman_topicinit.js"></script>
<!-- Redirect browser to frame page if page is not in the content frame. -->
<script type="text/javascript">
<!--
if (top.location.search.lastIndexOf("toc=0")<=0) {
  if (top.frames.length==0) { top.location.href="index.html?app_variables.htm"; }
  else { parent.lazysync('app_variables.htm'); }
}
//-->
</script>
<script type="text/javascript" src="highlight.js"></script>
   <title>Variables</title>
   <meta name="generator" content="Help & Manual">
   <meta name="keywords" content="Pre-Defined Variables,application,application.distrib,node,node.os,node.hostname,node.release,node.version,node.machine,node.datadir,server,server.distrib,service,session.id">
   <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <link type="text/css" href="styles.css" rel="stylesheet">
   <link type="text/css" href="custom.css" rel="stylesheet">
   <script type="text/javascript" src="nsh.js"></script>
   
<!-- non-scrolling headers for CHM and browser-based help, local styles-->
<style TYPE="text/css" media="screen"> 
   <!-- 
   body {    
      margin:0; 
      padding:0; 
      overflow: auto; 
      background: #FFFFFF; 
   } 
   #idheader { 
      width:100%; 
      height:auto; 
      padding: 0; 
      margin: 0; 
} 
    #idheaderbg  {
    background: #6F6F6F; 
}
   -->
   </style>
   
<style TYPE="text/css" MEDIA="print">
<!--
/* Hide navigation links and add space between header
     and text in the printed version. Not valid for eBooks. */
#idnav { display:none;	 }
.topichead { padding: 5px 5px 20px 5px; }
-->
</style>   
</head>
<body onload="highlight();">
<div id="hmpopupDiv" style="visibility:hidden; position:absolute; z-index:1000; filter:progid:DXImageTransform.Microsoft.DropShadow(color='b0b0b0', Direction=135, OffX='3', OffY='3') progid:DXImageTransform.Microsoft.Fade(Overlap=1.00);"></div>
<!--ZOOMSTOP-->

<div id="idheader">
<div id="idheaderbg">
<table width="100%" border="0" cellspacing="0" cellpadding="0" 
       style="margin: 0px; color: #6F6F6F; background: url(header_bg.jpg);">

  <tr valign="bottom">
    <td align="left" valign="bottom" class="topichead">
   <p class="crumbs" id="idnav"><b>Navigation:</b>&nbsp;
   
   <a href="application.htm">Application</a>&nbsp;&gt;</p>
   <p class="p_Heading1"><span class="f_Heading1">Variables</span></p>

    </td>
    <td align="right" width="120" valign="middle" class="topichead" id="idnav">
    <a href="javascript: print();"
    		onmouseover="document.images.prntr.src='print1.gif'" 
        onmouseout="document.images.prntr.src='print2.gif'"
        ><img name="prntr" border="0" alt="Print this Topic" title="Print this Topic" src="print2.gif"
        ></a>
     <a href="app_navigation.htm"
        onmouseover="document.images.prev.src='btn_prev_h.gif'" 
        onmouseout="document.images.prev.src='btn_prev_n.gif'"
        ><img name=prev src="btn_prev_n.gif" border=0 alt="Previous page"
        ></a><a href="application.htm"
        onmouseover="document.images.main.src='btn_home_h.gif'" 
        onmouseout="document.images.main.src='btn_home_n.gif'"><img name=main src="btn_home_n.gif" border=0 alt="Return to chapter overview"
        ></a><a href="app_descriptors.htm"
        onmouseover="document.images.next.src='btn_next_h.gif'" 
        onmouseout="document.images.next.src='btn_next_n.gif'"><img name=next src="btn_next_n.gif" border=0 alt="Next page"
        ></a>
    </td>
  </tr>
  <tr><td colspan="2" style="height: 3px; background: url(header_bg_shadow.gif)"></td></tr>
</table>
</div>

<!-- The following code displays Expand All/Collapse All links  below the header in topics containing toggles -->
  

</div>  



<div id="idcontent"><div id="innerdiv"> 
<!--ZOOMRESTART-->
<p>Variables allow you to define commonly-used information once and refer to them symbolically throughout your application descriptors.</p>
<p class="p_Heading2"><span class="f_Heading2">Syntax</span></p>
<p class="p_IndentList2"><span class="f_IndentList2">Substitution for a variable or parameter </span><span class="f_T_Code">VP</span><span class="f_IndentList2"> is attempted whenever the symbol </span><span class="f_T_Code">${VP}</span><span class="f_IndentList2"> is encountered, subject to the limitations and rules described below. Substitution is case-sensitive, and a fatal error occurs if </span><span class="f_T_Code">VP</span><span class="f_IndentList2"> is not defined when the application is saved to an IceGrid registry.</span></p>
<p class="p_Heading2Sub"><span class="f_Heading2Sub">Where are Variables Allowed?</span></p>
<p class="p_IndentList2"><span class="f_IndentList2">Substitution is performed in all string fields except the following:</span></p>
<div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 10px 30px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="13"><span style="font-size: 11pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000;">&#8226;</span></td><td><span class="f_IndentList2">server and service template IDs (when defining a template or when referring to a template)</span></td></tr></table></div><div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 10px 30px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="13"><span style="font-size: 11pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000;">&#8226;</span></td><td><span class="f_IndentList2">variable names</span></td></tr></table></div><div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 10px 30px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="13"><span style="font-size: 11pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000;">&#8226;</span></td><td><span class="f_IndentList2">template parameter names</span></td></tr></table></div><div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 10px 30px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="13"><span style="font-size: 11pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000;">&#8226;</span></td><td><span class="f_IndentList2">node names</span></td></tr></table></div><div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 10px 30px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="13"><span style="font-size: 11pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000;">&#8226;</span></td><td><span class="f_IndentList2">application names</span></td></tr></table></div><p class="p_Heading2Sub"><span class="f_Heading2Sub">Escaping a Variable</span></p>
<p class="p_IndentList2"><span class="f_IndentList2">You can prevent substitution by escaping a variable reference with an additional leading $ character. For example, in order to assign the literal string </span><span class="f_T_Code">${abc} </span><span class="f_IndentList2">to a variable, you would use</span><span class="f_T_Code"> $${abc} </span>as this variable's value.</p>
<p class="p_IndentList2">The extra $ symbol is only meaningful when immediately preceding a variable reference, therefore text such as <span class="f_T_Code">US$$55</span> is not modified. Each occurrence of the characters $$ preceding a variable reference is replaced with a single $ character, and that character does not initiate a variable reference.</p>
<p class="p_Heading2"><span class="f_Heading2">Pre-Defined Variables</span></p>
<p class="p_IndentList2"><span class="f_IndentList2">IceGrid defines a set of read-only variables to hold information that may be of use to descriptors. The names of these variables are reserved and cannot be used as variable or parameter names. The table below describes the purpose of each variable and defines the context in which it is valid.</span></p>
<p class="p_IndentList2"><span class="f_IndentList2">&nbsp;</span></p>
<div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 10px 30px;"><table cellspacing="0" cellpadding="0" border="1" style="border: solid 2px #808080; border-spacing:0px; border-collapse: collapse;">
<tr style="text-align:left;vertical-align:top;">
<td valign="top" width="166" style="width:166px; border: solid 1px #808080;"><p class="p_NormalHead"><span class="f_NormalHead">Name</span></p>
</td>
<td valign="top" width="683" style="width:683px; border: solid 1px #808080;"><p class="p_NormalHead"><span class="f_NormalHead">Description</span></p>
</td>
</tr>
<tr style="text-align:left;vertical-align:top;">
<td valign="top" width="166" style="width:166px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">application</span></p>
</td>
<td valign="top" width="683" style="width:683px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">The name of the enclosing application.</span></p>
</td>
</tr>
<tr style="text-align:left;vertical-align:top;">
<td valign="top" width="166" style="width:166px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">application.distrib</span></p>
</td>
<td valign="top" width="683" style="width:683px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">The pathname of the enclosing applications distribution directory, and an alias for </span><span class="f_T_Code">${node.datadir}/distrib/${application}</span><span class="f_TableText">.</span></p>
</td>
</tr>
<tr style="text-align:left;vertical-align:top;">
<td valign="top" width="166" style="width:166px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">node</span></p>
</td>
<td valign="top" width="683" style="width:683px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">The name of the enclosing node.</span></p>
</td>
</tr>
<tr style="text-align:left;vertical-align:top;">
<td valign="top" width="166" style="width:166px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">node.os</span></p>
</td>
<td valign="top" width="683" style="width:683px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">The name of the enclosing nodes operating system. On Unix, this is value is provided by uname. On Windows, the value is Windows.</span></p>
</td>
</tr>
<tr style="text-align:left;vertical-align:top;">
<td valign="top" width="166" style="width:166px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">node.hostname</span></p>
</td>
<td valign="top" width="683" style="width:683px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">The host name of the enclosing node.</span></p>
</td>
</tr>
<tr style="text-align:left;vertical-align:top;">
<td valign="top" width="166" style="width:166px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">node.release</span></p>
</td>
<td valign="top" width="683" style="width:683px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">The operation system release of the enclosing node. On Unix, this value is provided by uname. On Windows, the value is obtained from the </span><span class="f_T_Code">OSVERSIONINFO</span><span class="f_TableText"> data structure.</span></p>
</td>
</tr>
<tr style="text-align:left;vertical-align:top;">
<td valign="top" width="166" style="width:166px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">node.version</span></p>
</td>
<td valign="top" width="683" style="width:683px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">The operation system version of the enclosing node. On Unix, this value is provided by uname. On Windows, the value represents the current service pack level.</span></p>
</td>
</tr>
<tr style="text-align:left;vertical-align:top;">
<td valign="top" width="166" style="width:166px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">node.machine</span></p>
</td>
<td valign="top" width="683" style="width:683px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">The machine hardware name of the enclosing node. On Unix, this value is provided by uname. On Windows, the value is x86 or x64.</span></p>
</td>
</tr>
<tr style="text-align:left;vertical-align:top;">
<td valign="top" width="166" style="width:166px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">node.datadir</span></p>
</td>
<td valign="top" width="683" style="width:683px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">The absolute pathname of the enclosing nodes data directory.</span></p>
</td>
</tr>
<tr style="text-align:left;vertical-align:top;">
<td valign="top" width="166" style="width:166px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">server</span></p>
</td>
<td valign="top" width="683" style="width:683px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">The ID of the enclosing server.</span></p>
</td>
</tr>
<tr style="text-align:left;vertical-align:top;">
<td valign="top" width="166" style="width:166px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">server.distrib</span></p>
</td>
<td valign="top" width="683" style="width:683px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">The pathname of the enclosing servers distribution directory, and an alias for </span><span class="f_T_Code">${node.datadir}/servers/${server}/distrib</span><span class="f_TableText">.</span></p>
</td>
</tr>
<tr style="text-align:left;vertical-align:top;">
<td valign="top" width="166" style="width:166px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">service</span></p>
</td>
<td valign="top" width="683" style="width:683px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">The name of the enclosing service.</span></p>
</td>
</tr>
<tr style="text-align:left;vertical-align:top;">
<td valign="top" width="166" style="width:166px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">session.id</span></p>
</td>
<td valign="top" width="683" style="width:683px; border: solid 1px #808080;"><p class="p_TableText"><span class="f_TableText">The client session identifier. For sessions created with a user name and password, the value is the user ID; for sessions created from a secure connection, the value is the distinguished name associated with the connection.</span></p>
</td>
</tr>
</table>
</div>
<p>&nbsp;</p>
<p class="p_IndentList2"><span class="f_IndentList2">The availability of a variable is easily determined in some cases, but may not be readily apparent in others. For example, you can use the ${node} variable in a property value within a server template definition, because variables in the body of a server template are only evaluated when the server template is instantiated on a specific node.</span></p>
<p class="p_Heading2"><span class="f_Heading2">Variable Substitution in IceGrid Admin Forms</span></p>
<p class="p_IndentList2"><span class="f_IndentList2">In a number of forms, you can substitute variables and template parameters by their respecitive value. Use </span><span class="f_T_Menu">View &gt; Show Variables</span><span class="f_IndentList2"> and </span><span class="f_T_Menu">View &gt; Substitute Variables </span><span class="f_IndentList2">or the corresponding toolbar toggle buttons:</span></p>
<p class="p_IndentList3"><img src="variables.png" width="97" height="58" border="0" alt=""></p>
<p class="p_IndentList2"><span class="f_IndentList2">When variable-substitution is enabled, the descriptors are displayed read-only.</span></p>
<p class="p_Heading2"><span class="f_Heading2">Scoping Rules</span></p>
<p class="p_IndentList2"><span class="f_IndentList2">Descriptors may only define variables at the application and node levels. Each node introduces a new scope, such that defining a variable at the node level overrides (but does not modify) the value of an application variable with the same name. Similarly, a template parameter overrides the value of a variable with the same name in an enclosing scope. A descriptor may refer to a variable defined in any enclosing scope, but its value is determined by the nearest scope. The diagram below illustrates these concepts:</span></p>
<p class="p_IndentList3"><img src="variable-scopes.png" width="717" height="717" border="0" alt=""></p>
<p class="p_IndentList3"><span class="f_IndentList3">&nbsp;</span></p>
<p class="p_IndentList2"><span class="f_IndentList2">In this diagram, the variable x is defined at the application level with the value 1. In nodeA, x is overridden with the value 2, whereas x remains unchanged in nodeB. Within the context of nodeA, x continues to have the value 2 in a server instance definition. However, when x is used as the name of a template parameter, the nodes definition of x is overridden and x has the value 3 in the templates scope.</span></p>
<p class="p_Heading2"><span class="f_Heading2">Resolving a Reference</span></p>
<p class="p_IndentList2"><span class="f_IndentList2">To resolve a variable reference </span><span class="f_T_Code">${var}</span><span class="f_IndentList2">, IceGrid searches for a definition of var using the following order of precedence:</span></p>
<div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 10px 30px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="13"><span style="font-size: 11pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000;">&#8226;</span></td><td><span class="f_IndentList2">Pre-defined variables</span></td></tr></table></div><div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 10px 30px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="13"><span style="font-size: 11pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000;">&#8226;</span></td><td><span class="f_IndentList2">Template parameters, if applicable</span></td></tr></table></div><div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 10px 30px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="13"><span style="font-size: 11pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000;">&#8226;</span></td><td><span class="f_IndentList2">Node variables, if applicable</span></td></tr></table></div><div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 10px 30px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="13"><span style="font-size: 11pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000;">&#8226;</span></td><td><span class="f_IndentList2">Application variables</span></td></tr></table></div><p class="p_IndentList2"><span class="f_IndentList2">After the initial substitution, any remaining references are resolved recursively using the following order of precedence:</span></p>
<div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 10px 30px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="13"><span style="font-size: 11pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000;">&#8226;</span></td><td><span class="f_IndentList2">Pre-defined variables</span></td></tr></table></div><div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 10px 30px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="13"><span style="font-size: 11pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000;">&#8226;</span></td><td><span class="f_IndentList2">Node variables, if applicable</span></td></tr></table></div><div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 10px 30px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="13"><span style="font-size: 11pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000;">&#8226;</span></td><td><span class="f_IndentList2">Application variables</span></td></tr></table></div><div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 10px 30px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="13"><span style="font-size: 11pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000;">&#8226;</span></td><td><span class="f_IndentList2">Template Parameters</span></td></tr></table></div><p class="p_IndentList2"><span class="f_IndentList2">Template parameters are not visible in nested template instances. This situation can only occur when an IceBox server template instantiates a service template. </span></p>
<p class="p_Heading2"><span class="f_Heading2">Modifying a Variable</span></p>
<p class="p_IndentList2"><span class="f_IndentList2">A variable definition can be overridden in an inner scope, but the inner definition does not modify the outer variable.</span></p>

<!--ZOOMSTOP-->
<p>&nbsp;</p><hr size="1"><p class="fsmall">Page url: 
<a href="http://www.zeroc.com/doc/Ice-3.3.1/IceGridAdmin/index.html?app_variables.htm" target="_top">http://www.zeroc.com/doc/Ice-3.3.1/IceGridAdmin/index.html?app_variables.htm</a>
</p>
</div></div>
<script type="text/javascript"> 
<!-- 
var lastSlashPos = document.URL.lastIndexOf("/") >
document.URL.lastIndexOf("\\") ? document.URL.lastIndexOf("/") :
document.URL.lastIndexOf("\\");
if( document.URL.substring( lastSlashPos + 1, lastSlashPos + 4
).toLowerCase() != "~hh" )
{
    nsrInit();
}
--> 
</script> 
</body>
</html>