Subversion Repositories DevTools

Rev

Rev 129 | Details | Compare with Previous | 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
   OraDatabase.Parameters.Add "PV_ID",   NNpv_id,   ORAPARM_INPUT, ORATYPE_NUMBER
133
   OraDatabase.Parameters.Add "LICENCE", NNlicence, ORAPARM_INPUT, ORATYPE_NUMBER
129 ghuddy 134
 
135
   On Error Resume Next
136
   objEH.TryORA( OraSession )
127 ghuddy 137
   OraDatabase.ExecuteSQL ("begin INSERT INTO licencing (pv_id, licence) VALUES (:PV_ID, :LICENCE); end;")
129 ghuddy 138
   objEH.CatchORA( OraSession )
139
 
127 ghuddy 140
   OraDatabase.Parameters.Remove "PV_ID"
141
   OraDatabase.Parameters.Remove "LICENCE"
142
End Sub
143
 
144
'--------------------------------------------------------------------------------------------------------------------------
145
'  RemoveLicencing
146
'
147
'  DESCRIPTION
148
'     Removes a licencing relationship from the database for the supplied PV_ID, and the
149
'     supplied Licence
150
'
151
'  INPUTS
152
'     NNpv_id    : The PV_ID of the package version to be used
153
'     NNlicence  : The licence to be used
154
'
155
Sub RemoveLicencing(NNpv_id, NNlicence)
156
   OraDatabase.Parameters.Add "PV_ID",   NNpv_id,   ORAPARM_INPUT, ORATYPE_NUMBER
157
   OraDatabase.Parameters.Add "LICENCE", NNlicence, ORAPARM_INPUT, ORATYPE_NUMBER
129 ghuddy 158
 
159
   On Error Resume Next
160
   objEH.TryORA( OraSession )
127 ghuddy 161
   OraDatabase.ExecuteSQL ("begin DELETE FROM licencing WHERE pv_id=:PV_ID AND licence=:LICENCE; end;")
129 ghuddy 162
   objEH.CatchORA( OraSession )
163
 
127 ghuddy 164
   OraDatabase.Parameters.Remove "PV_ID"
165
   OraDatabase.Parameters.Remove "LICENCE"
166
End Sub
167
 
168
'--------------------------------------------------------------------------------------------------------------------------
169
'  initialLicence
170
'
171
'  DESCRIPTION
172
'     Queries the database for a list of licences, and returns the first one in the list
173
'     which will be used as the default licence prior to a user making a specific alternative
174
'     selection via the drop down list
175
'
176
'  OUTPUTS
177
'     The first licence from the list, else -1 if list is empty
178
'
179
Function initialLicence
180
 
181
   Dim initialLicenceQuery
182
 
183
   Set initialLicenceQuery = OraDatabase.DbCreateDynaset( available_licences_query_string, cint(0) )
184
 
185
   If ((initialLicenceQuery.RecordCount  > 0) AND (NOT initialLicenceQuery.BOF) AND (NOT initialLicenceQuery.EOF)) Then
186
      initialLicence = CDbl(initialLicenceQuery("licence"))
187
   Else
188
      initialLicence = -1
189
   End If
190
 
191
   initialLicenceQuery.Close()
192
   Set initialLicenceQuery = nothing
193
End Function
194
 
195
'--------------------------------------------------------------------------------------------------------------------------
196
'  CheckFormEntryConditions
197
'
198
'  DESCRIPTION
199
'     Checks some conditions of entry to the form and takes action when conditions are not met
200
'
201
Sub CheckFormEntryConditions
202
 
203
   Dim CheckFormEntryConditionsQuery
204
 
205
   ' Check that at least one licence exists that can be associated with specific package versions. If there are no
206
   ' licences, then the form cannot be used.
207
   Set CheckFormEntryConditionsQuery = OraDatabase.DbCreateDynaset( available_licences_query_string, cint(0) )
