Subversion Repositories DevTools

Rev

Rev 5635 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5623 dpurdie 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
4
'
5
'  Build Status and Plan Information
6
'
7
'=====================================================
8
%>
9
<%
10
Option explicit
11
' Good idea to set when using redirect
12
Response.Expires = 0  ' always load the page, dont store
13
%>
14
<!--#include file="common/conf.asp"-->
15
<!--#include file="common/globals.asp"-->
16
<!--#include file="common/formating.asp"-->
17
<!--#include file="common/qstr.asp"-->
18
<!--#include file="common/common_subs.asp"-->
19
<!--#include file="common/_form_window_common.asp"-->
20
<!--#include file="_action_buttons.asp"-->
21
<!--#include file="class/classActionButtonControl.asp"-->
22
<!--#include file="common/daemon_instructions.asp"-->
23
<%
24
'------------ ACCESS CONTROL ------------------
25
'Let users view the build status without being logged in, but as soon as they try and 
26
'submit the form, check their login status.
27
If Request("action") <> "" AND NOT objAccessControl.UserLogedIn Then%>
28
<!--#include file="_access_control_login.asp"-->
29
<!--#include file="_access_control_project.asp"-->
30
<%End If%>
31
<!--#include file="_access_control_general.asp"-->
32
<% '------------ Scripts -------------------------- %>
33
<%
34
'------------ Variable Definition -------------
35
Dim objSortHelper
36
Dim rsQry
37
Dim parRtagId
38
Dim query_string
39
Dim rcon_id
40
Dim rsQry2
41
'------------ Constants Declaration -----------
42
'------------ Variable Init -------------------
43
parRtagId = Request("rtag_id")
44
objPMod.PersistInQryString("rtag_id")
45
 
46
'----------------------------------------------
47
%>
48
<%
49
'--------------------------------------------------------------------------------------------------------------------------
50
Function PrettyDelta( delta, daemonState,pkgId )
51
    Dim style
52
    style = ""
53
 
54
    If (delta > 600) AND (IsNull(pkgId) OR pkgId = "") Then
55
      style = "style=color:Red"
56
      If (delta > 86400 ) Then
57
        Dim bdate, dd,mm,yy
58
        bdate = DateAdd("s", - delta,Now())
59
        dd = Day(bdate)
60
        mm = MonthName(Month(bdate),1)
61
        yy = Year( bdate)
62
        delta = dd & "-" & mm & "-" & yy
63
        If ( daemonState >= 2 ) Then
64
            style = ""
65
        End If
66
      ElseIf ( delta > 60*60 ) Then
67
        'Dim bdate, hh, mins, ss
68
        bdate = DateAdd("s", - delta,Now())
69
        delta = TimeValue( bdate)
70
        'delta = hh & ":" & mins & ":" & ss
71
      End If
72
    End If
73
 
74
    If style <> "" Then
75
        delta = "<span " & style & ">" & delta & "</span>"
76
    End If
77
    PrettyDelta = delta
78
End Function
79
'--------------------------------------------------------------------------------------------------------------------------
80
Function Get_Daemon_Mode( cMode )
81
 
82
   If cMode = "S" Then
83
      Get_Daemon_Mode = "Slave"
84
   ElseIf cMode = "M" Then
85
      Get_Daemon_Mode = "Master"
86
   End If
87
 
88
End Function
89
'--------------------------------------------------------------------------------------------------------------------------
90
Function Get_Run_Level( nLevel, indefinitePause, astate)
91
 
92
   If indefinitePause Then
93
      Get_Run_Level = "<span class='err_alert'>Stopped</span>"
94
   ElseIf astate = 1 Then      ' if build daemon paused
95
      Get_Run_Level = "Paused"
96
   ElseIf astate = 2 Then      ' if build daemon disabled
97
      Get_Run_Level = "Disabled"
98
   ElseIf astate = 0 Then     ' if build daemon enabled
99
      If nLevel = 1 Then
100
         Get_Run_Level = "Cannot Continue"
101
      ElseIf nLevel = 2 Then
102
         Get_Run_Level = "Paused"
103
      ElseIf nLevel = 3 Then
104
         Get_Run_Level = "Building"
105
      ElseIf nLevel = 4 Then
