Subversion Repositories DevTools

Rev

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

Rev Author Line No. Line
127 ghuddy 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
4
'|                                                   |
5
'|         Eidt Release Licencing Details            |
6
'|                                                   |
7
'=====================================================
8
Option explicit
9
' Good idea to set when using redirect
10
Response.Expires = 0  ' always load the page, dont store
11
%>
12
<!--#include file="common/conf.asp"-->
13
<!--#include file="common/globals.asp"-->
14
<!--#include file="common/formating.asp"-->
15
<!--#include file="common/qstr.asp"-->
16
<!--#include file="common/common_subs.asp"-->
17
<!--#include file="common/_form_window_common.asp"-->
18
<%
19
' Make sure rtag_id is always present
20
If Request("rtag_id") = "" Then
21
	Response.Redirect("index.asp")
22
End If
23
 
24
' Set rfile parameter. This is a return page after Login
25
Call objPMod.StoreParameter ( "rfile", "dependencies.asp" )
26
'------------ ACCESS CONTROL ------------------
27
%>
28
<!--#include file="_access_control_login.asp"-->
29
<!--#include file="_access_control_general.asp"-->
30
<!--#include file="_access_control_project.asp"-->
31
<%
32
'------------ Variable Definition -------------
33
Dim selectedLicence
34
Dim httpReferer
35
 
36
'------------ Constants Declaration -----------
37
 
38
Const available_licences_query_string = " SELECT * from licences ORDER BY UPPER(name) "
39
 
40
'------------ Variable Init -------------------
41
 
42
httpReferer = "dependencies.asp?rtag_id="& CStr(parRtag_Id)
43
 
44
' Obtain selected licence from parameter list in the URL. If none given, set the default initial
45
' value to -1 to initiate its selection during html page rendering
46
selectedLicence = Request("selected_licence")
47
If (IsNull(selectedLicence) OR selectedLicence = "") Then
48
   selectedLicence = -1
49
End If
50
 
51
 
52
'--------------------------------------------------------------------------------------------------------------------------
53
'  release_licencing_query_string
54
'
55
'  DESCRIPTION
56
'     Constructs a query string using the provided release tag, designed to elicit
57
'     a list of PV_ID's, thier package names, versions and extensions, from the
58
'     release
59
'
60
'  INPUTS
61
'     NNrtag_id : The release tag to be used in the query string
62
'
63
Function release_licencing_query_string(NNrtag_id)
64
 
65
   release_licencing_query_string = "SELECT * FROM ("&_
66
                                    "      SELECT pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.v_ext"&_
67
                                    "        FROM release_content rc, package_versions pv, packages pkg "&_
68
                                    "       WHERE rc.rtag_id = "& CStr(NNrtag_id) &_
69
                                    "         AND pv.pv_id = rc.pv_id "&_
70
                                    "         AND pkg.pkg_id = pv.pkg_id "&_
71
                                    "      UNION "&_
72
                                    "      SELECT pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.v_ext"&_
73
                                    "        FROM work_in_progress wip, package_versions pv, packages pkg "&_
74
                                    "       WHERE wip.rtag_id = "& CStr(NNrtag_id) &_
75
                                    "         AND pv.pv_id = wip.pv_id "&_
76
                                    "         AND pkg.pkg_id = pv.pkg_id "&_
77
                                    "      UNION "&_
78
                                    "      SELECT pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.v_ext"&_
79
                                    "        FROM planned pl, package_versions pv, packages pkg"&_
80
                                    "       WHERE pl.rtag_id = "& CStr(NNrtag_id) &_
81
                                    "         AND pv.pv_id = pl.pv_id "&_
82
                                    "         AND pkg.pkg_id = pv.pkg_id "&_
83
                                    "         AND (pl.operation IS NULL OR pl.operation = 'R') "&_
84
                                    ") ORDER BY UPPER(pkg_name), UPPER(v_ext), pv_id DESC"
85
End Function
86
 