208
   If CheckFormEntryConditionsQuery.RecordCount = 0 Then
209
      CheckFormEntryConditionsQuery.Close()
210
      Set CheckFormEntryConditionsQuery = nothing
211
      Call RaiseMsg( enum_MSG_NO_LICENCES_EXIST & "?rtag_id=" & CStr(parRtag_Id), 0 )
212
   End If
213
 
214
   CheckFormEntryConditionsQuery.Close()
215
   Set CheckFormEntryConditionsQuery = nothing
216
 
217
End Sub
218
 
219
'--------------------------------------------------------------------------------------------------------------------------
220
'  CheckFormSubmitActions
221
'
222
'  DESCRIPTION
223
'     Checks for any form submit actions and processes them accordingly
224
'
225
'     The form has a number of submit buttons (OK, APPLY, CANCEL)
226
'
227
'     The OK and APPLY buttons lead to the checkbox states being used to update the database.
228
'     The database updates are not performed when the CANCEL button is pressed.
229
'
230
'     Pressing OK or CANCEL takes the user out of the form and back to the original referer page.
231
'     Pressing APPLY leaves the user in the form so that they may make further licencing changes.
232
'
233
Sub CheckFormSubmitActions
234
 
235
   If Request("action") <> "" Then
236
      If objForm.IsValidOnPostBack Then
237
 
238
         If Request("btn_submit") = "Apply" OR Request("btn_submit") = "OK" Then
239
            Dim checkedItemsFromForm
240
            Dim checkedItemsArray
241
            Dim item
242
            Dim parSelectedLicence
243
            Dim checkedItemsDict
244
            Dim rsQry
245
 
246
            ' Get the selected licence - and cater for situation where user has not changed the selected licence in
247
            ' the drop down list since first opening the form
248
            parSelectedLicence = Request("selected_licence")
249
            If (IsNull(parSelectedLicence) OR parSelectedLicence = "") Then
250
               parSelectedLicence = initialLicence()
251
            End If
252
 
253
            ' Get the list of checked items from the form. They will be in a CSV format.
254
            ' Split the list at the commas and read each item into a dictionary so we can use it for testing against the
255
            ' full set of PV_IDs we get later.
256
            Set checkedItemsDict = CreateObject("Scripting.Dictionary")
257
            checkedItemsFromForm = Request("checked_pv_id_list")
258
            checkedItemsArray = Split(checkedItemsFromForm,",")
259
            For Each item in checkedItemsArray
260
               checkedItemsDict.Add Trim(CStr( item )), ""
261
            Next
262
 
263
            ' Get the record set for the entire set of PV_IDs in the release
264
            Set rsQry = OraDatabase.DbCreateDynaset( release_licencing_query_string(parRtag_Id), cint(0) )
265
 
266
            Do While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
267
 
268
               ' If the user has checked the item, and it does not already exist in the licencing table associated to the selected licence,
269
               ' then add a new row to the table to create that associatation
270
               If checkedItemsDict.Exists(CStr(rsQry("pv_id"))) Then
271
 
272
                  If (NOT IsLicenced(rsQry("pv_id"), parSelectedLicence)) Then
273
                     Call AddLicencing(rsQry("pv_id"), parSelectedLicence)
274
                  End If
275
               Else
276
                  ' Item is not checked, so we need to ensure that any association to the selected licence is removed
277
                  ' from the licencing table.
278
                  If (IsLicenced(rsQry("pv_id"), parSelectedLicence)) Then
279
                     Call RemoveLicencing(rsQry("pv_id"), parSelectedLicence)
280
                  End If
281
               End If
282
 
283
               rsQry.MoveNext
284
            Loop
285
 
286
            ' destroy objects
287
            rsQry.Close()
288
            Set rsQry = nothing
289
 
290
            checkedItemsDict.RemoveAll
291
            Set checkedItemsDict = nothing
292
 
293
            ' figure out where to go next