106
         Get_Run_Level = "Idle"
107
      ElseIf nLevel = 5 Then
108
         Get_Run_Level = "Waiting"
109
      ElseIf nLevel = 6 Then
110
         Get_Run_Level = "Publishing"
111
      Else
112
         Get_Run_Level = "<span class='err_alert'>Unknown!</span>"
113
      End If
114
   End If
115
 
116
End Function
117
 
118
'--------------------------------------------------------------------------------------------------------------------------
119
Function Get_Package_Name( sPackageName,nRtagId,nPkgPvid )
120
 
121
  If IsNull(sPackageName) Then
122
    Get_Package_Name = "None"
123
  ElseIf IsNull(nPkgPvid) or nPkgPvid <= 0 Then
124
    Get_Package_Name = sPackageName
125
  Else
126
    Get_Package_Name = "<a class=""txt_linked"" href=""dependencies.asp?pv_id=" +  nPkgPvid + "&rtag_id=" + nRtagId + """>" + sPackageName + "</a>"
127
  End If
128
 
129
End Function
130
'--------------------------------------------------------------------------------------------------------------------------
131
Function GetLastBuildAge( rtagid)
132
   Dim  query_string, rsQry
133
       query_string = "SELECT TRUNC (86400*(SYSDATE - rl.LAST_BUILD)) as delta," &_
134
                      "       TO_CHAR(rl.LAST_BUILD, 'DD-Mon-YYYY') as last_build," &_
135
                      "       TO_CHAR(rl.LAST_BUILD, 'HH:MM:SS PM') as last_build_hours," &_
136
                      "       TRUNC (SYSDATE - rl.LAST_BUILD) as last_build_days" &_
137
                      " FROM RELEASE_CONFIG rc, RUN_LEVEL rl, BUILD_MACHINE_CONFIG bm " &_
138
                      " WHERE rc.RTAG_ID =" &rtagid &_
139
                      "   AND rc.bmcon_id is not null" &_
140
                      "   AND rl.RCON_ID = rc.RCON_ID" &_
141
                      "   AND rc.bmcon_id = bm.bmcon_id(+)"
142
 
143
        Set rsQry = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT )
144
        If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
145
            Dim delta, last_build, last_build_time, last_build_days
146
            If IsNull(rsQry("delta")) Then
147
                delta = 0
148
            Else
149
                delta = CLng(rsQry("delta"))
150
            End If
151
            last_build = rsQry("last_build")
152
            last_build_time = rsQry("last_build_hours")
153
            last_build_days = rsQry("last_build_days")
154
            If delta < (60*60*24) Then
155
                GetLastBuildAge = last_build_time  
156
            Else     
157
                GetLastBuildAge = last_build
158
            End If
159
        End If
160
        rsQry.Close()
161
        Set rsQry = nothing
162
 
163
End Function
164
 
165
'--------------------------------------------------------------------------------------------------------------------------
166
Function GetModifiedSeqNo( rtagid)
167
   Dim  query_string, rsQry
168
       query_string = "SELECT SEQNUM FROM RELEASE_MODIFIED WHERE RTAG_ID = " & rtagid
169
 
170
        Set rsQry = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT )
171
        If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
172
            GetModifiedSeqNo = rsQry("SEQNUM")
173
        Else
174
            GetModifiedSeqNo = "-"
175
        End If
176
        rsQry.Close()
177
        Set rsQry = nothing
178
 
179
End Function
180
'--------------------------------------------------------------------------------------------------------------------------
181
'------------ RUN BEFORE PAGE RENDER ----------
182
%>
183
<html>
184
   <head>
185
      <title>Release Manager</title>
186
      <link rel="shortcut icon" href="<%=FavIcon%>"/>
187
      <meta http-equiv="Pragma" content="no-cache">
188
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
189
      <link rel="stylesheet" href="images/release_manager_style.css" type="text/css">
190
      <link rel="stylesheet" href="images/navigation.css" type="text/css">
191
      <script language="JavaScript" src="images/common.js"></script>
192
      <!--#include file="_jquery_includes.asp"-->
193
      <!-- TIPS -->
194
      <script type="text/javascript" src="scripts/json2.js"></script>
195
      <script language="JavaScript" src="images/tipster.js"></script>
196
      <script language="JavaScript" src="images/_help_tips.js"></script>
197
      <script language="JavaScript" type="text/JavaScript">
198
      formTips.tips.h_buildplan       = stdTip(300, 'Build Plan', 'The build plan is a guess as to the order in which packages will be built.' +
199
                                                                  '<p>It will be recalculated before each build.' + 
200
                                                                  '<p>The plan includes test builds, new builds and resultant ripples.' 
201
                                                                  );
202
      formTips.tips.h_lastchange       = stdTip(300, 'Last Change', 'This is an indication of the time since the daemon interogated the database.' +
203
                                                                  '<p>Short times will be shown as seconds. Longer times will be shown as a time within ' + 
204
                                                                  'the last 24 hours. Longer times will be shown as a date.' 
205
                                                                  );
206
 
207
      </script>
208
      <!-- DROPDOWN MENUS -->
209
      <!--#include file="_menu_def.asp"-->
210
      <script language="JavaScript1.2" src="images/popup_menu.js"></script>
211
   </head>
212
   <body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" >
213
      <!-- MENU LAYERS -------------------------------------->
214
      <div id="popmenu" class="menuskin" onmouseover="clearhidemenu();highlightmenu(event,'on')" onmouseout="highlightmenu(event,'off');dynamichide(event)"></div>
215
      <!-- TIPS LAYERS -------------------------------------->
216
      <div id="formTipsLayer" style="position: absolute; z-index: 1000; visibility: hidden; left:0; top: 0; width: 10">&nbsp;</div>
217
      <!----------------------------------------------------->
218
      <!-- HEADER -->
219
      <!--#include file="_header.asp"-->
220
      <!-- BODY ---->
221
      <table width="100%" border="0" cellspacing="0" cellpadding="0">
222
         <tr>
223
            <td width="1" background="images/bg_home_orange.gif" valign="top"></td>
224
            <td width="100%" rowspan="2" align="center" valign="top" bgcolor="#EEEFEF">
225
               <table width="10" border="0" cellspacing="0" cellpadding="0">
226
                  <tr>
227
                     <td width="1%"></td>
228
                     <td width="100%">
229
                        <table width="100%" border="0" cellspacing="0" cellpadding="0">
230
                           <tr>
231
                              <td nowrap class="form_ttl"><p>&nbsp;</p>
232
                                 <p>DAEMON STATUS INFORMATION</p>
233
                              </td>
234
                              <td  valign="bottom" class="body_rowg">
235
                                Last Build: <%=GetLastBuildAge(parRtagId)%> [<%=GetModifiedSeqNo(parRtagId)%>]
236
                              </td>
237
                              <td align="right" valign="bottom">
238
                                <a class="txt_linked" href="<%=scriptName%>?rtag_id=<%=parRtagId%>" title="Refresh Page">[Refresh]</a></td>
239
                              </td>
240
                           </tr>
241
                        </table>
242
                     </td>
243
                     <td width="1%"></td>
244
                  </tr>
245
                  <tr>
246
                     <td align="left" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tl_cnr_b.gif" width="13" height="13"></td>
247
                     <td background="images/lbox_bg_blue.gif" class="lbox_ttl_w"><img src="images/h_trsp_dot.gif" width="600" height="15"></td>
248
                     <td align="right" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tr_cnr_b.gif" width="13" height="13"></td>
249
                  </tr>
250
                  <tr>
251
                     <td bgcolor="#FFFFFF"><img src="images/h_trsp_dot.gif" width="10" height="100"></td>
252
                     <td bgcolor="#FFFFFF" valign="top">
253
                        <!-- MESSAGE +++++++++++++++++++++++++++++++++++++++++++++++++++ -->
254
                        <!--#include file="messages/_msg_inline.asp"-->
255
                        <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
256
                        <br>
257
                        <table width="100%" border="0" cellspacing="2" cellpadding="0">
258
                           <%
259
                           Dim indefinitelyPaused
260
                           indefinitelyPaused = FALSE
261
                           ' Insert a warning into the page if the build daemons are indefintely paused.
262
                           query_string = " select * from run_level_schedule rls where rls.indefinite_pause = 'P'"
263
 
264
                           Set rsQry = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT )
265
                           If rsQry.RecordCount > 0 Then
266
                              indefinitelyPaused = TRUE %>
267
                              <tr>
268
                                 <span class='err_alert'>
269
                                    <font size='2'><b>WARNING: Build Daemons are all stopped - please contact an administrator</b></font>
270
                                 </span>
271
                              </tr>
272
                           <%End If
273
 
274
                           rsQry.Close()
275
                           Set rsQry = nothing
276
                           %>
277
                           <td width="9%" valign="top"></td>
278
                           <tr>
279
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Daemon Host</td>
280
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Machine Type</td>
281
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Mode</td>
282
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Run Level</td>
283
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Current Package</td>
284
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Last Change<%=Quick_Help("h_lastchange")%></td>
285
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Control State</td>
286
                           </tr>
287
                           <%
288
                           ' Get the number of release configurations for this RTAG_ID, and iterate through them
289
                           query_string = " select * from release_config rc, gbe_machtype gm, build_machine_config bm"&_
290
                                          "  where rc.rtag_id = "& parRtagId &_
291
                                          "    and gm.gbe_id = rc.gbe_id"&_
292
                                          "    and rc.bmcon_id=bm.bmcon_id(+)" &_
293
                                          "  order by bm.display_name, rc.rcon_id"
294
 
295
                           Set rsQry = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT )
296
 
297
                           Do While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
298
                              rcon_id = rsQry("rcon_id")
299
 
300
                              Dim pkgName
301
                              Dim pkgPvid
302
                              Dim currentRunLevel
303
                              Dim daemonState
304
                              Dim delta
305
                              Dim pkgId
306
 
307
                              ' For this release configuration, get its entry from the run_level table. This table may not
308
                              ' have an entry so we must handle that outcome too.
309
                              query_string = " select rl.pause, rl.current_run_level, rl.current_pkg_id_being_built, "&_
310
                                             "        TRUNC (86400*(SYSDATE - rl.KEEP_ALIVE)) as delta" &_
311
                                             "   from run_level rl"&_
312
                                             "  where rl.rcon_id = "& rcon_id
313
 
314
                              Set rsQry2 = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT )
315
 
316
                              currentRunLevel = -1
317
                              pkgId = Null
318
                              pkgName = NULL
319
                              pkgPvid = NULL
320
                              daemonState = 0
321
                              delta = NULL
322
 
323
                              If (rsQry2.RecordCount > 0) Then
324
                                ' Get the run level from the run_level table
325
                                currentRunLevel = rsQry2("current_run_level")
326
                                pkgId = rsQry2("current_pkg_id_being_built")
327
 
328
                                daemonState = rsQry2("pause")
329
                                If IsNull(daemonState) Then daemonState = 0
330
                                If daemonState = "2" Then pkgId = Null
331
 
332
                                delta = rsQry2("delta")
333
                              End If
334
 
335
                              ' If we got an entry from the run_level table, try and use the pkg_id it contains, to obtain a
336
                              ' package name from the packages table
337
                              Dim rsQry3
338
                              If NOT IsNull(pkgId) Then
339
                                 query_string = " select pkg_name,rl.current_pv_id from run_level rl, packages pk"&_
340
                                                "  where rl.rcon_id = "& rcon_id &_
341
                                                "   and  rl.current_pkg_id_being_built = pk.pkg_id"
342
 
343
                                 Set rsQry3 = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT )
344
                                 If (rsQry3.RecordCount > 0) Then
345
                                    pkgName = rsQry3("pkg_name")
346
                                    pkgPvid = rsQry3("current_pv_id")
347
                                 End If
348
                                 rsQry3.Close()
349
                                 Set rsQry3 = nothing
350
                              End If
351
 
352
                              ' --- Now render HTML for this release configuration ---
353
                              %>
354
                              <tr>
355
                                 <td colspan="7" background="images/bg_rep_line.gif"><img src="images/spacer.gif" width="1" height="1"></td>
356
                              </tr>
357
                              <tr>
358
                                 <td nowrap class="body_rowg"><%=rsQry("display_name")%></td>
359
                                 <td nowrap class="body_rowg"><%=rsQry("gbe_value")%></td>
360
                                 <td nowrap class="body_rowg"><%=Get_Daemon_Mode(rsQry("daemon_mode"))%></td>
361
                                 <td nowrap class="body_rowg"><%=Get_Run_Level(currentRunLevel, indefinitelyPaused,daemonState)%></td>
362
                                 <td nowrap class="body_rowg"><%=Get_Package_Name(pkgName,parRtagId,pkgPvid)%></td>
363
                                 <td nowrap class="body_rowg"><%=PrettyDelta(delta, daemonState,pkgName )%></td>
364
                                 <td nowrap class="body_rowg">
365
                                    <%
366
                                    If (rsQry2.RecordCount > 0) AND NOT indefinitelyPaused  Then
367
                                       If objAccessControl.UserLogedIn AND canActionControlInProject("BuildControl") Then
368
                                          If daemonState = 0 Then
369
                                             Call Action_Buttons ( "Daemon Pause" )
370
                                          ElseIf daemonState = 1 Then
371
                                             Call Action_Buttons ( "Daemon Resume" )
372
                                          ElseIf daemonState = 2 Then
373
                                             Call Action_Buttons ( "Daemon Start" )
374
                                          Else
375
                                             Call Action_Buttons ( "Daemon Resume" )
376
                                          End If
377
                                       Else
378
                                          If daemonState = 0 Then
379
                                             Call Action_Buttons ( "Daemon Pause Disabled" )
380
                                          ElseIf daemonState = 1 Then
381
                                             Call Action_Buttons ( "Daemon Resume Disabled" )
382
                                          ElseIf daemonState = 2 Then
383
                                             Call Action_Buttons ( "Daemon Start Disabled" )
384
                                          Else
385
                                             Call Action_Buttons ( "Daemon Resume Disabled" )
386
                                          End If
387
                                       End If
388
                                    Else
389
                                       %>Unavailable<%
390
                                    End If
391
                                    %>
392
                                 </td>
393
                              </tr>
394
                              <%
395
                              rsQry2.Close()
396
                              Set rsQry2 = nothing
397
                              rsQry.MoveNext
398
                           Loop
399
                           %>
400
                           <tr>
401
                             <td valign="bottom" background="images/bg_table_col.gif" class="body_col"></td>
402
                             <td valign="bottom" nowrap background="images/bg_table_col.gif" class="body_col"></td>
403
                             <td valign="bottom" nowrap background="images/bg_table_col.gif" class="body_col"></td>
404
                             <td valign="bottom" background="images/bg_table_col.gif" class="body_col"></td>
405
                             <td valign="bottom" nowrap background="images/bg_table_col.gif" class="body_col"></td>
406
                             <td valign="bottom" nowrap background="images/bg_table_col.gif" class="body_col"></td>
407
                             <td valign="bottom" nowrap background="images/bg_table_col.gif" class="body_col">
408
                             <%
409
                               If (rsQry.RecordCount > 0) AND NOT indefinitelyPaused  Then
410
                                 If objAccessControl.UserLogedIn AND canActionControlInProject("BuildControl") Then
411
                                   Call Action_Buttons ( "Daemon Control All" )
412
                                 Else 
413
                                   Call Action_Buttons ( "Daemon Control All Disabled" )
414
                                 End If
415
                               Else
416
                                 %>&nbsp<%
417
                               End If
418
                             %>
419
                             </td>
420
                           </tr>
421
                           <%
422
                             rsQry.Close()
423
                             Set rsQry = nothing
424
                           %>
425
                        </table>
426
                     </td>
427
                     <td background="images/lbox_bgside_white.gif">&nbsp;</td>
428
                  </tr>
429
                  <tr>
430
                     <input type="hidden" name="action" value="true">
431
                     <%=objPMod.ComposeHiddenTags()%>
432
                     <td background="images/lbox_bg_blue.gif" valign="bottom"><img src="images/lbox_bl_cnr_b.gif" width="13" height="13"></td>
433
                     <td background="images/lbox_bg_blue.gif"></td>
434
                     <td background="images/lbox_bg_blue.gif" valign="bottom" align="right"><img src="images/lbox_br_cnr_b.gif" width="13" height="13"></td>
435
                  </tr>
436
               </table>
437
 
438
               <!-- Planned Builds Display -->
439
               <table width="10" border="0" cellspacing="0" cellpadding="0">
440
                  <tr>
441
                     <td width="1%"></td>
442
                     <td width="100%">
443
                        <table width="100%" border="0" cellspacing="0" cellpadding="0">
444
                           <tr>
445
                              <td nowrap class="form_ttl"><p>&nbsp;</p>
446
                                 <p>DAEMON BUILD PLAN<%=Quick_Help("h_buildplan")%></p>
447
                              </td>
448
                              <td align="right" valign="bottom"></td>
449
                           </tr>
450
                        </table>
451
                     </td>
452
                     <td width="1%"></td>
453
                  </tr>
454
                  <tr>
455
                     <td align="left" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tl_cnr_b.gif" width="13" height="13"></td>
456
                     <td background="images/lbox_bg_blue.gif" class="lbox_ttl_w"><img src="images/h_trsp_dot.gif" width="600" height="15"></td>
457
                     <td align="right" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tr_cnr_b.gif" width="13" height="13"></td>
458
                  </tr>
459
                  <tr>
460
                     <td bgcolor="#FFFFFF"><img src="images/h_trsp_dot.gif" width="10" ></td>
461
                     <td bgcolor="#FFFFFF" valign="top">
462
                        <table width="100%" border="0" cellspacing="2" cellpadding="0">
463
                           <tr>
464
                              <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">Package</td>
465
                              <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">Version</td>
466
                           </tr>
467
                           <%
468
                           Dim PkgVersion
469
                           Set rsQry = OraDatabase.DbCreateDynaset( "SELECT p.PKG_NAME," &_
470
                                                                    "  pv.PKG_VERSION," &_
471
                                                                    "  bp.PV_ID" &_
472
                                                                    " FROM build_plan bp," &_
473
                                                                    "  packages p," &_
474
                                                                    "  package_versions pv" &_
475
                                                                    " WHERE bp.PV_ID = pv.pv_id" &_
476
                                                                    " AND RTAG_ID = " & parRtagId &_
477
                                                                    " AND pv.PKG_ID  = p.pkg_id" &_
478
                                                                    " ORDER BY build_order" , ORADYN_DEFAULT )
479
                           While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
480
                              %>
481
                              <tr>
482
 
483
                                 <td align="left" valign="top" class="body_txt">
484
                                    <%=Get_Package_Name(rsQry("PKG_NAME"), parRtagId, rsQry("PV_ID"))%>
485
                                 </td>
486
                                 <td align="left" valign="top" class="body_txt">
487
                                    <%=rsQry("PKG_VERSION")%>
488
                                 </td>
489
                              </tr>
490
                              <tr>
491
                                 <td colspan="6" background="images/bg_rep_line.gif"><img src="images/spacer.gif" width="1" height="1"></td>
492
                              </tr>
493
                              <%
494
                              rsQry.MoveNext()
495
                           Wend
496
                           rsQry.Close()
497
                           Set rsQry = nothing
498
                           %>
499
                        </table>
500
                     </td>
501
                     <td background="images/lbox_bgside_white.gif">&nbsp;</td>
502
                  </tr>
503
                  <tr>
504
                     <td background="images/lbox_bg_blue.gif" valign="bottom"><img src="images/lbox_bl_cnr_b.gif" width="13" height="13"></td>
505
                     <td background="images/lbox_bg_blue.gif"></td>
506
                     <td background="images/lbox_bg_blue.gif" valign="bottom" align="right"><img src="images/lbox_br_cnr_b.gif" width="13" height="13"></td>
507
                  </tr>
508
               </table>
509
 
510
            </td>
511
            <td width="1" valign="top"><img src="images/h_trsp_dot.gif" width="1" height="1"></td>
512
         </tr>
513
         <tr>
514
            <td valign="bottom" align="center" background="images/bg_home_orange.gif">
515
                <img src="images/img_gear.gif" width="86" height="99" vspace="20" hspace="30">
516
            </td>
517
            <td background="images/bg_lght_gray.gif" valign="top"><img src="images/h_trsp_dot.gif" width="1" height="350">
518
            </td>
519
         </tr>
520
      </table>
521
      <!-- FOOTER -->
522
      <!--#include file="_footer.asp"-->
523
   </body>
524
</html>
525
<%
526
Call Destroy_All_Objects
527
%>