87
'--------------------------------------------------------------------------------------------------------------------------
88
'  IsLicenced
89
'
90
'  DESCRIPTION
91
'     Queries the database to determine if a supplied PV_ID is associated with
92
'     the provided licence
93
'
94
'  INPUTS
95
'     NNpv_id    : The PV_ID of the package version being examined
96
'     NNlicence  : The licence to be examined
97
'
98
'  OUTPUTS
99
'     TRUE if the PV_ID is associated with the licence, else FALSE
100
'
101
Function IsLicenced(NNpv_id, NNlicence)
102
 
103
   Dim IsLicencedQuery
104
   Dim IsLicencedQueryResults
105
 
106
   IsLicencedQuery = "SELECT * FROM licencing WHERE pv_id=" & CStr(NNpv_id) & " AND licence=" & CStr(NNlicence)
107
 
108
   Set IsLicencedQueryResults = OraDatabase.DbCreateDynaset( IsLicencedQuery, cint(0))
109
 
110
   If IsLicencedQueryResults.RecordCount = 0 Then
111
      IsLicenced = FALSE
112
   Else
113
      IsLicenced = TRUE
114
   End If
115
   IsLicencedQueryResults.Close()
116
   Set IsLicencedQueryResults = nothing
117
 
118
End Function
119
 
120
'--------------------------------------------------------------------------------------------------------------------------
121
'  AddLicencing
122
'
123
'  DESCRIPTION
124
'     Adds a licencing relationship to the database for the supplied PV_ID, and the
125
'     supplied Licence
126
'
127
'  INPUTS
128
'     NNpv_id    : The PV_ID of the package version to be used
129
'     NNlicence  : The licence to be used
130
'
131
Sub AddLicencing(NNpv_id, NNlicence)
132
   objEH.Try()
133
   OraDatabase.Parameters.Add "PV_ID",   NNpv_id,   ORAPARM_INPUT, ORATYPE_NUMBER
134
   OraDatabase.Parameters.Add "LICENCE", NNlicence, ORAPARM_INPUT, ORATYPE_NUMBER
135
   OraSession.BeginTrans
136
   OraDatabase.ExecuteSQL ("begin INSERT INTO licencing (pv_id, licence) VALUES (:PV_ID, :LICENCE); end;")
137
   OraSession.CommitTrans
138
   objEH.Catch()
139
   OraDatabase.Parameters.Remove "PV_ID"
140
   OraDatabase.Parameters.Remove "LICENCE"
141
End Sub
142
 
143
'--------------------------------------------------------------------------------------------------------------------------
144
'  RemoveLicencing
145
'
146
'  DESCRIPTION
147
'     Removes a licencing relationship from the database for the supplied PV_ID, and the
148
'     supplied Licence
149
'
150
'  INPUTS
151
'     NNpv_id    : The PV_ID of the package version to be used
152
'     NNlicence  : The licence to be used
153
'
154
Sub RemoveLicencing(NNpv_id, NNlicence)
155
   objEH.Try()
156
   OraDatabase.Parameters.Add "PV_ID",   NNpv_id,   ORAPARM_INPUT, ORATYPE_NUMBER
157
   OraDatabase.Parameters.Add "LICENCE", NNlicence, ORAPARM_INPUT, ORATYPE_NUMBER
158
   OraSession.BeginTrans
159
   OraDatabase.ExecuteSQL ("begin DELETE FROM licencing WHERE pv_id=:PV_ID AND licence=:LICENCE; end;")
160
   OraSession.CommitTrans
161
   objEH.Catch()
162
   OraDatabase.Parameters.Remove "PV_ID"
163
   OraDatabase.Parameters.Remove "LICENCE"
164
End Sub
165
 
166
'--------------------------------------------------------------------------------------------------------------------------
167
'  initialLicence
168
'
169
'  DESCRIPTION
170
'     Queries the database for a list of licences, and returns the first one in the list
171
'     which will be used as the default licence prior to a user making a specific alternative
172
'     selection via the drop down list
173
'
174
'  OUTPUTS
175
'     The first licence from the list, else -1 if list is empty
176
'
177
Function initialLicence
178
 
179
   Dim initialLicenceQuery
180
 
181
   Set initialLicenceQuery = OraDatabase.DbCreateDynaset( available_licences_query_string, cint(0) )
182
 
183
   If ((initialLicenceQuery.RecordCount  > 0) AND (NOT initialLicenceQuery.BOF) AND (NOT initialLicenceQuery.EOF)) Then