294
            If Request("btn_submit") = "OK" Then
295
               ' User has finished making licencing changes so go back to the referer page
296
               Call OpenInWindow ( httpReferer )
297
            Else
298
               ' else user pressed Apply, so stay in the form to let user make further licencing changes
299
               Call OpenInWindow ( "form_edit_release_licencing.asp?rtag_id=" & Request("rtag_id") & "&selected_licence=" & parSelectedLicence )
300
            End If
301
         Else
302
            ' User has cancelled so go back to the referer page
303
            Call OpenInWindow ( httpReferer )
304
         End If
305
      End If
306
   End If
307
End Sub
308
 
309
'--------------------------------------------------------------------------------------------------------------------------
310
'  LicenceDropDownHTML
311
'
312
'  DESCRIPTION
313
'     Constructs the HTML to render the drop down list and whilst doing so, updates the global selectedLicence variable
314
'
315
Function LicenceDropDownHTML
316
 
317
   Dim rsQry
318
   Dim html_string
319
 
320
   ' Get the full list of licences availabel from the database
321
   Set rsQry = OraDatabase.DbCreateDynaset( available_licences_query_string, cint(0) )
322
 
323
   ' Start of select tag
324
   ' This is designed such that when the user changes the selection, the page is re-rendered with the selected licence value passed
325
   ' in as a paramter as part of the URL along with the release tage
326
   html_string               = "<select name='selected_licence'"
327
   html_string = html_string & " onChange=""Cascaded_Menu('parent','"& scriptName &"?rtag_id="& parRtag_Id &"&selected_licence=',this,0)"""
328
   html_string = html_string & " class='form_item'>"
329
 
330
   ' Add each licence to the select, using the option tag, and set the initially selected option
331
   While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
332
      If CDbl(Request("selected_licence")) = CDbl(rsQry.Fields("licence")) or selectedLicence = -1 Then
333
         html_string = html_string & "<option value='"& rsQry.Fields("licence") &"' selected>"& rsQry.Fields("name") &"</option>"
334
         selectedLicence = CDbl(rsQry("licence"))
335
      Else
336
         html_string = html_string & "<option value='"& rsQry.Fields("licence") &"'>"& rsQry.Fields("name") &"</option>"
337
      End If
338
      rsQry.MoveNext
339
   WEnd
340
 
341
   ' destroy objects
342
   rsQry.Close()
343
   Set rsQry = nothing
344
 
345
   ' End of select tag
346
   html_string = html_string & "</select>"
347
 
348
   ' return result
349
   LicenceDropDownHTML = html_string
350
End Function
351
 
352
'--------------------------------------------------------------------------------------------------------------------------
353
'  PV_ID_ListHTML
354
'
355
'  DESCRIPTION
356
'     Constructs the HTML to render the rows of checkboxes, package names, versions and extensions
357
'
358
Function PV_ID_ListHTML
359
   Dim rsQry
360
   Dim html_string
361
 
362
   Set rsQry = OraDatabase.DbCreateDynaset( release_licencing_query_string(parRtag_Id), cint(0) )
363
 
364
   '--- Render rows ---
365
   Do While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
366
 
367
      ' BEGIN ROW
368
      html_string = html_string & "<tr>"
369
 
370
      ' CHECKBOX
371
      If (IsLicenced(rsQry("pv_id"), selectedLicence)) Then
372
         html_string = html_string & "<td align='center'><input type='checkbox' name='checked_pv_id_list' value=" & rsQry("pv_id") & " checked></td>"
373
      Else
374
         html_string = html_string & "<td align='center'><input type='checkbox' name='checked_pv_id_list' value=" & rsQry("pv_id") & "></td>"
375
      End If
376
 
377
      ' PACKAGE NAME
378
      html_string = html_string & "<td nowrap class='body_rowg'>" & rsQry("pkg_name") & "</td>"
379
 
380
      ' PACKAGE VERSION
381
      If IsNull(rsQry("v_ext")) Then
382
         html_string = html_string & "<td nowrap class='body_rowg'>" & rsQry("pkg_version") & "</td>"
383
      Else
384
         html_string = html_string & "<td nowrap class='body_rowg'>" & Left(rsQry("pkg_version"), Len(rsQry("pkg_version")) - Len(rsQry("v_ext")) ) & "</td>"
385
      End If
386
 
387
      ' PACKAGE EXTENSION
388
      html_string = html_string & "<td nowrap class='body_rowg'>" & rsQry("v_ext") & "</td>"
389
 
390
      ' END ROW
391
      html_string = html_string & "</tr>"
392
 
393
      rsQry.MoveNext
394
 
395
      ' ROW SEPERATOR
396
      If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
397
         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>"
398
      End If
399
   Loop
400
 
401
   ' destroy objects
402
   rsQry.Close()
403
   Set rsQry = nothing
404
 
405
   ' return result
406
   PV_ID_ListHTML = html_string
407
End Function
408
 
409
'--------------------------------------------------------------------------------------------------------------------------
410
'--------------------------------------------------------------------------------------------------------------------------
411
'------------ RUN BEFORE PAGE RENDER ----------
412
 
413
Call CheckFormEntryConditions()
414
 
415
Call CheckFormSubmitActions()
416
 
417
'----------------------------------------------
418
%>
419
 
420
<html>
421
<head>
422
<title>Release Manager</title>
423
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
424
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
425
<link rel="stylesheet" href="images/release_manager_style.css" type="text/css">
426
<link rel="stylesheet" href="images/navigation.css" type="text/css">
427
<script language="JavaScript" src="images/common.js"></script>
428
<script language="JavaScript" src="scripts/remote_scripting.js"></script>
429
 
430
<!-- DROPDOWN MENUS -->
431
 
432
 
433
<!--#include file="_menu_def.asp"-->
434
<script language="JavaScript1.2" src="images/popup_menu.js"></script>
435
 
436
</head>
437
<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">
438
<!-- MENU LAYERS -------------------------------------->
439
<div id="popmenu" class="menuskin" onMouseover="clearhidemenu();highlightmenu(event,'on')" onMouseout="highlightmenu(event,'off');dynamichide(event)">
440
</div>
441
<!-- TIPS LAYERS -------------------------------------->
442
<div id="formTipsLayer" style="position: absolute; z-index: 1000; visibility: hidden; left:0; top: 0; width: 10">&nbsp;</div>
443
<!----------------------------------------------------->
444
<!-- HEADER -->
445
<!--#include file="_header.asp"-->
446
<!-- BODY ---->
447
 
448
<table width="100%" border="0" cellspacing="0" cellpadding="0">
449
   <%
450
   '-- FROM START ---------------------------------------------------------------------------------------------------------
451
 
452
   objFormComponent.FormName = "FormName"
453
   objFormComponent.Method = "post"
454
   objFormComponent.Action = ScriptName & "?rtag_id=" & parRtag_Id & "&selected_licence=" & Request("selected_licence")
455
   Call objFormComponent.FormStart()
456
   %>
457
   <tr>
458
      <td width="1" background="images/bg_home_orange.gif" valign="top"></td>
459
      <td width="100%" rowspan="2" align="center" valign="top" bgcolor="#EEEFEF">
460
         <table width="10" border="0" cellspacing="0" cellpadding="0">
461
            <tr>
462
               <td width="1%"></td>
463
               <td width="100%">
464
                  <table width="100%"  border="0" cellspacing="0" cellpadding="0">
465
                     <tr>
466
                        <td nowrap class="body_txt"></td>
467
                     </tr>
468
                  </table>
469
                  <table width="100%" border="0" cellspacing="0" cellpadding="0">
470
                     <tr>
471
                        <td nowrap class="form_ttl"><p>&nbsp;</p>