184
      initialLicence = CDbl(initialLicenceQuery("licence"))
185
   Else
186
      initialLicence = -1
187
   End If
188
 
189
   initialLicenceQuery.Close()
190
   Set initialLicenceQuery = nothing
191
End Function
192
 
193
'--------------------------------------------------------------------------------------------------------------------------
194
'  CheckFormEntryConditions
195
'
196
'  DESCRIPTION
197
'     Checks some conditions of entry to the form and takes action when conditions are not met
198
'
199
Sub CheckFormEntryConditions
200
 
201
   Dim CheckFormEntryConditionsQuery
202
 
203
   ' Check that at least one licence exists that can be associated with specific package versions. If there are no
204
   ' licences, then the form cannot be used.
205
   Set CheckFormEntryConditionsQuery = OraDatabase.DbCreateDynaset( available_licences_query_string, cint(0) )
206
   If CheckFormEntryConditionsQuery.RecordCount = 0 Then
207
      CheckFormEntryConditionsQuery.Close()
208
      Set CheckFormEntryConditionsQuery = nothing
209
      Call RaiseMsg( enum_MSG_NO_LICENCES_EXIST & "?rtag_id=" & CStr(parRtag_Id), 0 )
210
   End If
211
 
212
   CheckFormEntryConditionsQuery.Close()
213
   Set CheckFormEntryConditionsQuery = nothing
214
 
215
End Sub
216
 
217
'--------------------------------------------------------------------------------------------------------------------------
218
'  CheckFormSubmitActions
219
'
220
'  DESCRIPTION
221
'     Checks for any form submit actions and processes them accordingly
222
'
223
'     The form has a number of submit buttons (OK, APPLY, CANCEL)
224
'
225
'     The OK and APPLY buttons lead to the checkbox states being used to update the database.
226
'     The database updates are not performed when the CANCEL button is pressed.
227
'
228
'     Pressing OK or CANCEL takes the user out of the form and back to the original referer page.
229
'     Pressing APPLY leaves the user in the form so that they may make further licencing changes.
230
'
231
Sub CheckFormSubmitActions
232
 
233
   If Request("action") <> "" Then
234
      If objForm.IsValidOnPostBack Then
235
 
236
         If Request("btn_submit") = "Apply" OR Request("btn_submit") = "OK" Then
237
            Dim checkedItemsFromForm
238
            Dim checkedItemsArray
239
            Dim item
240
            Dim parSelectedLicence
241
            Dim checkedItemsDict
242
            Dim rsQry
243
 
244
            ' Get the selected licence - and cater for situation where user has not changed the selected licence in
245
            ' the drop down list since first opening the form
246
            parSelectedLicence = Request("selected_licence")
247
            If (IsNull(parSelectedLicence) OR parSelectedLicence = "") Then
248
               parSelectedLicence = initialLicence()
249
            End If
250
 
251
            ' Get the list of checked items from the form. They will be in a CSV format.
252
            ' Split the list at the commas and read each item into a dictionary so we can use it for testing against the
253
            ' full set of PV_IDs we get later.
254
            Set checkedItemsDict = CreateObject("Scripting.Dictionary")
255
            checkedItemsFromForm = Request("checked_pv_id_list")
256
            checkedItemsArray = Split(checkedItemsFromForm,",")
257
            For Each item in checkedItemsArray
258
               checkedItemsDict.Add Trim(CStr( item )), ""
259
            Next
260
 
261
            ' Get the record set for the entire set of PV_IDs in the release
262
            Set rsQry = OraDatabase.DbCreateDynaset( release_licencing_query_string(parRtag_Id), cint(0) )
263
 
264
            Do While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
265
 
266
               ' If the user has checked the item, and it does not already exist in the licencing table associated to the selected licence,
267
               ' then add a new row to the table to create that associatation
268
               If checkedItemsDict.Exists(CStr(rsQry("pv_id"))) Then
269
 
270
                  If (NOT IsLicenced(rsQry("pv_id"), parSelectedLicence)) Then
271
                     Call AddLicencing(rsQry("pv_id"), parSelectedLicence)
272
                  End If
273
               Else
274
                  ' Item is not checked, so we need to ensure that any association to the selected licence is removed
275
                  ' from the licencing table.
276
                  If (IsLicenced(rsQry("pv_id"), parSelectedLicence)) Then
277
                     Call RemoveLicencing(rsQry("pv_id"), parSelectedLicence)
278
                  End If
279
               End If
280
 
281
               rsQry.MoveNext
282
            Loop
283
 
284
            ' destroy objects
285
            rsQry.Close()
286
            Set rsQry = nothing
287
 
288
            checkedItemsDict.RemoveAll
289
            Set checkedItemsDict = nothing
290
 
291
            ' figure out where to go next
292
            If Request("btn_submit") = "OK" Then
293
               ' User has finished making licencing changes so go back to the referer page
294
               Call OpenInWindow ( httpReferer )
295
            Else
296
               ' else user pressed Apply, so stay in the form to let user make further licencing changes
297
               Call OpenInWindow ( "form_edit_release_licencing.asp?rtag_id=" & Request("rtag_id") & "&selected_licence=" & parSelectedLicence )
298
            End If
299
         Else
300
            ' User has cancelled so go back to the referer page
301
            Call OpenInWindow ( httpReferer )
302
         End If
303
      End If
304
   End If
305
End Sub
306
 
307
'--------------------------------------------------------------------------------------------------------------------------
308
'  LicenceDropDownHTML
309
'
310
'  DESCRIPTION
311
'     Constructs the HTML to render the drop down list and whilst doing so, updates the global selectedLicence variable
312
'
313
Function LicenceDropDownHTML
314
 
315
   Dim rsQry
316
   Dim html_string
317
 
318
   ' Get the full list of licences availabel from the database
319
   Set rsQry = OraDatabase.DbCreateDynaset( available_licences_query_string, cint(0) )
320
 
321
   ' Start of select tag
322
   ' This is designed such that when the user changes the selection, the page is re-rendered with the selected licence value passed
323
   ' in as a paramter as part of the URL along with the release tage
324
   html_string               = "<select name='selected_licence'"
325
   html_string = html_string & " onChange=""Cascaded_Menu('parent','"& scriptName &"?rtag_id="& parRtag_Id &"&selected_licence=',this,0)"""
326
   html_string = html_string & " class='form_item'>"
327
 
328
   ' Add each licence to the select, using the option tag, and set the initially selected option
329
   While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
330
      If CDbl(Request("selected_licence")) = CDbl(rsQry.Fields("licence")) or selectedLicence = -1 Then
331
         html_string = html_string & "<option value='"& rsQry.Fields("licence") &"' selected>"& rsQry.Fields("name") &"</option>"
332
         selectedLicence = CDbl(rsQry("licence"))
333
      Else
334
         html_string = html_string & "<option value='"& rsQry.Fields("licence") &"'>"& rsQry.Fields("name") &"</option>"
335
      End If
336
      rsQry.MoveNext
337
   WEnd
338
 
339
   ' destroy objects
340
   rsQry.Close()
341
   Set rsQry = nothing
342
 
343
   ' End of select tag
344
   html_string = html_string & "</select>"
345
 
346
   ' return result
347
   LicenceDropDownHTML = html_string
348
End Function
349
 
350
'--------------------------------------------------------------------------------------------------------------------------
351
'  PV_ID_ListHTML
352
'
353
'  DESCRIPTION
354
'     Constructs the HTML to render the rows of checkboxes, package names, versions and extensions
355
'
356
Function PV_ID_ListHTML
357
   Dim rsQry
358
   Dim html_string
359
 
360
   Set rsQry = OraDatabase.DbCreateDynaset( release_licencing_query_string(parRtag_Id), cint(0) )
361
 
362
   '--- Render rows ---
363
   Do While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
364
 
365
      ' BEGIN ROW
366
      html_string = html_string & "<tr>"
367
 
368
      ' CHECKBOX
369
      If (IsLicenced(rsQry("pv_id"), selectedLicence)) Then
370
         html_string = html_string & "<td align='center'><input type='checkbox' name='checked_pv_id_list' value=" & rsQry("pv_id") & " checked></td>"
371
      Else
372
         html_string = html_string & "<td align='center'><input type='checkbox' name='checked_pv_id_list' value=" & rsQry("pv_id") & "></td>"