472
                           <p>EDIT RELEASE LICENCING DETAILS</p>
473
                        </td>
474
                        <td align="right" valign="bottom"></td>
475
                     </tr>
476
                  </table>
477
               </td>
478
               <td width="1%"></td>
479
            </tr>
480
            <tr>
481
               <td align="left" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tl_cnr_b.gif" width="13" height="13"></td>
482
               <td background="images/lbox_bg_blue.gif" class="lbox_ttl_w"><img src="images/h_trsp_dot.gif" width="600" height="15"></td>
483
               <td align="right" valign="top"  background="images/lbox_bg_blue.gif"><img src="images/lbox_tr_cnr_b.gif" width="13" height="13"></td>
484
            </tr>
485
            <tr>
486
               <td bgcolor="#FFFFFF"><img src="images/h_trsp_dot.gif" width="10" height="100"></td>
487
               <td bgcolor="#FFFFFF" valign="top">
488
                  <%
489
                  %>
490
                  <!-- MESSAGE +++++++++++++++++++++++++++++++++++++++++++++++++++ -->
491
                  <!--#include file="messages/_msg_inline.asp"-->
492
                  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
493
                  <br>
494
                  <table width="100%"  border="0" cellspacing="2" cellpadding="0">
495
                     <tr>
496
                        <td nowrap class="form_iname" valign="top">Select Licence</td>
497
                        <td valign="top" nowrap class="form_iname">
498
                           <%=LicenceDropDownHTML()%>
499
                        </td>
500
                        <td width="9%" valign="top"></td>
501
                        <tr>
502
                           <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col"></td>
503
                           <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Package Name</td>
504
                           <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Package Version</td>
505
                           <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Package Extension</td>
506
                           <td valign="top">
507
                        </tr>
508
                        <%=PV_ID_ListHTML()%>
509
                        <tr>
510
                           <td class="form_iname">&nbsp;</td>
511
                           <td>&nbsp;</td>
512
                           <td class="val_err"></td>
513
                        </tr>
514
                     </tr>
515
                  </table>
516
               </td>
517
               <td background="images/lbox_bgside_white.gif">&nbsp;</td>
518
            </tr>
519
            <tr>
520
               <td background="images/bg_action_norm.gif" ></td>
521
               <td align="right" background="images/bg_action_norm.gif" >
522
                  <input name="btn_submit" type="submit" class="form_btn" value="OK">
523
                  <input name="btn_submit" type="submit" class="form_btn" value="Apply">
524
                  <input name="btn_submit" type="submit" class="form_btn" value="Cancel">
525
                  <input type="hidden" name="action" value="true">
526
               </td>
527
               <td background="images/bg_action_norm.gif" ><img src="images/h_trsp_dot.gif" width="5" height="30"></td>
528
            </tr>
529
            <tr>
530
               <td background="images/lbox_bg_blue.gif" valign="bottom"><img src="images/lbox_bl_cnr_b.gif" width="13" height="13"></td>
531
               <td background="images/lbox_bg_blue.gif"></td>
532
               <td background="images/lbox_bg_blue.gif" valign="bottom" align="right"><img src="images/lbox_br_cnr_b.gif" width="13" height="13"></td>
533
            </tr>
534
         </table>
535
      </td>
536
      <td width="1" valign="top"><img src="images/h_trsp_dot.gif" width="1" height="1"></td>
537
   </tr>
538
   <tr>
539
      <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>
540
      <td background="images/bg_lght_gray.gif" valign="top"><img src="images/h_trsp_dot.gif" width="1" height="500"></td>
541
   </tr>
542
   <%
543
   Call objFormComponent.FormEnd()
544
   '-- FROM END ----------------------------------------------------------------------------------------------------------------
545
   %>
546
</table>
547
<!-- FOOTER -->
548
<!--#include file="_footer.asp"-->
549
</body>
550
</html>
551
<%
552
Call Destroy_All_Objects
553
%>