373
      End If
374
 
375
      ' PACKAGE NAME
376
      html_string = html_string & "<td nowrap class='body_rowg'>" & rsQry("pkg_name") & "</td>"
377
 
378
      ' PACKAGE VERSION
379
      If IsNull(rsQry("v_ext")) Then
380
         html_string = html_string & "<td nowrap class='body_rowg'>" & rsQry("pkg_version") & "</td>"
381
      Else
382
         html_string = html_string & "<td nowrap class='body_rowg'>" & Left(rsQry("pkg_version"), Len(rsQry("pkg_version")) - Len(rsQry("v_ext")) ) & "</td>"
383
      End If
384
 
385
      ' PACKAGE EXTENSION
386
      html_string = html_string & "<td nowrap class='body_rowg'>" & rsQry("v_ext") & "</td>"
387
 
388
      ' END ROW
389
      html_string = html_string & "</tr>"
390
 
391
      rsQry.MoveNext
392
 
393
      ' ROW SEPERATOR
394
      If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
395
         html_string = html_string & "<tr><td colspan='8' background='images/bg_table_border.gif'><img src='images/spacer.gif' width='1' height='1'></td></tr>"
396
      End If
397
   Loop
398
 
399
   ' destroy objects
400
   rsQry.Close()
401
   Set rsQry = nothing
402
 
403
   ' return result
404
   PV_ID_ListHTML = html_string
405
End Function
406
 
407
'--------------------------------------------------------------------------------------------------------------------------
408
'--------------------------------------------------------------------------------------------------------------------------
409
'------------ RUN BEFORE PAGE RENDER ----------
410
 
411
Call CheckFormEntryConditions()
412
 
413
Call CheckFormSubmitActions()
414
 
415
'----------------------------------------------
416
%>
417
 
418
<html>
419
<head>
420
<title>Release Manager</title>
421
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
422
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
423
<link rel="stylesheet" href="images/release_manager_style.css" type="text/css">
424
<link rel="stylesheet" href="images/navigation.css" type="text/css">
425
<script language="JavaScript" src="images/common.js"></script>
426
<script language="JavaScript" src="scripts/remote_scripting.js"></script>
427
 
428
<!-- DROPDOWN MENUS -->
429
 
430
 
431
<!--#include file="_menu_def.asp"-->
432
<script language="JavaScript1.2" src="images/popup_menu.js"></script>
433
 
434
</head>
435
<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">
436
<!-- MENU LAYERS -------------------------------------->
437
<div id="popmenu" class="menuskin" onMouseover="clearhidemenu();highlightmenu(event,'on')" onMouseout="highlightmenu(event,'off');dynamichide(event)">
438
</div>
439
<!-- TIPS LAYERS -------------------------------------->
440
<div id="formTipsLayer" style="position: absolute; z-index: 1000; visibility: hidden; left:0; top: 0; width: 10">&nbsp;</div>
441
<!----------------------------------------------------->
442
<!-- HEADER -->
443
<!--#include file="_header.asp"-->
444
<!-- BODY ---->
445
 
446
<table width="100%" border="0" cellspacing="0" cellpadding="0">
447
   <%
448
   '-- FROM START ---------------------------------------------------------------------------------------------------------
449
 
450
   objFormComponent.FormName = "FormName"
451
   objFormComponent.Method = "post"
452
   objFormComponent.Action = ScriptName & "?rtag_id=" & parRtag_Id & "&selected_licence=" & Request("selected_licence")
453
   Call objFormComponent.FormStart()
454
   %>
455
   <tr>
456
      <td width="1" background="images/bg_home_orange.gif" valign="top"></td>
457
      <td width="100%" rowspan="2" align="center" valign="top" bgcolor="#EEEFEF">
458
         <table width="10" border="0" cellspacing="0" cellpadding="0">
459
            <tr>
460
               <td width="1%"></td>
461
               <td width="100%">
462
                  <table width="100%"  border="0" cellspacing="0" cellpadding="0">
463
                     <tr>
464
                        <td nowrap class="body_txt"></td>
465
                     </tr>
466
                  </table>
467
                  <table width="100%" border="0" cellspacing="0" cellpadding="0">
468
                     <tr>
469
                        <td nowrap class="form_ttl"><p>&nbsp;</p>
470
                           <p>EDIT RELEASE LICENCING DETAILS</p>
471
                        </td>
472
                        <td align="right" valign="bottom"></td>
473
                     </tr>
474
                  </table>
475
               </td>
476
               <td width="1%"></td>
477
            </tr>
478
            <tr>
479
               <td align="left" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tl_cnr_b.gif" width="13" height="13"></td>
480
               <td background="images/lbox_bg_blue.gif" class="lbox_ttl_w"><img src="images/h_trsp_dot.gif" width="600" height="15"></td>
481
               <td align="right" valign="top"  background="images/lbox_bg_blue.gif"><img src="images/lbox_tr_cnr_b.gif" width="13" height="13"></td>
482
            </tr>
483
            <tr>
484
               <td bgcolor="#FFFFFF"><img src="images/h_trsp_dot.gif" width="10" height="100"></td>
485
               <td bgcolor="#FFFFFF" valign="top">
486
                  <%
487
                  %>
488
                  <!-- MESSAGE +++++++++++++++++++++++++++++++++++++++++++++++++++ -->
489
                  <!--#include file="messages/_msg_inline.asp"-->
490
                  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
491
                  <br>
492
                  <table width="100%"  border="0" cellspacing="2" cellpadding="0">
493
                     <tr>
494
                        <td nowrap class="form_iname" valign="top">Select Licence</td>
495
                        <td valign="top" nowrap class="form_iname">
496
                           <%=LicenceDropDownHTML()%>
497
                        </td>
498
                        <td width="9%" valign="top"></td>
499
                        <tr>
500
                           <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col"></td>
501
                           <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Package Name</td>
502
                           <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Package Version</td>
503
                           <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Package Extension</td>
504
                           <td valign="top">
505
                        </tr>
506
                        <%=PV_ID_ListHTML()%>
507
                        <tr>
508
                           <td class="form_iname">&nbsp;</td>
509
                           <td>&nbsp;</td>
510
                           <td class="val_err"></td>
511
                        </tr>
512
                     </tr>
513
                  </table>
514
               </td>
515
               <td background="images/lbox_bgside_white.gif">&nbsp;</td>
516
            </tr>
517
            <tr>
518
               <td background="images/bg_action_norm.gif" ></td>
519
               <td align="right" background="images/bg_action_norm.gif" >
520
                  <input name="btn_submit" type="submit" class="form_btn" value="OK">
521
                  <input name="btn_submit" type="submit" class="form_btn" value="Apply">
522
                  <input name="btn_submit" type="submit" class="form_btn" value="Cancel">
523
                  <input type="hidden" name="action" value="true">
524
               </td>
525
               <td background="images/bg_action_norm.gif" ><img src="images/h_trsp_dot.gif" width="5" height="30"></td>
526
            </tr>
527
            <tr>
528
               <td background="images/lbox_bg_blue.gif" valign="bottom"><img src="images/lbox_bl_cnr_b.gif" width="13" height="13"></td>
529
               <td background="images/lbox_bg_blue.gif"></td>
530
               <td background="images/lbox_bg_blue.gif" valign="bottom" align="right"><img src="images/lbox_br_cnr_b.gif" width="13" height="13"></td>
531
            </tr>
532
         </table>
533
      </td>
534
      <td width="1" valign="top"><img src="images/h_trsp_dot.gif" width="1" height="1"></td>
535
   </tr>
536
   <tr>
537
      <td valign="bottom" align="center" background="images/bg_home_orange.gif"><img src="images/img_vtree.gif" width="86" height="99" vspace="20" hspace="30"></td>
538
      <td background="images/bg_lght_gray.gif" valign="top"><img src="images/h_trsp_dot.gif" width="1" height="500"></td>
539
   </tr>
540
   <%
541
   Call objFormComponent.FormEnd()
542
   '-- FROM END ----------------------------------------------------------------------------------------------------------------
543
   %>
544
</table>
545
<!-- FOOTER -->
546
<!--#include file="_footer.asp"-->
547
</body>
548
</html>
549
<%
550
Call Destroy_All_Objects
551
%>