Subversion Repositories DevTools

Rev

Rev 7395 | Rev 7457 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<%
'=====================================================
'|                                                   |
'|                 RELEASE NOTES                     |
'|                                                   |
'=====================================================
%>
<!-- Required to support jiraIssues.vbs -->
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT> 
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="common/base64encode.vbs"></SCRIPT> 
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="common/jiraIssues.vbs"></SCRIPT> 
<%
'------------ Variable Definition -------------
Dim rsCQ
Dim rsDepIss
Dim SQLstr
Dim fixedIssDict
Dim notesIssDict
Dim issArr()
Dim depIssDict
Dim sDocTitle
Dim rsQry, rsTemp
Dim iss_db_id, G1_template, G1_style, currG1
Dim retVal
Dim baseURL
Dim rsProjId
Dim rsPkgMetrics
Dim rsCodeReviewURL
Dim vcsInfoCollector
'------------ Constants Declaration -----------
Const enumLoc_iss_db = 0
Const enumLoc_iss_id = 1
Const enumLoc_iss_num = 2
Const enumLoc_summary = 3
Const enumLoc_status = 4
Const enumLoc_priority = 5
Const enumLoc_issue_type = 6
'------------ Variable Init -------------------
Set fixedIssDict = CreateObject("Scripting.Dictionary")
Set notesIssDict = CreateObject("Scripting.Dictionary")
Set depIssDict = CreateObject("Scripting.Dictionary")
Set vcsInfoCollector = CreateObject("Scripting.Dictionary")
'----------------------------------------------
%>
<!-- Local Java Script -->
<script language="JavaScript">
//  Local Tips
formTips.tips.following       = stdTip(200, 'Following', 'The user may \'follow\' a package in one or more Projects.<p>When the package is released the user will be notified by email.' );
formTips.tips.baseView       = stdTip(200, 'Base View', 'The group to which that package has been logically assigned to within this release.'+
                                                        '<p>If a WIP or PENDING Version will replace a package already in this release then it will take on the base view of the existing package when it is released.'+
                                                        '<p>If the released package is in a different Base View, then it will be displayed in [square brackets]' );
formTips.tips.ripple_stop     = stdTip(200, 'Ripple Stop', 'When set, will prevent the package being rippled. May be cleared to allow the ripple to continue.<p>If marked as \'Persistent\', then each new version will be marked to prevent rippling.' );
formTips.tips.PreviousVcsTag  = newTip(-150, 20, 200, 10, 'PREVIOUS VCS TAG','This is the vcs tag of the immediate ancestor version to the current package version.'+
                                       '<br><br>NOTE:<br>Derivation of this has no sensitivity to the selected release.');
formTips.tips.PreviousSignificantVcsTag= newTip(-150, 20, 200, 10, 'PREVIOUS SIGNIFICANT VCS TAG',
                                                       'This is the vcs tag of the ancestor version immediately preceding a significant (non-ripple) change that led to the current package version.'+
                                                       '<br><br>NOTE:<br>Derivation of this has no sensitivity to the selected release.');

formTips.tips.PreviousNonRippleVcsTag= newTip(-150, 20, 200, 10, 'PREVIOUS NON RIPPLE VCS TAG',
                                                       'This is the vcs tag of the preceding significant (non-ripple) change that led to the current package version.'+
                                                       '<br><br>NOTE:<br>Derivation of this has no sensitivity to the selected release.');
formTips.tips.CreationHints= newTip(-150, 20, 200, 10, 'HINTS FOR PACKAGE CREATION',
                                                       'These are not correct commands. They are command hints to assist in creating a new package.');
formTips.tips.BuildOwner= newTip(-150, 20, 200, 10, 'BUILD OWNER',
                                                       'The Build Owner will be notified of Build Failures when a new package-version fails to build.' +
                                                        '<p>The Build Owner is set to the person who created the new version or who released the version to the build system by setting its state to Pending.');
formTips.tips.JatsExtraction_SVN  = stdTip(250,'Subversion', 'Various extraction commands.<br>Choose a command that suits the current requirements.' +
                                                     '<p>Default - suits most requirements' +
                                                     '<br>Tag - Trace Tag back to development branch' +
                                                     '<br>Tip - Tip of the development branch' +
                                                     '<br>Work - Default' +
                                                     '<br>Exact - Extract the tagged instance' );
formTips.tips.JatsExtraction_GIT  = stdTip(200,'Git', 'Various extraction commands.<br>Choose a command that suits the current requirements.' );
                                              
formTips.tips.JatsExtraction_CC   = stdTip(200, 'ClearCase', 'Various extraction commands.<br>Choose a command that suits the current requirements.' +
                                                     '<p>A Project Branch will be displayed if configured, but it may not be suitable for all packages.');
                                                
formTips.tips.JatsExtraction_CVS  = stdTip(200,'CVS','Various extraction commands.<br>Choose a command that suits the current requirements.' );
formTips.tips.JatsExtraction_     = stdTip(200,'Unknown Version Control System','Various extraction commands.<br>Choose a command that suits the current requirements.' );

formTips.tips.s3Sync  = stdTip(200, 'SYNC to S3','When enabled and the Release is also configured to support S3 Sync and this package contains an S3Tranfer.json file then files in the S3Tranfer.json file will be synced to an S3 bucket<p>The target bucket name is based on the rtagId');


</script>
<%
'----------------------------------------------------------------------------------------------------------------------------------------
Function asDepIss ( SSiss_db_id, SScolumn )
   If NOT depIssDict.Exists (SSiss_db_id) Then Exit Function

   asDepIss = issArr ( SScolumn, CInt( depIssDict.Item (SSiss_db_id) ) )
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Function FixedIssues ( parPv_id )
   Dim sqlstr, rsTemp
   sqlstr = "SELECT pv_id FROM cq_issues WHERE pv_id = "& parPv_id &" AND iss_state = "& enumISSUES_STATE_FIXED
   Set rsTemp = OraDatabase.DbCreateDynaset( sqlstr, cint(0))

   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
      FixedIssues = TRUE
   Else
      FixedIssues = FALSE
   End If

   rsTemp.Close()
   Set rsTemp = nothing
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Function SQL_Package_Information ( nPv_id )
   SQL_Package_Information = _
   " SELECT *"&_
   "   FROM PACKAGE_VERSIONS pv"&_
   "  WHERE pv.pv_id = "& nPv_id
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Function SQL_Dependency_Issues ( NNpv_id )
   SQL_Dependency_Issues = _
   " SELECT pkg.pkg_name, pv.pkg_version, pv.pv_id, cqi.iss_db, cqi.iss_id, cqi.iss_state, pv.comments AS reasons"&_
   "     FROM cq_issues cqi,"&_
   "          package_dependencies dep,"&_
   "          packages pkg,"&_
   "          package_versions pv"&_
   "    WHERE dep.pv_id = "& NNpv_id &_
   "      AND dep.dpv_id = cqi.pv_id(+)"&_
   "      AND dep.dpv_id = pv.pv_id(+)"&_
   "      AND pv.pkg_id = pkg.pkg_id"&_
   "   ORDER BY UPPER(pkg.pkg_name) ASC, cqi.iss_state DESC"
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Function SQL_Additional_Notes ( nPv_id )
   SQL_Additional_Notes = ReadFile( rootPath & "queries\additional_notes.sql" )
   SQL_Additional_Notes = Replace( SQL_Additional_Notes, ":PV_ID", nPv_id )
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Function SQL_Unit_Tests ( nPv_id )
   SQL_Unit_Tests = ReadFile( rootPath & "queries\unit_tests.sql" )
   SQL_Unit_Tests = Replace( SQL_Unit_Tests, ":PV_ID", nPv_id )
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
' Function returns the number of imported clearquest issues
' and builds a string suitable for querying the clearquest issues database
Function Get_Package_Issues ( NNpv_id, SSsql, DDfixedIss, DDnotesIssDict, nIssState )
   Dim rsTemp, sqlstr, DEVIiss, retVal

   If IsObject(DDfixedIss) Then
      ' Find this package issues
      sqlstr = "SELECT iss_db, iss_id, iss_state, notes FROM CQ_ISSUES WHERE pv_id="& NNpv_id &"  AND iss_state = "& nIssState
   Else
      ' Find dependency issues
      sqlstr = "SELECT iss_db, iss_id, iss_state, notes FROM CQ_ISSUES WHERE  pv_id IN ( "&_
               " SELECT dpv_id FROM package_dependencies WHERE pv_id = "& NNpv_id &_
               " )"
   End If

   Set rsTemp = OraDatabase.DbCreateDynaset( sqlstr, cint(0))
   retVal = rsTemp.RecordCount

   DEVIiss  = "-1"

   While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
      If CInt(rsTemp("iss_db")) = CInt(enumCLEARQUEST_DEVI_ID) Then
         DEVIiss = DEVIiss &","& rsTemp("iss_id")
      End If

      If IsObject(DDfixedIss) Then
         ' Store only Fixed Issues
         If CInt(rsTemp("iss_state")) = CInt(enumISSUES_STATE_FIXED) AND _
           DDfixedIss.Exists(Cstr(rsTemp("iss_db") &"."& rsTemp("iss_id"))) = false Then DDfixedIss.Add Cstr(rsTemp("iss_db") &"."& rsTemp("iss_id")), ""
      End If

      If IsObject(DDnotesIssDict) Then
         ' Store Notes
         If Not IsNull(rsTemp("notes")) AND (rsTemp("notes") <> "") AND _
           DDnotesIssDict.Exists(Cstr(rsTemp("iss_db") &"."& rsTemp("iss_id"))) = false Then DDnotesIssDict.Add Cstr(rsTemp("iss_db") &"."& rsTemp("iss_id")), Cstr(rsTemp("notes"))
      End If

      rsTemp.MoveNext
   WEnd

   ' Construct SQL statement for CQ database
   SSsql = ReadFile( rootPath & "queries\cq_issues.sql" )
   SSsql = Replace( SSsql, "/*enumCLEARQUEST_DEVI_ID*/", enumCLEARQUEST_DEVI_ID)
   SSsql = Replace( SSsql, "/*DEVIiss*/", DEVIiss)

   rsTemp.Close()
   Set rsTemp = nothing

   Get_Package_Issues = retVal

End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Sub LastPvId (PvId)
   Dim sqlstr

   sqlstr = "SELECT pv_id, pkg_version, comments, last_pv_id FROM PACKAGE_VERSIONS WHERE PV_ID= "& PvId

   Set rsQry = OraDatabase.DbCreateDynaset( sqlstr, cint(0) )

End Sub
'----------------------------------------------------------------------------------------------------------------------------------------
Function  Get_CQ_Issues ( SSsql, OOrsCQ )

   On Error Resume Next
   Set OOrsCQ = OraDatabase.DbCreateDynaset( SSsql, cint(0))
   Get_CQ_Issues = Err.Number

End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Function Get_Dependency_CQ_Issues ( SSsql, OOrsCQ, DDdepIss, AAiss )
   Dim recCnt

   On Error Resume Next
   Set OOrsCQ = OraDatabase.DbCreateDynaset( SSsql, cint(0))

   ' Exit with error if error occurs
   Get_Dependency_CQ_Issues = Err.Number
   If Err.Number <> 0 Then Exit Function

   recCnt = 1

   While ((NOT OOrsCQ.BOF) AND (NOT OOrsCQ.EOF))
      ReDim Preserve AAiss( 6, recCnt )
      'If NOT DDdepIss.Exists Cstr(rsTemp("iss_db") &"."& rsTemp("iss_id")) Then
         DDdepIss.Add Cstr(OOrsCQ("iss_db") &"."& OOrsCQ("iss_id")), Cstr(recCnt)
      'End If
      AAiss( enumLoc_iss_db, recCnt )    = OOrsCQ("iss_db")
      AAiss( enumLoc_iss_id, recCnt )    = OOrsCQ("iss_id")
      AAiss( enumLoc_iss_num, recCnt )   = OOrsCQ("iss_num")
      AAiss( enumLoc_summary, recCnt )   = OOrsCQ("summary")
      AAiss( enumLoc_status, recCnt )    = OOrsCQ("status")
      AAiss( enumLoc_priority, recCnt )    = OOrsCQ("priority")
      AAiss( enumLoc_issue_type, recCnt ) = OOrsCQ("issue_type")

      recCnt = recCnt + 1
      OOrsCQ.MoveNext
   WEnd

   OOrsCQ.Close()
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Sub Group_By ( rsG, styleG, currG )
   If rsG = currG Then Exit Sub
   Response.write styleG
   'currG = rsG
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------
Sub CheckUnitTestsState ( nPv_id, outMSG, outMSG_ID, outNote, outTestsFound )
   Dim sqlstr, rsTemp
   sqlstr = ReadFile( rootPath & "queries\unit_test_entries_check.sql" )
   sqlstr = Replace( sqlstr, ":PV_ID", nPv_id)
   sqlstr = Replace( sqlstr, ":enumTEST_TYPE_NOT_DONE", enumTEST_TYPE_NOT_DONE)

   Set rsTemp = OraDatabase.DbCreateDynaset( sqlstr, cint(0))

   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
      outMSG = rsTemp("msg")
      outMSG_ID = CInt(rsTemp("msg_id"))
      outNote = rsTemp("test_summary")
      outTestsFound = FALSE

      If IsNull(rsTemp("msg")) Then outTestsFound = TRUE
   End If

   rsTemp.Close()
   Set rsTemp = nothing
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------
Function FormatAccepted ( sAccepted, nTest_id )
   Dim tempSTR
   If IsNull(nTest_id) Then Exit Function

   tempSTR = ""

   If pageIsEditable Then
      tempSTR = "<select name='acc"& nTest_id &"' class='form_item'>"
   Else
      tempSTR = "<select name='acc"& nTest_id &"' class='form_item' disabled>"
   End If

   If sAccepted = enumUNIT_TEST_ACCEPTED Then
      tempSTR = tempSTR  &"<option></option>"&_
                     "<option value='"& enumUNIT_TEST_ACCEPTED &"' SELECTED>Yes</option>"&_
                     "<option value='"& enumUNIT_TEST_NOTACCEPTED &"'>No</option>"

   ElseIf sAccepted = enumUNIT_TEST_NOTACCEPTED Then
      tempSTR = tempSTR  &"<option></option>"&_
                     "<option value='"& enumUNIT_TEST_ACCEPTED &"'>Yes</option>"&_
                     "<option value='"& enumUNIT_TEST_NOTACCEPTED &"' SELECTED>No</option>"

   Else
      tempSTR = tempSTR  &"<option SELECTED></option>"&_
                     "<option value='"& enumUNIT_TEST_ACCEPTED &"'>Yes</option>"&_
                     "<option value='"& enumUNIT_TEST_NOTACCEPTED &"'>No</option>"

   End If

   tempSTR = tempSTR & "</select>"

   FormatAccepted = tempSTR

End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Function SQL_CodeReview ( nPv_id )
   SQL_CodeReview = _
   "   SELECT cr.date_of_review, cr.time_spent, cr.review_reason, cr.rteam_domain_expert,"&_
   "          cr.rteam_language_expert, cr.rteam_peer_developer, cr.rteam_author,"&_
   "          cr.files_reviewed, cr.review_results, cr.issues_raised,"&_
   "          cr.review_comments, cr.fnc_s_meets_functionality,"&_
   "          cr.fnc_c_meets_functionality"&_
   "     FROM code_reviews cr"&_
   "    WHERE cr.pv_id = "& nPv_id
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Function SQL_Build_Env ( nPv_id )
   SQL_Build_Env = _
   " SELECT pv.*, bm.BM_ID,"&_
   "         bm.BM_NAME,"&_
   "         pkgbinfo.BSA_ID,"&_
   "         bsa.BSA_NAME"&_
   "     FROM PACKAGE_BUILD_INFO pkgbinfo,"&_
   "           BUILD_MACHINES bm,"&_
   "           PACKAGE_VERSIONS pv,"&_
   "           BUILD_STANDARDS_ADDENDUM bsa"&_
   "    WHERE pkgbinfo.BM_ID = bm.BM_ID"&_
   "    AND pv.PV_ID = pkgbinfo.PV_ID"&_
   "      AND pkgbinfo.PV_ID = "& nPv_id  &_
   "      AND pkgbinfo.BSA_ID = bsa.BSA_ID"&_
   "   ORDER BY UPPER(bm.BM_NAME) "
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Function DecodeOverallResult ( ByVal cCheck )
   If cCheck = "" OR IsNull(cCheck) Then cCheck = 0

   Select Case CInt( cCheck )
      Case enumCODE_REVIEW_ACCEPTED
         DecodeOverallResult = "Accepted"
      Case enumCODE_REVIEW_MINOR_UPDATES
         DecodeOverallResult = "Minor updates required"
      Case enumCODE_REVIEW_MAJOR_REWORK
         DecodeOverallResult = "Major rework required"
      Case Else
         DecodeOverallResult = ""
   End Select

End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Function GetBuildType ( nBuildType, nBuildName )

   if (IsNull(nBuildType) OR (nBuildType = "")) Then
       GetBuildType = "Build type not defined"
   ElseIf (IsNull(nBuildName) OR (nBuildName = "") ) Then
       GetBuildType = "Build Name not defined"
   Else
        GetBuildType = nBuildName    
   End If

  '' Wrap around brackets
   GetBuildType = "("& GetBuildType &")"

End Function
'----------------------------------------------------------------------------------------------------------------------------------------
Sub GetPackageMetrics (NNpv_id, rsTemp)

   OraDatabase.Parameters.Add "PV_ID", NNpv_id, ORAPARM_INPUT, ORATYPE_NUMBER

   Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PackageMetrics.sql"), cint(0))

   OraDatabase.Parameters.Remove "PV_ID"

End Sub
'----------------------------------------------------------------------------------------------------------------------------------------
Sub GetCodeReviewURLs (NNpv_id, rsTemp)

   OraDatabase.Parameters.Add "PV_ID", NNpv_id, ORAPARM_INPUT, ORATYPE_NUMBER

   Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("CodeReviewURLs.sql"), cint(0))

   OraDatabase.Parameters.Remove "PV_ID"

End Sub


'---------------------------------------------------------------
Sub Query_Config_Spec (NNRtag_id, NNPv_id)
   OraDatabase.Parameters.Add "RTAG_ID", NNRtag_id,   ORAPARM_INPUT, ORATYPE_NUMBER
   OraDatabase.Parameters.Add "PV_ID", NNPv_id,   ORAPARM_INPUT, ORATYPE_NUMBER
   If NNRtag_id <> "" Then
      If pkgInfoHash.Item ("dlocked") <> "Y" Then
         Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("config_spec.sql"), cint(0))
      Else
         Set rsQry = OraDatabase.DbCreateDynaset( Replace(GetQuery("config_spec.sql"), "PV.LAST_PV_ID", "PV.PV_ID"), cint(0))
      End If
   Else
      If pkgInfoHash.Item ("dlocked") <> "Y" Then
         Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("config_spec_nortag.sql"), cint(0))
      Else
         Set rsQry = OraDatabase.DbCreateDynaset( Replace(GetQuery("config_spec_nortag.sql"), "PV.LAST_PV_ID", "PV.PV_ID"), cint(0))
      End If
   End If
   OraDatabase.Parameters.Remove "RTAG_ID"
   OraDatabase.Parameters.Remove "PV_ID"
End Sub

'---------------------------------------------------------------
' Returns the jats extraction commands
Sub Jats_Extract_Command (ByRef sjats_cmds(), ByRef ajats_cmd_test, ByRef sjats_cmds_qh, ByRef sjats_extractable)
   Dim dlocked: dlocked = pkgInfoHash.Item("dlocked")
   Dim pkg_vcs_tag: pkg_vcs_tag = Get_Pkg_Vcs_Tag(Request("pv_id"))
   Dim ii: ii = -1
   Dim baseCmd
   sjats_extractable = false

   sjats_cmds_qh = vcsInfoCollector.Item("vcs_tag")
   If ( sjats_cmds_qh = "CC" OR sjats_cmds_qh = "SVN" ) Then
      sjats_extractable = true
   End If

   ' if not released then use last package version vcs tag and branch else use current vcs tag
   If dlocked <> "Y" Then
     ' not released, so get last package version id

     Dim last_version_valid
     Dim last_pv_id: last_pv_id = pkgInfoHash.Item("last_pv_id")
     Dim last_pkg_vcs_tag
     Dim VcsType

     last_version_valid = TRUE
     If IsNull(pkgInfoHash.Item ("previous_version")) Then
         last_version_valid = FALSE
     ElseIf last_pv_id = pkgInfoHash.Item ("pv_id") Then
         last_version_valid = FALSE
     ElseIf pkgInfoHash.Item ("pkg_count") = 1 Then 
         last_version_valid = FALSE
     End If

     If last_version_valid Then
         last_pkg_vcs_tag = Get_Pkg_Vcs_Tag(last_pv_id)
     End If

     If (last_version_valid AND last_pkg_vcs_tag <> "") Then
        VcsType = Mid(last_pkg_vcs_tag, 1, InStr(1, last_pkg_vcs_tag, "::") - 1 )
        sjats_cmds_qh = VcsType
        baseCmd =  "jats vcsrelease -extract -label """ & last_pkg_vcs_tag & """"
        ii = ii+1 : sjats_cmds(ii) = baseCmd

         ' ClearCase extraction may get a project specific branch appended
         ' This will be used to automatically branch the files in the package
         '
         If (VcsType = "CC") Then
             Call Query_Config_Spec (Request("rtag_id"), last_pv_id)
             Dim config_branch: config_branch = rsQry("config_spec_branch")
             If NOT IsNull(config_branch) AND (config_branch <> "") Then
                 ii = ii+1 : sjats_cmds(ii) = baseCmd & " -branch " & config_branch
             End If
         End If

         If (VcsType = "SVN") Then
            ii = ii+1 : sjats_cmds(ii) = baseCmd & " -devMode=Tag"
            ii = ii+1 : sjats_cmds(ii) = baseCmd & " -devMode=Tip"
            ii = ii+1 : sjats_cmds(ii) = baseCmd & " -devMode=Work"
            ii = ii+1 : sjats_cmds(ii) = baseCmd & " -devMode=Exact"
         End If
     Else
         'ii = ii+1 : sjats_cmds(ii) = "No Previous version to extract"
     End If

     baseCmd =  "jats vcsrelease -extract -label """ & pkg_vcs_tag & """"
     ii = ii+1 : sjats_cmds(ii) = baseCmd
     
   Else
    ' released
    if sjats_extractable Then
        baseCmd =  "jats vcsrelease -extract -label """ & pkg_vcs_tag & """"
        ii = ii+1 : sjats_cmds(ii) = baseCmd
    Else
        baseCmd =  "Cannot be extracted with JATS"
        ii = ii+1 : sjats_cmds(ii) = baseCmd
    End If

   End If

   ' Test Command
   if sjats_extractable Then
        ajats_cmd_test = "jats vcsrelease -test -label """ & pkg_vcs_tag & """"
   Else
        ajats_cmd_test = "Cannot be extracted with JATS"
   End If

   ReDim Preserve sjats_cmds(ii)
   rsQry.Close()
   Set rsQry = nothing

End Sub

'---------------------------------------------------------------
' Returns the VCS tag for the specified package version
' Note: ORAPARM_OUTPUT default size is 127 bytes. This is too short for some
'
Function Get_Pkg_Vcs_Tag(apv_id)
   OraDatabase.Parameters.Add "PV_ID", apv_id, ORAPARM_INPUT, ORATYPE_NUMBER
   OraDatabase.Parameters.Add "RETURN_CODE","xxxx", ORAPARM_OUTPUT, ORATYPE_VARCHAR2
   OraDatabase.Parameters("RETURN_CODE").MinimumSize = 200
   On Error Resume Next
        OraDatabase.ExecuteSQL ("BEGIN   :RETURN_CODE := PK_RMAPI.RETURN_VCS_TAG( :PV_ID );   END;")
        Get_Pkg_Vcs_Tag = OraDatabase.Parameters("RETURN_CODE").Value
   On Error Goto 0
   OraDatabase.Parameters.Remove "PV_ID"
   OraDatabase.Parameters.Remove "RETURN_CODE"
End Function
'-------------------------------------------------
' Description:  Return a string displaying if the user is following this package in theis Release
'----------------------------------------------------------------------------------------------------------------------------------------
Function GetFollowing ()
   Dim rsQry
   Dim thisProject, otherProjects, someProjects

   GetFollowing = "Not logged in"

   If objAccessControl.UserLogedIn() Then
       OraDatabase.Parameters.Add "PKG_ID",  pkgInfoHash.Item ("pkg_id"), ORAPARM_INPUT, ORATYPE_NUMBER
       OraDatabase.Parameters.Add "PROJ_ID", pkgInfoHash.Item ("proj_id"), ORAPARM_INPUT, ORATYPE_NUMBER
       OraDatabase.Parameters.Add "USER_ID", objAccessControl.UserId(), ORAPARM_INPUT, ORATYPE_NUMBER

       If pkgInfoHash.Item ("proj_id") <> "" Then
           Set rsQry = OraDatabase.DbCreateDynaset( "SELECT * FROM PACKAGE_INTEREST WHERE PKG_ID = :PKG_ID AND PROJ_ID = :PROJ_ID AND USER_ID = :USER_ID", cint(0))
           thisProject = rsQry.RecordCount > 0

           Set rsQry = OraDatabase.DbCreateDynaset( "SELECT * FROM PACKAGE_INTEREST WHERE PKG_ID = :PKG_ID AND PROJ_ID != :PROJ_ID AND USER_ID = :USER_ID", cint(0))
           otherProjects = rsQry.RecordCount > 0

           If thisProject Then
               If otherProjects Then
                    GetFollowing = "Yes. In this and " & rsQry.RecordCount & " other projects"
                   Else
                    GetFollowing = "Yes. Only this project"
               End If
           Else
               If otherProjects Then
                    GetFollowing = "Yes. In " & rsQry.RecordCount & " other projects"
                   Else
                    GetFollowing = "No"
               End If
           End If

       Else
           Set rsQry = OraDatabase.DbCreateDynaset( "SELECT * FROM PACKAGE_INTEREST WHERE PKG_ID = :PKG_ID AND USER_ID = :USER_ID", cint(0))
           someProjects = rsQry.RecordCount > 0

           If rsQry.RecordCount > 0 Then
                GetFollowing = "Yes. In " & rsQry.RecordCount & " Projects"
               Else
                GetFollowing = "No"
           End If

       End If


       OraDatabase.Parameters.Remove "USER_ID"
       OraDatabase.Parameters.Remove "PROJ_ID"
       OraDatabase.Parameters.Remove "PKG_ID"
       rsQry.Close()
       Set rsQry = nothing

       If pageIsEditable Then
           GetFollowing = GetFollowing &  "<img class='image12 vixIframeDialog' href='_iframe_pkgs_followed.asp?proj_id=" & pkgInfoHash.Item ("proj_id") & "&pkg_id=" & pkgInfoHash.Item ("pkg_id") & "' title='Follow: " & pkgInfoHash.Item ("pkg_name") &"' src='images/i_follow.gif'>"
       End If

    End If
End Function
'---------------------------------------------------------------
' Description:  Return a string displaying licence information
'---------------------------------------------------------------
Function getLicence
   Dim rsQry, rsSql, lName
   Dim licenceList
   Dim joiner : joiner = ""
   Dim otherVersions : otherVersions = ""

   Set licenceList=Server.CreateObject("Scripting.Dictionary")
   getLicence = ""

   ' Determine license for this package-version
        OraDatabase.Parameters.Add "PV_ID", pkgInfoHash.Item ("pv_id"), ORAPARM_INPUT, ORATYPE_NUMBER

    Set rsQry = OraDatabase.DbCreateDynaset( _
                "SELECT l.NAME FROM LICENCES l, LICENCING ld" &_
                " WHERE l.LICENCE = ld.LICENCE " &_
                " and ld.PV_ID = :PV_ID" &_
                " ORDER by l.NAME" _
                , cint(0))

        While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
       lName = rsQry("name")
           getLicence = getLicence & joiner & lName 
           licenceList.Add lName, "Y"
           joiner = ", "
           rsQry.MoveNext
        WEnd
    rsQry.Close()
    Set rsQry = nothing

        '
        ' Indicate if other versions have licences - ignore those we already know about
        ' The data is stored on a package-version basis
        '
    Set rsQry = OraDatabase.DbCreateDynaset( _
                "SELECT UNIQUE ld.NAME" &_
                " FROM licencing l,LICENCES ld" &_
                " WHERE l.pv_id IN" &_
                "  (SELECT pv_id" &_
                "  FROM package_versions" &_
                "  WHERE pkg_id IN" &_
                "    (SELECT pkg_id FROM package_versions WHERE pv_id=:PV_ID)" &_
                "    AND pv_id != :PV_ID" &_
                "  )" &_
                "  AND l.LICENCE = ld.LICENCE" &_
                "  ORDER by ld.NAME" _
                , cint(0))

        joiner = ""
        While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
       lName = rsQry("name")
       If NOT licenceList.Exists(lName) Then
           otherVersions = otherVersions & joiner & rsQry("name")
               joiner = ", "
       End If
           rsQry.MoveNext
        WEnd

    OraDatabase.Parameters.Remove "PV_ID"
    rsQry.Close()
    Set rsQry = nothing

        If otherVersions <> "" Then
                getLicence = getLicence & ". Other Versions: " & otherVersions
        End If
End Function
'-------------------------------------------------
Function getLinkUrl(pvid)
     Dim joiner : joiner = "?"

     getLinkUrl = scriptName

     If parRtag_id <> "" Then
        getLinkUrl = getLinkUrl + joiner + "rtag_id=" + parRtag_id
        joiner = "&"
     End If

     getLinkUrl = getLinkUrl + joiner + "pv_id=" + pvid
End Function
'-------------------------------------------------
'   DisplayVersionRow   - Display a row of vesrion information
'       pvid    - pvid to process. Null -> "Initial Version"
'       title   - row title
'       helpTag - Tag for help
'
Sub DisplayVersionRow( pvid, title, helpTag )
      Dim   versionText
      Dim   tagText
      Dim   showLink
      Dim   clipClass
      Dim   ExtractText
      Dim   queryResult

      If IsNull(pvid) Then
          versionText = "Initial Version"
          tagText = NULL
          showLink = FALSE
      Else
          Set   queryResult = OraDatabase.DbCreateDynaset( "SELECT pkg_version from package_versions where pv_id =" & pvid , cint(0))

          If (NOT queryResult.BOF ) AND (NOT queryResult.EOF) Then
            versionText = queryResult("pkg_version")
            tagText = Get_Pkg_Vcs_Tag(pvid)
            showLink = isDefined("showPrevVerLinks") 
          Else
            versionText = "Unknown"
            tagText = NULL
            showLink = FALSE
          End If

          queryResult.Close()
          Set queryResult = nothing

     End If

      If sjats_extractable Then
        clipClass = "clip"
        ExtractText = NewLine_To_BR ( To_HTML(tagText) ) 
      Else
        clipClass = ""
        ExtractText = "Cannot be extracted with JATS"
      End If
      %>
         <tr>
            <td width="20%" ><%=title%><%=Quick_Help(helpTag)%></td>
            <td>
              <table width="100%" border="0" cellspacing="0" cellpadding="0">
                <tr>
                  <td width=15% colspan=2 nowrap>
                    <%=versionText%>
                    <%If showLink Then %>
                        <a href=<%=getLinkUrl(pvid)%>>
                        <img src="images/i_link.gif" hspace="2" border="0" align='absmiddle' title="Show this version">
                        </a>
                    <%End If%>
                  </td>
                  <%If NOT IsNull(tagText) Then %>
                  <td colspan=2 nowrap class="<%=clipClass%>">
                    <%=ExtractText%>
                  </td>
                  <%End If%>
                </tr>
              </table>
            </td>
         </tr>
      <%
End Sub

'-------------------------------------------------
'   DisplayCreationCommands
'   Display commands that may be useful in the creation of the package
'
Sub DisplayCreationCommands
    Dim VcsType: VcsType = vcsInfoCollector.Item("vcs_tag")
    Dim title: title = "Package Creation Hints"
    Dim SvnUrl
    Dim SvnLabel

    If VcsType = "SVN" Then
        If pkgInfoHash.Item("src_path") <> "" Then
            SvnUrl = pkgInfoHash.Item("src_path")
            Dim lastBit: lastBit = InStrRev(SvnUrl, "/" )
            If lastBit > 1 Then
                SvnUrl = Left(SvnUrl, lastBit-1) 
            End If
        Else
            SvnUrl = "AUPERASVN0X/RepoName/" & pkgInfoHash.Item ("pkg_name")
        End If
        If pkgInfoHash.Item("pkg_label") <> "" Then
            SvnLabel = pkgInfoHash.Item("pkg_label") 
        Else
            SvnLabel = "SomeLabel.WIP"
        End If

      %>
         <tr>
            <td><%=title%><%=Quick_Help("CreationHints")%></td>
            <td>
              <table width="100%" border="0" cellspacing="0" cellpadding="0">
                  <tr><td nowrap class="clip"> jats svn create_package -new <%=SvnUrl%> </td></tr>
                  <tr><td nowrap class="clip"> jats svn create_package -new <%=SvnUrl%> -import=&lt;PkgDir&gt; </td></tr>
                  <tr><td nowrap class="clip"> jats svn create_package -new <%=SvnUrl%> -label=<%=SvnLabel%> -import=&lt;PkgDir&gt; </td></tr>
                  <tr><td nowrap class="clip"> jats svn create_package -new <%=SvnUrl%> -label=<%=SvnLabel%> -import=<%=pkgInfoHash.Item ("pkg_name")%> </td></tr>
              </table>
            </td>
         </tr>
      <%
    Else
    %>
         <tr>
            <td><%=title%></td>
            <td>Not supported under this version control system.</td>
         </tr>
     <%
    End If
End Sub
%>
<%
'------------------ MAIN LINE --------------------
'-------------------------------------------------
If pkgInfoHash.Exists("pv_id") Then
%>
<!-- PACKAGE INFORMATION --------------------------------------------------------------------------------------------------------------->
   <fieldset class="fset">
   <legend class="body_colb"><img src='images/s_info.gif' width='21' height='24' hspace='4' border='0' align='absmiddle'>Package Information</legend>
   <div style="display: block;float: right;margin-top: -20px;background-color: #FFF;padding: 0 5px;">
   <%If pageIsEditable Then%>
           <span onClick="MM_openVixIFrame('_wform_pkg_info.asp?pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>','Package Info')" class="txt_linked pointer">Edit<img src="images/i_edit.gif" width="12" height="12" hspace="2" border="0" align='absmiddle'></span>
   <%End If%>
   </div>
   <a name="PACKAGE_INFORMATION"></a>
   <table width="100%" border="0" cellspacing="1" cellpadding="2" class='lhsGrey'>
      <%
      Set rsQry = OraDatabase.DbCreateDynaset( SQL_Package_Information ( parPv_id ), cint(0))
      
      Call get_vcs_info_for_package( rsQry("pkg_label"), rsQry("build_type"), rsQry("vcs_type_id"), rsQry("dlocked"), vcsInfoCollector )
      
      %>

      <%
        ' Status:
        Dim sstate
        Dim bcan_unlock
        Dim stitle
        Dim bis_patch
        Dim spkgType
        Dim shref

        bis_patch = not IsNull(pkgInfoHash.Item ("is_patch")) 
        If bis_patch Then
          ' the user can unlock a patch if they have permission
          ' packages can be unlocked by the btnUnlockRelease button
          bcan_unlock = canActionControlInProject("UnlockPatch")
          spkgType = "Patch"
        Else
          bcan_unlock = canActionControlInProject("EditCriticalInfoForLockedPackage")
          spkgType = "Package"
        End If

        If pkgInfoHash.Item("is_sdkpkg") Then bcan_unlock = FALSE

        Select Case pkgInfoHash.Item ("dlocked")
            Case "Y"  sstate = "Released"
            Case "N"  sstate = "Not Released"
            Case "P"  sstate = "Not Released. Pending approval"
            Case "A"  sstate = "Not Released. Approved for build"
            Case "R"  sstate = "Not Released. Rejected"
            Case Else sstate = "Not Released. Invalid State"
        End Select
            
        If bcan_unlock  Then
          If (pkgInfoHash.Item ("dlocked") = "Y") Then
            ' Unlock patch/package.
            stitle="Unlock the " & spkgType
            shref="_s_unlock_package.asp?pv_id="& parPv_id &"&rtag_id="& parRtag_id

          ElseIf (pkgInfoHash.Item ("dlocked") = "N") Then
            ' lock patch/package.
            stitle="Lock the "& spkgType &". Release requirements are not applied."
            shref="_s_lock_package.asp?pv_id="& parPv_id &"&rtag_id="& parRtag_id

          Else
            ' unlock patch/package.
            stitle="Unlock the " & spkgType
            shref="_s_unlock_package.asp?pv_id="& parPv_id &"&rtag_id="& parRtag_id
            bcan_unlock = FALSE
          End If
        End if
      %>

      <tr>
         <td>
         <% If bcan_unlock Then %>
              <span title='<%=stitle%>' class='pointer' onClick="window.location='<%=shref%>'">Status:&nbsp;<img src='images/i_edit.gif' width='12' height='12' border='0' align='absmiddle'></span>
         <% Else %>
              Status:<img src='images/i_edit_disable.gif' width='12' height='12' border='0' title='Cannot change status' align='absmiddle'>
         <% End If %>
         </td>
         <td><%=sstate%></td>
      </tr>

      <tr>
         <td>Deployable:</td>
         <td><%=iif(IsNull( rsQry("is_deployable") ), "No","Yes")%></td>
      </tr>

<%If parRtag_id <> "" Then
    Call Get_Pkg_Info_s3Sync
    Dim s3Text
    If pkgInfoHash("s3Sync") <> "Y" Then
        s3Text = "No"
    Else
        If pkgInfoHash("s3SyncEnabled") <> "Y" Then
            s3Text = "Yes. Ignored as the Release does not support S3Sync"
        Else
            s3Text = "Yes"
        End If            
    End If

    Dim s3Content, s3ContentClass
    If pkgInfoHash("s3Sync") = "Y" AND pkgInfoHash("s3SyncContent") <> "Y"  Then
        s3Content = "No S3 transferable content detected"
        If pkgInfoHash("s3SyncEnabled") = "Y" Then s3ContentClass = "err_alert"
    ElseIf pkgInfoHash("s3Sync") <> "Y" AND pkgInfoHash("s3SyncContent") = "Y"  Then
        s3Content = "S3 transferable content detected"
    End If 
    If s3Content <> "" Then
        s3Content = ". <span class="&s3ContentClass&">" & s3Content & "</span>"
    End If
%>
      <tr>
         <td>Sync to S3:<%=Quick_Help("s3Sync")%></td>
         <td><%=s3Text%><%=s3Content%> 
      </tr>
<%End If%>

      <tr>
         <td>Short Description:</td>
         <td class="clip">
            <%If IsNull( rsQry("pv_description") ) Then%>
               <span class='err_alert'>Required!</span>
            <%Else%>
              <%=NewLine_To_BR ( To_HTML( rsQry("pv_description") ) )%>
            <%End If%>
         </td>
      </tr>
      <tr>
         <td>Package Overview:</td>
         <td class="clip">
            <%If IsNull( rsQry("pv_overview") ) Then%>
               <span class='err_alert'>Required!</span>
            <%Else%>
               <%=NewLine_To_BR ( To_HTML( rsQry("pv_overview") ) )%>
            <%End If%>
         </td>
      </tr>
          <!-- Package Licence information -->
      <%
        Dim sonclick
        Dim imgClass
        Dim sClass
      %>
      <tr>
         <td>
            <%BuildEditButtonRaw canActionControlInProject ("EditPackageLicence") OR canActionControl("MSMaintainer"), _
                "Package Licence:", "Edit", False, "src='images/i_edit.gif' width='12' height='12' border='0' align='absmiddle'",_
                "MM_openVixIFrame('_wform_change_licence.asp?pv_id="& parPv_id &"&rtag_id="& parRtag_id &"','Change License')" %>
         </td>
         <td>
            <%=getLicence()%>
         </td>
      </tr>
          <!-- Build Owner -->
      <tr>
        <td>
         <%BuildEditButtonRaw objAccessControl.UserLogedIn() AND NOT pkgInfoHash.Item("is_sdkpkg"),_
             "Build Owner:", "Edit", False, "src='images/i_edit.gif' width='12' height='12' border='0' align='absmiddle'",_
             "MM_openVixIFrame('_wform_change_owner.asp?pv_id="& parPv_id &"&rtag_id="& parRtag_id &"','Change Owner')" %>
          <%=Quick_Help("BuildOwner")%>
        </td>         
        <td><%=emailField(pkgInfoHash.Item ("owner"),pkgInfoHash.Item ("owner_email"))%></td>         
      </tr>
      
      <tr>
         <td>Created:</td>
         <td>
            <%=DisplayDateTimeSecs(pkgInfoHash.Item ("created_stamp"))&" by "& emailField(pkgInfoHash.Item ("creator"),pkgInfoHash.Item ("creator_email"))%>
         </td>
      </tr>

      <%
        ' Last Modified:
      %>
      <tr>
         <td>Last Modified:</td>
         <td>
            <%=DisplayDateTimeSecs(pkgInfoHash.Item ("modified_stamp"))&" by "& emailField(pkgInfoHash.Item ("modifier"),pkgInfoHash.Item ("modifier_email"))%>
         </td>
      </tr>

      <%
        ' Added to Release
        If IsNull(pkgInfoHash.Item ("is_patch"))  AND  (Request("rtag_id") <> "") AND (pkgInfoHash.Item ("insertor") <> "") Then
      %>
      <tr>
         <td>Added to Release:</td>
         <td>
            <%=DisplayDateTimeSecs(pkgInfoHash.Item ("insert_stamp")) &" by "& emailField(pkgInfoHash.Item ("insertor"),pkgInfoHash.Item ("insertor_email"))%>
         </td>
      </tr>
      <%End If%>
      
      <%If (vcsInfoCollector.Item("vcs_tag") = enum_VCS_CLEARCASE_TAG) OR (vcsInfoCollector.Item("vcs_tag") = enum_VCS_CVS_TAG) Then%>
         <tr>
            <td>Version Control System:</td>
            <td>
               <%=NewLine_To_BR ( To_HTML( vcsInfoCollector.Item("vcs_name") ) )%>
             <%If (vcsInfoCollector.Item("vcs_tag") = enum_VCS_CVS_TAG) AND pkgInfoHash.Item ("build_type") = "A" Then%>
             <span class='err_alert'>[Requires Manual Build]</span>
             <%End If%>
             <td>
         </tr>

         <tr>
            <td>Source Path:</td>
            <td>
               <%If IsNull( rsQry("src_path") ) Then%>
                  <span class='err_alert'>Required!</span><%Else%><%=NewLine_To_BR ( To_HTML( rsQry("src_path") ) )%>
               <%End If%>
            </td>
         </tr>

         <tr>
            <td>Label:</td>
            <td>
               <%If IsNull( rsQry("pkg_label") ) Then%>
                  <span class='err_alert'>Required!</span><%Else%><%=NewLine_To_BR ( To_HTML( rsQry("pkg_label") ) )%>
               <%End If%>
            </td>
         </tr>
      <%ElseIf vcsInfoCollector.Item("vcs_tag") = enum_VCS_SUBVERSION_TAG OR vcsInfoCollector.Item("vcs_tag") = enum_VCS_GIT_TAG Then%>
         <tr>
            <td>Version Control System:</td>
            <td>
               <%=NewLine_To_BR ( To_HTML( vcsInfoCollector.Item("vcs_name") ) )%>
            </td>
         </tr>

         <tr>
            <td>Source Path:</td>
            <td class="clip">
               <%If IsNull( rsQry("src_path") ) Then%>
                  <span class='err_alert'>Required!</span><%Else%><%=NewLine_To_BR ( To_HTML( rsQry("src_path") ) )%>
               <%End If%>
            </td>
         </tr>

         <tr>
            <td>Tag:</td>
            <td class="clip">
               <%If IsNull( rsQry("pkg_label") ) Then%>
                  <span class='err_alert'>Required!</span><%Else%><%=NewLine_To_BR ( To_HTML( rsQry("pkg_label") ) )%>
               <%End If%>
            </td>
         </tr>

      <%ElseIf vcsInfoCollector.Item("vcs_tag") = enum_VCS_UNCONTROLLED_TAG Then%>
         <tr>
            <td>Version Control System:</td>
            <td>
               <%=NewLine_To_BR ( To_HTML( vcsInfoCollector.Item("vcs_name") ) )%>
            </td>
         </tr>
      <%Else%>
         <tr>
            <td>Version Control System:</td>
            <td>
               <span class='err_alert'>Required!</span>
            </td>
         </tr>
      <%End If%>

      <tr>
         <td>
         <%BuildEditButtonRaw (pkgInfoHash.Item("can_edit_in_project") = "1") AND (objAccessControl.UserLogedIn) AND (canActionInProject()) AND pkgInfoHash.Item("base_view_id") <> "",_
             "Base View:", "Edit", False, "src='images/i_edit.gif' width='12' height='12' border='0' align='absmiddle'",_
             "MM_openVixIFrame('_wform_change_group.asp?pv_id="& parPv_id &"&rtag_id="& parRtag_id &"','Set Package Base View')" %><%=Quick_Help("baseView")%>
         </td>
         <td class="clip">
         <% Dim CleanView : CleanView = pkgInfoHash.Item("view_name")
            If CleanView = "" Then CleanView = "N/A"
            If pkgInfoHash.Item("release_view_name") <> ""  AND pkgInfoHash.Item("view_name") <> pkgInfoHash.Item("release_view_name") Then 
                Response.Write "[" & pkgInfoHash.Item("release_view_name") & "]&nbsp;"
            End If
            Response.Write CleanView
          %>
         </td>
      </tr>

      <tr>
         <td>Following:<%=Quick_Help("following")%></td>
         <td><%=GetFollowing()%></td>
      </tr>

      <tr>
         <td>Build Standard:</td>
         <%
         If pkgInfoHash.Item ("bs_id") <> "" Then
            If pkgInfoHash.Item ("bs_id") = "1" Then
               Response.write "<td>JATS<br></td>"

            ElseIf pkgInfoHash.Item ("bs_id") = "2" Then
               Response.write "<td>ANT<br></td>"

            ElseIf pkgInfoHash.Item ("bs_id") = "3" Then
               Response.write "<td>NONE"
               If pkgInfoHash.Item("build_type") = "A" Then
                    Response.write "<span class='err_alert'> [Must be specified for an automated build]</span>"
               End If
               Response.write "<br></td>"
            End If
         Else
            If vcsInfoCollector.Item("vcs_tag") <> enum_VCS_UNCONTROLLED_TAG Then
               Response.write "<td><span class='err_alert'>Required!</span><br></td>"
            Else
               Response.write "<td>Unspecified<br></td>"
            End If
         End If
         %>
      </tr>
      <%If (NOT IsNull(pkgInfoHash.Item ("bs_id"))) AND (pkgInfoHash.Item ("bs_id") <> "3") Then%>
         <tr>
            <td>Build Environment:</td>
            <%
            '--- Get Build Env Details
            Set rsTemp = OraDatabase.DbCreateDynaset( SQL_Build_Env ( parPv_id ), cint(0))
            %>
            <td>
               <%If rsTemp.RecordCount = 0 Then%>
                  <%If rsQry("is_build_env_required") = enumDB_NO Then%>
                     Not Required
                  <%Else%>
                     <span class='err_alert'>Required!</span>
                  <%End If%>
               <%Else%>
                  <%If (IsNull( rsQry("is_build_env_required") ) AND (rsQry("comments") <> "Rippled Build.")) Then%>
                     <span class='err_alert'>Required!</span>
                  <%ElseIf rsQry("is_build_env_required") = enumDB_NO Then%>
                     Not Required.
                  <%Else%>
                     <table width="40%"  border="0" cellspacing="0" cellpadding="1">
                        <%
                        currG1 = 0
                        While (NOT rsTemp.BOF) AND (NOT rsTemp.EOF)
                           If currG1 <> CInt(rsTemp("bm_id")) Then%>
                              <tr>
                                 <td colspan="2" nowrap>
                                    <%=rsTemp("bm_name")%>&nbsp;<%=GetBuildType( rsTemp("bsa_id"),rsTemp("bsa_name") )%>
                                 </td>
                              </tr>
                              <%currG1 = CInt(rsTemp("bm_id"))
                           End If
                           rsTemp.MoveNext
                        WEnd
                        %>
                     </table>
                  <%End If%>
               <%End If%>
            </td>
         </tr>
      <%End If%>

      <%
      ' Get JATS extraction commands
      Dim  sjats_cmd_test, sjats_cmds_qh, sjats_extractable
      ReDim sjats_cmds(6)
      call Jats_Extract_Command(sjats_cmds, sjats_cmd_test, sjats_cmds_qh, sjats_extractable)
      Dim PrevVerTitle : PrevVerTitle = "Previous Version:"

      ' Previous Versions 
      If pkgInfoHash.Item ("pkg_count") = 1 AND pkgInfoHash.Item ("dlocked") = "N" Then
        Call DisplayVersionRow(NULL, PrevVerTitle, "PreviousVcsTag")
        Call DisplayCreationCommands()

      ElseIf IsNull(pkgInfoHash.Item ("is_patch")) Then

        If canActionControlInProject("ChangePreviousVersion") AND NOT pkgInfoHash.Item("is_sdkpkg") Then
            sonclick="MM_openVixIFrame('_wform_change_previous_version.asp?rfile="& scriptName &"&pv_id="& parPv_id &"&rtag_id="& parRtag_id &"','Change Previous Version')"
            PrevVerTitle = "<span onClick=""" & sonclick & """ class='sublbox_txt'> " & PrevVerTitle & " <img src='images/i_edit.gif' width='12' height='12' border='0' align='absmiddle'></span>"
        Else
            PrevVerTitle = PrevVerTitle & "<img src='images/i_edit_disable.gif' width='12' height='12' border='0' align='absmiddle'>"
        End If
        Call DisplayVersionRow(pkgInfoHash.Item ("last_pv_id"), PrevVerTitle, "PreviousVcsTag") 

        Dim iLastSignificantPVID
        Dim iRippleBasePVID
        Call getLastSignificantVersions(pkgInfoHash.Item("pv_id"), iRippleBasePVID, iLastSignificantPVID)

        Call DisplayVersionRow(iRippleBasePVID, "Previous NonRipple Version:", "PreviousNonRippleVcsTag") 
        Call DisplayVersionRow(iLastSignificantPVID, "Previous Significant Version:", "PreviousSignificantVcsTag") 
      End If
      %>
      <tr>
         <td>JATS extraction commands:<%=Quick_Help ( "JatsExtraction_" & sjats_cmds_qh )%></td>
         <td style="padding: 0px;">
         <table class="full_table">
         <% Dim ii : For ii = 0 to UBound(sjats_cmds) %>
             <tr><td class="clip"><%=NewLine_To_BR ( To_HTML(sjats_cmds(ii)) )%>&nbsp;</td>
         <% Next %>
         </td>
         </tr>
         </table>
      </tr>
      <tr>
         <td>JATS Test:<%=Quick_Help ( "JatsTest" )%></td>
         <td class="clip"><%=NewLine_To_BR ( To_HTML(sjats_cmd_test) )%></td>
      </tr>

      <%
      ' Beyond Compare difference command
      Dim prevVcsTag
      Dim curVcsTag
      Dim sBcCmd, sBcClass 

      prevVcsTag = Get_Pkg_Vcs_Tag(iLastSignificantPVID)
      curVcsTag = Get_Pkg_Vcs_Tag(parPv_id)
      sBcCmd = ""
      sBcClass = ""

      If pkgInfoHash.Item ("pkg_count") = 1 Then
            sBcCmd = "No prior version compare against"
      ElseIf (IsNull(prevVcsTag) OR prevVcsTag = "" ) Then
            sBcCmd = "No prior label to compare against"
      ElseIf (IsNull(curVcsTag) OR curVcsTag = "" ) Then
            sBcCmd = "Current VCS tag not yet specified"
      ElseIf (not sjats_extractable) Then
            sBcCmd = "Cannot be extracted with JATS"
      Else
            sBcCmd = "jats vcsdiff -old=" & prevVcsTag & " -new=" & curVcsTag
            sBcClass = "clip"
      End If
      sBcCmd = NewLine_To_BR( To_HTML (sBcCmd) )
      %>

      <tr>
        <td>Beyond Compare command:<%=Quick_Help ( "BeyondCompare" )%></td>
        <td class="<%=sBcClass%>"><%=sBcCmd%></td>
      </tr>
              

      <%If pkgInfoHash.Item("is_deployable") = "Y" Then
         OraDatabase.Parameters.Add "PV_ID", pkgInfoHash.Item ("pv_id"), ORAPARM_INPUT, ORATYPE_NUMBER
         Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("DeploymentManagerReference.sql"), cint(0))
         If rsTemp.RecordCount = 0 Then%>
            <tr>
               <td>SBOM Information:</td>
               <%If pkgInfoHash.Item("product_state") = 3 Then%>
                  <td class="err_alert"><b>Ready For Deployment!</b></td>
               <%ElseIf pkgInfoHash.Item("product_state") = 2 Then%>
                  <td class="err_alert"><b>Ready For Testing!</b></td>
               <%ElseIf pkgInfoHash.Item("product_state") = 1 Then%>
                  <td class="err_alert"><b>Ready For Integration!</b></td>
               <%ElseIf pkgInfoHash.Item("product_state") = 5 Then%>
                  <td class="err_alert"><b>Ready For Integration and Deployment!</b></td>
               <%ElseIf IsNull(pkgInfoHash.Item("product_state")) Then%>
                  <td class="err_alert"><b>Information Unavailable!</b></td>
               <%End If%>

            </tr>
         <%Else%>
            <tr>
               <td>SBOM Added/Updated:</td>
               <td><%=rsTemp("branch_name")%> - <%=rsTemp("bom_name")%><%=VBNewLine%><%=rsTemp("version")%></td>
            </tr>
         <%End If
         rsTemp.Close()
         Set rsTemp = Nothing
         OraDatabase.Parameters.Remove "PV_ID"
      End If
      %>
   </table>
   </fieldset>
   <br>

<!-- PACKAGE METRICS -------------------------------------------------------------------------------------------------------------------->
   <%
   Call GetPackageMetrics( parPv_id, rsPkgMetrics )
   %>
   <fieldset class="fset" onclick="ToggleDisplay('divPkgMetrics','pkg_metrics_filler')">
   <%If IsNull(rsPkgMetrics("pkg_name")) Then %>
      <legend class="body_colb">
         <img src="images/i_metrics.gif" width="20" height="24" hspace="4" border="0" align='absmiddle' >Package Metrics not available
      </legend>
   <%Else%>
      <legend class="body_colb">
         <img src="images/i_metrics.gif" width="20" height="24" hspace="4" border="0" align='absmiddle' >Package Metrics...
      </legend>
      <div name="pkg_metrics_filler" id="pkg_metrics_filler" style="display:block;" class="div_filler">
         <span class="txt_linked pointer">Show...</span>
      </div>
      <div name="divPkgMetrics" id="divPkgMetrics" style="display:none;">
         <a name="PACKAGE_METRICS"></a>
         <table width="100%" border="0" cellspacing="1" cellpadding="2" class='lhsGrey'>
            <tr>
               <td width='20%'>Autobuilt:</td>
               <td><%If rsPkgMetrics("is_autobuildable") = "Y" Then%>Yes<%Else%>No<%End If%></td>
            </tr>
            <tr>
               <td>Unit Tested:</td>
               <td><%If rsPkgMetrics("unit_tested") = "Y" Then%>Yes<%Else%>No<%End If%></td>
            </tr>
            <tr>
               <td>Autotested:</td>
               <td><%If rsPkgMetrics("autotested") = "Y" Then%>Yes<%Else%>No<%End If%></td>
            </tr>
            <%If NOT IsNull(rsPkgMetrics("code_lines")) Then%>
            <tr>
               <td>Code Lines:</td>
               <td><%=rsPkgMetrics("code_lines")%></td>
            </tr>
            <%End If%>
            <%If NOT IsNull(rsPkgMetrics("comment_lines")) Then%>
            <tr>
               <td>Comment Lines:</td>
               <td><%=rsPkgMetrics("comment_lines")%></td>
            </tr>
            <%End If%>
            <%If NOT IsNull(rsPkgMetrics("blank_lines")) Then%>
            <tr>
               <td>Blank Lines:</td>
               <td><%=rsPkgMetrics("blank_lines")%></td>
            </tr>
            <%End If%>
            <%If NOT IsNull(rsPkgMetrics("branches")) Then%>
            <tr>
               <td>Number of Branches:</td>
               <td><%=rsPkgMetrics("branches")%></td>
            </tr>
            <%End If%>
            <%If NOT IsNull(rsPkgMetrics("branch_list")) Then%>
            <tr>
               <td>Branch List:</td>
               <td><%=rsPkgMetrics("branch_list")%></td>
            </tr>
            <%End If%>
            <%If NOT IsNull(rsPkgMetrics("code_files")) Then%>
            <tr>
               <td>Code Files:</td>
               <td><%=rsPkgMetrics("code_files")%></td>
            </tr>
            <%End If%>
            <%If NOT IsNull(rsPkgMetrics("ignored_files")) Then%>
            <tr>
               <td>Ignored Files:</td>
               <td><%=rsPkgMetrics("ignored_files")%></td>
            </tr>
            <%End If%>
            <%If NOT IsNull(rsPkgMetrics("makefiles")) Then%>
            <tr>
               <td>Makefiles:</td>
               <td><%=rsPkgMetrics("makefiles")%></td>
            </tr>
            <%End If%>
            <%If NOT IsNull(rsPkgMetrics("total_files")) Then%>
            <tr>
               <td>Total Files:</td>
               <td><%=rsPkgMetrics("total_files")%></td>
            </tr>
            <%End If%>
            <%If NOT IsNull(rsPkgMetrics("directories")) Then%>
            <tr>
               <td>Number of Directories:</td>
               <td><%=rsPkgMetrics("directories")%></td>
            </tr>
            <%End If%>
            <%If NOT IsNull(rsPkgMetrics("directory_depth")) Then%>
            <tr>
               <td>Directory Depth:</td>
               <td><%=rsPkgMetrics("directory_depth")%></td>
            </tr>
            <%End If%>
            <%If NOT IsNull(rsPkgMetrics("created_stamp")) Then%>
            <tr>
               <td>Metrics Collected:</td>
               <td><%=rsPkgMetrics("created_stamp")%></td>
            </tr>
            <%End If%>
            <%If NOT IsNull(rsPkgMetrics("build_time")) Then%>
            <tr>
               <td>Build Time:</td>
               <td><%=rsPkgMetrics("build_time")%> Seconds</td>
            </tr>
            <%End If%>

         </table>
      </div>
   <%End If%>
   </fieldset>
   <br>
   <%
   rsPkgMetrics.Close()
   Set rsPkgMetrics = nothing
   %>
<!-- PRODUCTS AFFECTED BY CHANGE -------------------------------------------------------------------------------------------------------->

<!-- REASON FOR DEPRECATION/DEPENDANCY DEPRECATED ----------------------------------------------------------------------------------------------------------------->
   <%If pkgInfoHash.Item("deprecated_state") = 6 Then %>

      <fieldset class="fset"><legend class="body_colb"><img src='images/s_notes.gif' width='21' height='24' hspace='4' border='0' align='absmiddle'>Reason for deprecation</legend>
         <a name="REASON_FOR_DEPRECATION"></a>
         <table width="100%" border="0" cellspacing="1" cellpadding="2" class='allGrey'>
            <tr>
               <td>
                  <%
                  Dim rsComment
                  Set rsComment = OraDatabase.DbCreateDynaset("SELECT * FROM DEPRECATED_PACKAGES WHERE RTAG_ID ="& Request("rtag_id") &" AND PKG_ID = "& pkgInfoHash.Item ("pkg_id") &"", cint(0))
                  If rsComment("comments") <> "" Then
                     Response.write "<table border='0' cellspacing='0' cellpadding='0'>"
                     Response.write "<tr>"
                     Response.write "<td class='sublbox_txt'>"& NewLine_To_BR((  rsComment("comments") ) ) &"<br></td>"
                     Response.write "</tr>"
                     Response.write "</table>"
                  'Else
                  '   If FixedIssues ( parPv_id ) Then
                  '      Response.write "<span class='sublbox_txt'>Not specified.</span><br>"
                  '   Else
                  '      Response.write "<span class='err_alert'>Required!</span><br>"
                  '   End If
                  End If
                  rsComment.Close()
                  Set rsComment = nothing
                  %>
               </td>
            </tr>
         </table>
      </fieldset>
      <br>
   <%End If%>
<!-- SBOM PRIORITY/CRITICALITY  --------------------------------------------------------------------------------------------------------->
   <%If NOT pageIsEditable AND pkgInfoHash.Item ("is_deployable") = "Y" Then%>
      <fieldset class="fset">
      <legend class="body_colb"><img src='icons/i_prod_sbom_priority.gif' hspace='4' border='0' align='absmiddle'>SBOM Priority</legend>
       <%If (pkgInfoHash.Item ("dlocked") = "Y") Then%>
       <div style="display: block;float: right;margin-top: -20px;background-color: #FFF;padding: 0 5px;">
            <span onClick="MM_openVixIFrame('_wform_sbom_priority.asp?pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>','SBOM Priority')" class="pointer txt_linked">Edit<img src="images/i_edit.gif" width="12" height="12" hspace="2" border="0" align='absmiddle'></span>
       </div>
       <%End If%>
         <a name="SBOM_PRIORITY"></a>
         <table width="100%" border="0" cellspacing="1" cellpadding="2" class=allGrey>
            <tr>
               <td>
                  <%If pkgInfoHash.Item ("sbom_priority") <> "" Then%>
                     <table border='0' cellspacing='0' cellpadding='0'>
                        <tr>
                           <td>
                              <%
                              If pkgInfoHash.Item ("sbom_priority") = "C" Then
                                 Response.write "<b><font color='red'>Critical.</font></b>"
                              ElseIf pkgInfoHash.Item ("sbom_priority") = "I" Then
                                 Response.write "<b>Important.</b>"
                              ElseIf pkgInfoHash.Item ("sbom_priority") = "R" Then
                                 Response.write "Routine"
                              ElseIf pkgInfoHash.Item ("sbom_priority") = "L" Then
                                 Response.write "Low"
                              End If
                              %>
                           </td>
                        </tr>
                     </table>
                  <%Else%>
                     <span class='err_alert'>Required!</span><br>
                  <%End If%>
               </td>
            </tr>
         </table>
      </fieldset>
      <br>
   <%End If%>
<!-- CHANGE TYPE  ----------------------------------------------------------------------------------------------------------------------->
   <fieldset class="fset">
   <a name="CHANGE_TYPE"></a>
   <%If pkgInfoHash.Item ("build_type") = "A" Then%>
         <legend class="body_colb"><img src='icons/i_pkg_change_type.gif' hspace='4' border='0' align='absmiddle'>Change Type</legend>
         <div style="display: block;float: right;margin-top: -20px;background-color: #FFF;padding: 0 5px;">
              <%If (pkgInfoHash.Item ("dlocked") <> "A")  AND (pkgInfoHash.Item ("dlocked") <> "Y") AND criticalSectionIsEditable Then%>
                 <span onClick="MM_openVixIFrame('_wform_rename_version.asp?renameMode=2&rfile=<%=ScriptName%>&pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>','Change Ripple Type')" class="txt_linked pointer">Edit<img src="images/i_edit.gif" width="12" height="12" hspace="2" border="0" align='absmiddle'></span>
              <%End If%>
         </div>
         <table width="100%" border="0" cellspacing="1" cellpadding="2" class='allGrey'>
            <tr>
               <td>
                  <%
                  If pkgInfoHash.Item ("change_type") <> "" Then
                     Response.write "<table border='0' cellspacing='0' cellpadding='0'>"
                     Response.write "<tr>"
                     If pkgInfoHash.Item ("change_type") = "M" Then
                        Response.write "<td class='sublbox_txt'>Major Change.<br></td>"
                     ElseIf pkgInfoHash.Item ("change_type") = "N" Then
                        Response.write "<td class='sublbox_txt'>Minor Change.<br></td>"
                     ElseIf pkgInfoHash.Item ("change_type") = "P" Then
                        Response.write "<td class='sublbox_txt'>Patch Change.<br></td>"
                     ElseIf pkgInfoHash.Item ("change_type") = "F" Then
                        Response.write "<td class='sublbox_txt'>Version Specified by User.<br></td>"
                     Else
                        Response.write "<td><span class='err_alert'>Unknown Change Type: " & pkgInfoHash.Item ("change_type") & "</span></td>"
                     End If
                     Response.write "</tr>"
                     Response.write "</table>"
                  Else
                     Response.write "<span class='err_alert'>Required!</span><br>"
                  End If
                  %>
               </td>
            </tr>
         </table>
   <%ElseIf pkgInfoHash.Item ("build_type") = "M" Then%>
         <legend class="body_colb"><img src='icons/i_pkg_change_type.gif' hspace='4' border='0' align='absmiddle'>Build Type</legend>
         <table width="100%" border="0" cellspacing="1" cellpadding="2" class='allGrey'>
            <tr>
               <td>Manually Built Package.
                  <%If pkgInfoHash.Item ("change_type") <> "F" Then%>
                        <span class='err_alert'>Unexpected Change Type: <%=pkgInfoHash.Item ("change_type")%></span>
                  <%End If%>
               </td>
            </tr>
         </table>
   <%ElseIf pkgInfoHash.Item ("build_type") = "U" Then%>
         <legend class="body_colb"><img src='icons/i_pkg_change_type.gif' hspace='4' border='0' align='absmiddle'>Build Type</legend>
         <table width="100%" border="0" cellspacing="1" cellpadding="2" class='allGrey'>
            <tr>
               <td>
               <span class='err_alert'>UnbuildablePackage.</span> This version has been created outside of the build system, possibly via Deployment Manager or as a part of the unification of the Pulse Build System.
               </td>
            </tr>
         </table>
   <%ElseIf pkgInfoHash.Item ("build_type") = "Y" Then%>
         <legend class="body_colb"><img src='icons/i_pkg_change_type.gif' hspace='4' border='0' align='absmiddle'>Build Type</legend>
         <table width="100%" border="0" cellspacing="1" cellpadding="2" class='allGrey'>
            <tr>
               <td>Ripple Built</td>
            </tr>
         </table>
   <%Else%>
         <legend class="body_colb"><img src='icons/i_pkg_change_type.gif' hspace='4' border='0' align='absmiddle'>Build Type</legend>
         <table width="100%" border="0" cellspacing="1" cellpadding="2" class='allGrey'>
            <tr>
               <td><span class='err_alert'>Unknown Build Type (<%=pkgInfoHash.Item ("build_type")%>) Change Type (<%=pkgInfoHash.Item ("change_type")%>)</span></td>
            </tr>
         </table>
   <%End If%>
   </fieldset>
   <br>

<!-- RIPPLE PROPERTIES  ----------------------------------------------------------------------------------------------------------------------->
   <%If IsNull(pkgInfoHash.Item ("is_patch")) Then%>
      <fieldset class="fset">
         <legend class="body_colb"><img src='icons/i_pkg_ripple_type.gif' hspace='4' border='0' align='absmiddle' height='25' width='25'>Ripple Properties</legend>
         <div style="display: block;float: right;margin-top: -20px;background-color: #FFF;padding: 0 5px;">
            <%Dim canEditRippleProperties : canEditRippleProperties = FALSE

                canEditRippleProperties = (pageIsEditable AND canShowControlInProject( "RipplePackage" )) OR _ 
                                          canShowControlInProject( "AdvRipPackageVersions" ) OR _
                                          canShowControlInProject( "PegPackageVersions" ) OR _
                                          criticalSectionIsEditable

            If canEditRippleProperties Then%>
                <span onClick="MM_openVixIFrame('_wform_ripple_properties.asp?pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>','Edit Ripple Type')" class="txt_linked pointer">Edit<img src="images/i_edit.gif" width="12" height="12" hspace="2" border="0" align='absmiddle'></span>
            <%End If%>
         </div>
         <a name="RIPPLE_PROPERTIES"></a>
         <table width="100%" border="0" cellspacing="1" cellpadding="2" class='lhsGrey'>
            <%If Request("rtag_id") <> "" Then
               If pkgInfoHash.Item ("is_pegged")  Then %>
                  <tr>
                     <td>Is Pegged <%=Quick_Help ( "pegged_version" )%></td>
                     <td>Yes</td>
                  </tr>
               <%End If%>
            <%End If%>

            <%If NOT pkgInfoHash.Item ("is_pegged") Then%>
              <%If Request("rtag_id") <> "" Then%>
               <tr>
                  <td>Build Inclusion<%=Quick_Help ( "ripple_build" )%>
                  </td>
                     <%Dim rsQryRipple
                     Set rsQryRipple = OraDatabase.DbCreateDynaset( "SELECT p.PKG_NAME, pv.PV_OVERVIEW, pv.PKG_ID,nvl(dnr.root_pv_id, -1) as root_pv_id, dnr.* FROM DO_NOT_RIPPLE dnr, PACKAGE_VERSIONS pv, PACKAGES p WHERE dnr.RTAG_ID ="& Request("rtag_id") &"AND dnr.PV_ID ="&Request("pv_id") &" AND  pv.pv_id(+) = dnr.ROOT_PV_ID AND p.PKG_ID(+) = pv.PKG_ID", cint(0))
                        If rsQryRipple.RecordCount <> 0  Then
                            Dim CauseText
                            Dim rowData
                            If (IsNull(rsQryRipple("root_file")) AND IsNull(rsQryRipple("root_cause"))) Then
                                If rsQryRipple("root_pv_id") < 0 Then
                                    CauseText = "Directly Excluded"
                                Else
                                    CauseText = "Indirectly excluded by <a class=""txt_linked"" title='"&rsQryRipple("PV_OVERVIEW")&"' href=fixed_issues.asp?pv_id="& rsQryRipple("root_pv_id") & "&rtag_id="&rsQryRipple("rtag_id") & ">" & rsQryRipple("pkg_name") & "</a>"
                                End If

                            ElseIf IsNull(rsQryRipple("root_file")) Then
                               CauseText = rsQryRipple("root_cause")

                            Else
                                CauseText = "<a class=""txt_linked"" title=""" & rsQryRipple("root_file") &_
                                          " Log file may have expired."" " &_
                                          "href=""" & ABTLOG_URL & "/" & rsQryRipple("root_file") & """>" &_
                                          "Build Failure Log File</a>"
                            End If
                            %>
                            <td>No.&nbsp;<%=CauseText%></td>
                         <%Else%>
                            <td>Yes</td>
                         <%End If%>
                     <%rsQryRipple.Close()
                     Set rsQryRipple = nothing%>
               </tr>
               <%End If%>
               <%If pkgInfoHash.Item ("advisory_ripple") Then%>
                <tr>
                      <td>Advisory Ripple <%=Quick_Help ( "advisory_ripple" )%></td>
                      <td>Enabled</td>
                </tr>
               <%End If%>
               <tr>
                  <td>Ripple Type <%=Quick_Help ( "ripple_type" )%></td>
                  <td>
                        <%
                        Response.write "<table border='0' cellspacing='0' cellpadding='0'>"
                        Response.write "<tr>"
                        Response.write "<td class='sublbox_txt'>"
                        Dim selectedRippleType, selectedRippleName, selectedRippleState
                        selectedRippleType = pkgInfoHash.Item ("ripple_field")
                        selectedRippleName = rippleFieldName(selectedRippleType, selectedRippleState)
                        If NOT selectedRippleState Then
                           Response.write "<span class='err_alert'>Required!</span>"
                        Else
                            Response.write( selectedRippleName )
                        End If
                        If ( selectedRippleType = "L" ) Then
                        Dim qry
                        Set qry = OraDatabase.DbCreateDynaset( "SELECT major_limit, minor_limit, patch_limit, build_number_limit from package_versions where pv_id="& Request("pv_id"), cint(0))
                        Response.write " "
                        If isNull(qry("major_limit")) Then
                           Response.write("0")
                        Else
                           Response.write( qry.Fields( "major_limit" ).Value )
                        End If
                        Response.write ", "
                        If isNull(qry("minor_limit")) Then
                           Response.write("0")
                        Else
                           Response.write( qry.Fields( "minor_limit" ).Value )
                        End If
                        Response.write ", "
                        If isNull(qry("patch_limit")) Then
                           Response.write("0")
                        Else
                           Response.write( qry.Fields( "patch_limit" ).Value )
                        End If
                        Response.write ", "
                        If isNull(qry("build_number_limit")) Then
                           Response.write("0")
                        Else
                           Response.write( qry.Fields( "build_number_limit" ).Value )
                        End If
                        qry.Close()
                        Set qry = nothing
                        End If
                        Response.Write "</td>"
                        Response.write "</tr>"
                        Response.write "</table>"
                        %>
                  </td>
               </tr>
            <%End If%>
            <%If Request("rtag_id") <> ""  AND pkgInfoHash.Item("dlocked") = "Y" Then
              Dim sClickStop, sStopText, dRippleStop, sButtonText, sPersistText
              dRippleStop = pkgInfoHash.Item("ripple_stop")
              If dRippleStop = "" OR IsNull(dRippleStop) Then
                sClickStop="vixConfirm('Marked this package so as to prevent it from being built<br>when its dependencies change, until it is manually resumed.<p>Stop Ripple Builds',{title:'Stop Ripple', button:'Stop', url: '_s_ripple_stop.asp?mode=s&rfile="& scriptName &"&pv_id="& parPv_id &"&rtag_id="& parRtag_id &"'});"
                sStopText = "Normal"
                sButtonText = "Change"
              ElseIf dRippleStop = "s" Then 
                sClickStop="vixConfirm('This package has been marked to prevented ripple builds.<p>Remove this marker',{title:'Remove Ripple', button:'Remove', url: '_s_ripple_stop.asp?mode=r&rfile="& scriptName &"&pv_id="& parPv_id &"&rtag_id="& parRtag_id &"'});"
                sStopText = "Ripples will stop at this package"
                sButtonText = "Remove"
              ElseIf dRippleStop = "w" Then 
                sClickStop="vixConfirm('This package has been marked to prevented ripple builds<br>and a ripple is required.<p>Allow ripple to continue.',{title:'Continue Ripple', button:'Allow Ripple', url: '_s_ripple_stop.asp?mode=g&rfile="& scriptName &"&pv_id="& parPv_id &"&rtag_id="& parRtag_id &"'});"
                sStopText = "Ripple required and awaiting manual intervention"
                sButtonText = "Resume"
              ElseIf dRippleStop = "g" Then 
                sStopText = "Ripple resumed. Awaiting build"
              Else
                sStopText = "Ripple Stop: Unknown state:" & dRippleStop 
              End If

              sPersistText = ""
              If pkgInfoHash.Exists("persist_ripple_stop") Then
                  If NOT IsNull(pkgInfoHash.Item("persist_ripple_stop")) Then
                      sPersistText = "&nbsp;[Persistent Ripple Stop Enabled]"
                  End If
              End If

             %>
             <tr>
                  <td>Ripple Stop <%=Quick_Help ( "ripple_stop" )%></td>
                  <td><%=sStopText%><%=sPersistText%>
                  <%If canActionInProject() AND sClickStop <> "" Then%>
                    <span onClick="<%=sClickStop%>" class="txt_linked pointer"><%=sButtonText%><img src="images/i_edit.gif" width="12" height="12" hspace="2" border="0" align='absmiddle'></span>
                  <%End If%>
                  </td>
            </tr>
            <%End If%>
         </table>
      </fieldset>
      <br>
   <%End If%>

<!-- REASON FOR RELEASE ----------------------------------------------------------------------------------------------------------------->
   <fieldset class="fset">
      <legend class="body_colb"><img src='images/s_notes.gif' width='21' height='24' hspace='4' border='0' align='absmiddle'>Reason for this version</legend>
      <div style="display: block;float: right;margin-top: -25px;background-color: #FFF;padding: 0 5px;">
          <span class="clipElement txt_linked" title="Copy to Clipboard" data-target="releaseReason">Copy<%=enum_imgClipBoard12%></span>
       <%If pageIsEditable Then%>
             <span title='Insert dependency changes as the comment' onClick="return vixConfirm('Current comments would be deleted.<br>Do you wish to continue?',{url :'_update_versions.asp?pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>' })" class="txt_linked pointer">Update Dependencies<img src="images/i_new.gif" width="12" height="12" hspace="2" border="0" align='absmiddle'></span>
             <span onClick="MM_openVixIFrame('_wform_reason_for_version.asp?pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>','Reason For Release')" class="txt_linked pointer">Edit<img src="images/i_edit.gif" width="12" height="12" hspace="2" border="0" align='absmiddle'></span>
       <%End If%>
      </div>
      <a name="REASON_FOR_THIS_RELEASE"></a>
      <table width="100%" border="0" cellspacing="1" cellpadding="2" >
         <tr>
            <td>
            <%If pkgInfoHash.Item ("comments") <> "" Then%>
               <table width="100%" border='0' cellspacing='0' cellpadding='0' class='allGrey'>
                  <tr>
                     <td id=releaseReason> <%Response.Write( NewLine_To_BR(pkgInfoHash.Item("comments")) )%><br></td>
                  </tr>
               </table>
            <%ElseIf FixedIssues ( parPv_id ) Then%>
               <span>Not specified.</span><br>
            <%Else%>
               <span class='err_alert'>Required!</span><br>
            <%End If%>
            </td>
         </tr>
      </table>
   </fieldset>
   <br>
<!-- REASON FOR NON_RIPPLE RELEASE ----------------------------------------------------------------------------------------------------------------->
   <%If pkgInfoHash.Item ("comments") = "Rippled Build." Then%>

      <fieldset class="fset">
         <legend class="body_colb"><img src='images/s_notes.gif' width='21' height='24' hspace='4' border='0' align='absmiddle'>Reason for last non-ripple build</legend>
         <table width="100%" border="0" cellspacing="1" cellpadding="2" class='allGrey'>
            <tr>
               <td>
                  <%
                  'Dim rsQry
                  Call LastPvId(pkgInfoHash.Item ("pv_id"))

                  While rsQry("comments") = "Rippled Build."
                     Call LastPvId(rsQry("last_pv_id"))
                  Wend

                  If pkgInfoHash.Item ("comments") <> "" Then
                     Response.write "<table border='0' cellspacing='0' cellpadding='0'>"
                     Response.write "<tr>"
                     Response.write "<td class='sublbox_txt'><b>Package Version:</b> <b>"& NewLine_To_BR(( rsQry ("pkg_version") ) ) &"</b><br></td>"
                     Response.write "</tr>"
                     Response.write "<tr>"
                     Response.write "<td class='sublbox_txt'>"& NewLine_To_BR(( rsQry ("comments") ) ) &"<br></td>"
                     Response.write "</tr>"

                     Response.write "</table>"%>

                     <table width="100%" border="0" cellspacing="1" cellpadding="2">
                        <tr>
                           <td valign="top" class="sublbox_txt"><b>Fixed Issues For Last Non-Ripple Build</b></td>
                           <td align="right" valign="top">
                              <%If pageIsEditable Then%>
                                 <span onClick="MM_openVixIFrame('_wform_import_issues.asp?pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>&skip_open=true','Import Fixed Issues')" class="txt_linked pointer">Import Fixed Issues from ClearQuest<img src="images/i_download.gif" width="12" height="12" hspace="2" border="0" align='absmiddle'></span>
                              <%End If%>
                           </td>
                        </tr>
                     </table>
                     <%Call Get_Package_Issues ( parPv_id, SQLstr, fixedIssDict, notesIssDict, enumISSUES_STATE_FIXED )
                     If (retVal > 0) Then
                        retVal = Get_CQ_Issues ( SQLstr, rsCQ )
                        If retVal = 0 Then%>
                           <table width="100%" border="0" cellspacing="1" cellpadding="3">
                              <tr>
                                 <td bgcolor=#e4e9ec nowrap width="1%" class="form_field" align="center">Fixed</td>
                                 <td bgcolor=#e4e9ec nowrap width="1%" class="form_field">Issue&nbsp;Id&nbsp;</td>
                                 <td bgcolor=#e4e9ec nowrap width="1%" class="form_field">Issue&nbsp;DB&nbsp;</td>
                                 <td bgcolor=#e4e9ec nowrap width="100%" class="form_field">Summary</td>
                                 <td bgcolor=#e4e9ec nowrap width="1%" class="form_field">Issue&nbsp;Type&nbsp;</td>
                                 <td bgcolor=#e4e9ec nowrap width="1%" class="form_field">Priority</td>
                                 <td bgcolor=#e4e9ec nowrap width="1%" class="form_field">Status</td>
                                 <td bgcolor=#e4e9ec nowrap width="1%" class="form_field">Note</td>
                                 <td bgcolor=#e4e9ec nowrap width="1%" class="form_field">&nbsp;</td>
                              </tr>
                              <%If ((NOT rsCQ.BOF) AND (NOT rsCQ.EOF)) Then%>
                                 <%While ((NOT rsCQ.BOF) AND (NOT rsCQ.EOF))%>
                                    <tr>
                                       <td align="center" nowrap bgcolor=#e4e9ec><img src="images/i_tick_black.gif" width="7" height="7" vspace="2"></td>
                                       <td nowrap class="form_item"><span onClick="MM_openVixIFrame('_wform_issues_details.asp?iss_db=<%=rsCQ("iss_db")%>&iss_id=<%=rsCQ("iss_id")%>','Issue Details')" class="txt_linked pointer"><%=rsCQ("iss_num")%></span></td>
                                       <td class="form_item">
                                            <%If Cint(rsCQ("iss_db")) = enumCLEARQUEST_DEVI_ID Then%>
                                                DEVI
                                            <%Else%>
                                                UNKNOWN
                                            <%End If%></td>
                                       <td class="form_item"><%=NewLine_To_BR ( To_HTML ( rsCQ("summary") ) )%></td>
                                       <td nowrap  class="form_item"><%=rsCQ("issue_type")%></td>
                                       <td nowrap  class="form_item"><%=rsCQ("priority")%></td>
                                       <td nowrap  class="form_item"><%=rsCQ("Status")%></td>
                                       <%If sectionIsEditable Then%>
                                           <%If notesIssDict.Exists (Cstr(rsCQ("iss_db") &"."& rsCQ("iss_id"))) Then%>
                                             <td align="center"  class="form_item"><span class='pointer' onClick="MM_openVixIFrame('_wform_issue_notes.asp?rtag_id=<%=parRtag_id%>&pv_id=<%=parPv_id%>&iss_db=<%=rsCQ("iss_db")%>&iss_id=<%=rsCQ("iss_id")%>','Issue Notes')"><img src="images/i_note_on.gif" width="11" height="12" border="0" title="<%=notesIssDict.Item (Cstr(rsCQ("iss_db") &"."& rsCQ("iss_id")))%>"></span></td>
                                          <%Else%>
                                             <td align="center"  class="form_item"><span class='pointer' onClick="MM_openVixIFrame('_wform_issue_notes.asp?rtag_id=<%=parRtag_id%>&pv_id=<%=parPv_id%>&iss_db=<%=rsCQ("iss_db")%>&iss_id=<%=rsCQ("iss_id")%>','Issue Notes')"><img src="images/i_note_off.gif" width="11" height="12" border="0" title="Add Note"></span></td>
                                          <%End If%>
                                       <%Else%>
                                          <%If notesIssDict.Exists (Cstr(rsCQ("iss_db") &"."& rsCQ("iss_id"))) Then%>
                                             <td align="center"  class="form_item"><img src="images/i_note_on.gif" width="11" height="12" border="0" title="<%=notesIssDict.Item (Cstr(rsCQ("iss_db") &"."& rsCQ("iss_id")))%>"></td>
                                          <%Else%>
                                             <td align="center"  class="form_item"><img src="images/i_note_off.gif" width="11" height="12" border="0"></td>
                                          <%End If%>
                                       <%End If%>
                                       <%If NOT pageIsEditable Then%>
                                          <td align="center"  class="form_item"><img src="images/i_delete_disable.gif" width="13" height="12" hspace="2" border="0"></td>
                                       <%Else%>
                                          <td align="center"  class="form_item"><span class=pointer data-href="_remove_issue.asp?iss_db=<%=rsCQ("iss_db")%>&iss_id=<%=rsCQ("iss_id")%>&pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>" onClick="return vixConfirmDelete('this issue from Release Manager');"><img src="images/i_delete.gif" width="13" height="12" hspace="2" border="0" alt="Delete this issue from the list"></span></td>
                                       <%End If%>
                                    </tr>
                                    <%rsCQ.MoveNext
                                 WEnd
                                 rsCQ.Close()%>
                              <%Else%>
                                 <tr>
                                    <td bgcolor=#e4e9ec nowrap>&nbsp;</td>
                                    <td nowrap></td>
                                    <td class="form_item"></td>
                                    <td class="form_item"></td>
                                    <td class="form_item"></td>
                                    <td class="form_item"></td>
                                    <td class="form_item"></td>
                                    <td class="form_item"></td>
                                    <td align="center"  class="form_item"></td>
                                 </tr>
                              <%End If%>
                           </table>
                        <%End If%>
                        <%If retVal <> 0 Then Response.write enumMSSQL_ERROR
                     End If
                  Else
                     If FixedIssues ( parPv_id ) Then
                        Response.write "<span class='sublbox_txt'>Not specified.</span><br>"
                     Else
                        Response.write "<span class='err_alert'>Required!</span><br>"
                     End If
                  End If

                  rsQry.Close()
                  Set rsQry = nothing
                  %>
               </td>
            </tr>
         </table>
      </fieldset>
      <br>
   <%End If%>
<!-- FIXED ISSUES ----------------------------------------------------------------------------------------------------------------------->
   <fieldset class="fset">
      <legend class="body_colb">
         <img src="images/s_bugs.gif" width="21" height="18" border="0" hspace="4" align='absmiddle'>
         Issues
      </legend>
      <a name="ISSUES"></a>
      <p class="body_colb"><a name="ISSUES"></a></p>
      <table width="100%" border="0" cellpadding="2" cellspacing="1">
         <tr>
            <!-- Jira Issues -->
            <td valign="top" class="body_colb">JIRA Issues</td>
            <td align="right" valign="top">
            <%BuildEditButtonRaw  pageIsEditable, "Import JIRA issues", "Edit", TRUE, "src='images/i_download.gif' width='12' height='12' hspace='2' border='0' align='absmiddle'", "MM_openVixIFrame('_wform_import_jira_issues.asp?pv_id="&parPv_id&"&rtag_id="&parRtag_id&"&skip_open=true','Import Issues')" %>
            </td>

            <%
            Dim issueInfo, el, key
            Set issueInfo = CreateObject( "Scripting.Dictionary" )
            Call getJiraIssueDetails(parPv_id,issueInfo, 0)
            If issueInfo.Count > 0 Then
            %>

            <table width="100%" border="0" cellspacing="1" cellpadding="3" class=stdGrey>
                <thead>
                   <th width="1%" align="center">Fixed</th>
                   <th width="1%" >IssueId</th>
                   <th width="1%" >IssueDB</th>
                   <th width="100%" >Summary</th>
                   <th width="1%" >IssueType</th>
                   <th width="1%" >Priority</th>
                   <th width="1%" >Status</th>
                   <th width="1%" >Note</th>
                   <th width="1%" ></th>
                </thead>
                <%
                For Each key In issueInfo
                Set el = issueInfo.item(key)
                %>
                <tr>
                  <%If el.Exists("resolution") Then %>
                     <td align="center" nowrap>
                        <img src="images/i_tick_black.gif" width="7" height="7" vspace="2">
                     </td>
                  <%Else%>
                     <td align="center" nowrap></td>
                  <%End If%>
                  <td nowrap class="form_item">
                     <a href="<%=el.item("url")%>" target="_blank" class="txt_linked"><%=key%></a>
                  </td>
                  <td><%=el.item("type")%></td>
                  <td><%=NewLine_To_BR ( To_HTML ( el.item("summary") ) )%></td>
                  <td nowrap><%=el.item("issuetype")%></td>
                  <td nowrap><%=el.item("priority")%></td>
                  <td nowrap><%=el.item("status")%></td>
                  <td nowrap></td>
                  <%If NOT pageIsEditable Then%>
                     <td align="center">
                        <img src="images/i_delete_disable.gif" width="13" height="12" hspace="2" border="0">
                     </td>
                  <%Else%>
                     <td align="center">
                        <span class=pointer data-href="_remove_jira_issue.asp?iss_link=<%=el.item("key")%>&pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>" onClick="return vixConfirmDelete('this issue from Release Manager');">
                           <img src="images/i_delete.gif" width="13" height="12" hspace="2" border="0" alt="Delete this issue from the list">
                        </span>
                     </td>
                  <%End If%>
               </tr>
               <%
               Next
               Set issueInfo = nothing
               %>
            </table>
            <%End If%>

            <!-- Fixed ClearCase Issues -->
            <table width="100%" border="0" cellspacing="1" cellpadding="2">
               <tr>
                  <td valign="top" class="body_colb">Fixed Issues</td>
                  <td align="right" valign="top">
                    <%BuildEditButtonRaw  pageIsEditable, "Import Fixed Issues from ClearQuest", "Edit", TRUE, "src='images/i_download.gif' width='12' height='12' hspace='2' border='0' align='absmiddle'", "MM_openVixIFrame('_wform_import_issues.asp?pv_id="&parPv_id&"&rtag_id="&parRtag_id&"&skip_open=true','Import Fixed Issues')" %>
                  </td>
               </tr>
            </table>

            <%retVal = Get_Package_Issues ( parPv_id, SQLstr, fixedIssDict, notesIssDict, enumISSUES_STATE_FIXED )
            If (retVal > 0) Then
               retVal = Get_CQ_Issues ( SQLstr, rsCQ )
               If retVal = 0 Then%>
                  <table width="100%" border="0" cellspacing="1" cellpadding="3" class=stdGrey>
                     <thead>
                        <th width="1%" align="center">Fixed</th>
                        <th width="1%" >IssueId</th>
                        <th width="1%" >IssueDB</th>
                        <th width="100%">Summary</th>
                        <th width="1%" >IssueType</th>
                        <th width="1%" >Priority</th>
                        <th width="1%" >Status</th>
                        <th width="1%" >Note</th>
                        <th width="1%" ></th>
                     </thead>
                     <%If ((NOT rsCQ.BOF) AND (NOT rsCQ.EOF)) Then%>
                        <%While ((NOT rsCQ.BOF) AND (NOT rsCQ.EOF))%>
                           <tr>
                              <td align="center" nowrap bgcolor=#e4e9ec><img src="images/i_tick_black.gif" width="7" height="7" vspace="2"></td>
                              <td nowrap class="form_item">
                                <%BuildEditButtonRaw  TRUE, rsCQ("iss_num") , "Edit", TRUE, "", "MM_openVixIFrame('_wform_issues_details.asp?iss_db="&rsCQ("iss_db")&"&iss_id="&rsCQ("iss_id")&"','Issue Details')" %>
                              </td>
                              <td class="form_item">
                                 <%If CInt(rsCQ("iss_db")) = enumCLEARQUEST_DEVI_ID Then%>
                                    DEVI
                                 <%Else%>
                                    UNKNOWN
                                 <%End If%>
                              </td>
                              <td class="form_item"><%=NewLine_To_BR ( To_HTML ( rsCQ("summary") ) )%></td>
                              <td nowrap  class="form_item"><%=rsCQ("issue_type")%></td>
                              <td nowrap  class="form_item"><%=rsCQ("priority")%></td>
                              <td nowrap  class="form_item"><%=rsCQ("Status")%></td>
                              <%If sectionIsEditable AND pageIsEditable Then
                                    Dim noteImage
                                    If notesIssDict.Exists (Cstr(rsCQ("iss_db") &"."& rsCQ("iss_id"))) Then
                                        noteImage = "images/i_note_on.gif"
                                    Else
                                        noteImage = "images/i_note_off.gif"
                                    End If
                                End If
                                 %>


                              <%If sectionIsEditable AND pageIsEditable Then%>
                                 <%If notesIssDict.Exists (Cstr(rsCQ("iss_db") &"."& rsCQ("iss_id"))) Then%>
                                    <td align="center"  class="form_item">
                                       <span class='pointer txt_linked' onClick="MM_openVixIFrame('_wform_issue_notes.asp?rtag_id=<%=parRtag_id%>&pv_id=<%=parPv_id%>&iss_db=<%=rsCQ("iss_db")%>&iss_id=<%=rsCQ("iss_id")%>','Issue Notes')">
                                          <img src="images/i_note_on.gif" width="11" height="12" border="0" title="<%=notesIssDict.Item (Cstr(rsCQ("iss_db") &"."& rsCQ("iss_id")))%>">
                                       </span>
                                    </td>
                                 <%Else%>
                                    <td align="center"  class="form_item">
                                       <span class='pointer txt_linked' onClick="MM_openVixIFrame('_wform_issue_notes.asp?rtag_id=<%=parRtag_id%>&pv_id=<%=parPv_id%>&iss_db=<%=rsCQ("iss_db")%>&iss_id=<%=rsCQ("iss_id")%>','Issue Notes')">
                                          <img src="images/i_note_off.gif" width="11" height="12" border="0" title="Add Note">
                                       </span>
                                    </td>
                                 <%End If%>
                              <%Else%>
                                 <%If notesIssDict.Exists (Cstr(rsCQ("iss_db") &"."& rsCQ("iss_id"))) Then%>
                                    <td align="center"  class="form_item">
                                       <img src="images/i_note_on.gif" width="11" height="12" border="0" title="<%=notesIssDict.Item (Cstr(rsCQ("iss_db") &"."& rsCQ("iss_id")))%>">
                                    </td>
                                 <%Else%>
                                    <td align="center"  class="form_item">
                                       <img src="images/i_note_off.gif" width="11" height="12" border="0">
                                    </td>
                                 <%End If%>
                              <%End If%>
                              <%If NOT pageIsEditable Then%>
                                 <td align="center"  class="form_item">
                                    <img src="images/i_delete_disable.gif" width="13" height="12" hspace="2" border="0">
                                 </td>
                              <%Else%>
                                 <td align="center"  class="form_item">
                                    <span class=pointer data-href="_remove_issue.asp?iss_db=<%=rsCQ("iss_db")%>&iss_id=<%=rsCQ("iss_id")%>&pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>" onClick="return vixConfirmDelete('this issue from Release Manager');">
                                       <img src="images/i_delete.gif" width="13" height="12" hspace="2" border="0" alt="Delete this issue from the list">
                                    </span>
                                 </td>
                              <%End If%>
                           </tr>
                           <%rsCQ.MoveNext
                        WEnd
                        rsCQ.Close()%>
                     <%Else%>
                        <tr>
                           <td>&nbsp;</td>
                           <td></td>
                           <td></td>
                           <td></td>
                           <td></td>
                           <td></td>
                           <td></td>
                           <td></td>
                           <td></td>
                        </tr>
                     <%End If%>

                  </table>
               <%End If%>
               <%If retVal <> 0 Then Response.write enumMSSQL_ERROR%>
            <%End If%>

            <!-- Outstanding ClearCase Issues -->
            <table width="100%" border="0" cellspacing="1" cellpadding="2">
               <tr>
                  <td valign="top" class="body_colb">Outstanding Issues</td>
                  <td align="right" valign="top">
                     <%If pageIsEditable Then%>
                        <span class='pointer txt_linked' onClick="MM_openVixIFrame('_wform_import_issues.asp?pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>','Import Issues')" class="txt_linked">
                           Import Outstanding Issues from ClearQuest
                           <img src="images/i_download.gif" width="12" height="12" hspace="2" border="0" align='absmiddle'>
                        </span>
                     <%End If%>
                  </td>
               </tr>
            </table>

            <%retVal = Get_Package_Issues ( parPv_id, SQLstr, fixedIssDict, notesIssDict, enumISSUES_STATE_IMPORTED )
            If (retVal > 0) Then
               retVal = Get_CQ_Issues ( SQLstr, rsCQ )
               If retVal = 0 Then%>
                  <table width="100%" border="0" cellspacing="1" cellpadding="2" class=stdGrey>
                     <form name="fixedissues" method="get" action="_update_issues_state.asp">
                        <thead>
                           <%If pageIsEditable Then%>
                              <th nowrap width="1%" align="center">Fixed</th>
                           <%End If%>
                           <th  nowrap width="1%" >Issue&nbsp;Id&nbsp;</th>
                           <th  nowrap width="1%" >Issue DB&nbsp;</th>
                           <th  nowrap width="100%" >Summary</th>
                           <th  nowrap width="1%" >Issue&nbsp;Type&nbsp;</th>
                           <th  nowrap width="1%" >Priority</th>
                           <th  nowrap width="1%" >Status</th>
                           <th  nowrap width="1%" >Note</th>
                           <th  nowrap width="1%" >&nbsp;</th>
                        </thead>
                        <%If ((NOT rsCQ.BOF) AND (NOT rsCQ.EOF)) Then%>
                           <%While ((NOT rsCQ.BOF) AND (NOT rsCQ.EOF))%>
                              <tr>
                                 <%If pageIsEditable Then%>
                                    <td align="center" nowrap>
                                       <input type="checkbox" name="FRfixed" value="<%=rsCQ("iss_db") &"."& rsCQ("iss_id")%>">
                                    </td>
                                 <%End If%>
                                 <td nowrap class="form_item">
                                    <span class='pointer txt_linked' onClick="MM_openVixIFrame('_wform_issues_details.asp?iss_db=<%=rsCQ("iss_db")%>&iss_id=<%=rsCQ("iss_id")%>','Issue Details')" class="txt_linked">
                                       <%=rsCQ("iss_num")%>
                                    </span>
                                 </td>
                                 <td class="form_item">
                                    <%If CInt(rsCQ("iss_db")) = enumCLEARQUEST_DEVI_ID Then%>
                                       DEVI
                                    <%Else%>
                                       UNKNOWN
                                    <%End If%>
                                 </td>
                                 <td class="form_item"><%=NewLine_To_BR ( To_HTML ( rsCQ("summary") ) )%></td>
                                 <td nowrap  class="form_item"><%=rsCQ("issue_type")%></td>
                                 <td nowrap  class="form_item"><%=rsCQ("priority")%></td>
                                 <td nowrap  class="form_item"><%=rsCQ("Status")%></td>
                                 <%If sectionIsEditable AND pageIsEditable Then%>
                                    <%If notesIssDict.Exists (Cstr(rsCQ("iss_db") &"."& rsCQ("iss_id"))) Then%>
                                       <td align="center"  class="form_item">
                                          <span class='pointer txt_linked' onClick="MM_openVixIFrame('_wform_issue_notes.asp?rtag_id=<%=parRtag_id%>&pv_id=<%=parPv_id%>&iss_db=<%=rsCQ("iss_db")%>&iss_id=<%=rsCQ("iss_id")%>','Issue Notes')">
                                             <img src="images/i_note_on.gif" width="11" height="12" border="0" alt="<%=notesIssDict.Item (Cstr(rsCQ("iss_db") &"."& rsCQ("iss_id")))%>">
                                          </span>
                                       </td>
                                    <%Else%>
                                       <td align="center"  class="form_item">
                                          <span class='pointer txt_linked' onClick="MM_openVixIFrame('_wform_issue_notes.asp?rtag_id=<%=parRtag_id%>&pv_id=<%=parPv_id%>&iss_db=<%=rsCQ("iss_db")%>&iss_id=<%=rsCQ("iss_id")%>','Issue Notes')">
                                             <img src="images/i_note_off.gif" width="11" height="12" border="0" alt="Add Note">
                                          </span>
                                       </td>
                                    <%End If%>
                                 <%Else%>
                                    <%If notesIssDict.Exists (Cstr(rsCQ("iss_db") &"."& rsCQ("iss_id"))) Then%>
                                       <td align="center"  class="form_item">
                                          <img src="images/i_note_on.gif" width="11" height="12" border="0" alt="<%=notesIssDict.Item (Cstr(rsCQ("iss_db") &"."& rsCQ("iss_id")))%>">
                                       </td>
                                    <%Else%>
                                       <td align="center"  class="form_item">
                                          <img src="images/i_note_off.gif" width="11" height="12" border="0">
                                       </td>
                                    <%End If%>
                                 <%End If%>
                                 <%If NOT pageIsEditable Then%>
                                    <td align="center"  class="form_item">
                                       <img src="images/i_delete_disable.gif" width="13" height="12" hspace="2" border="0">
                                    </td>
                                 <%Else%>
                                    <td align="center"  class="form_item">
                                       <span class=pointer data-href="_remove_issue.asp?iss_db=<%=rsCQ("iss_db")%>&iss_id=<%=rsCQ("iss_id")%>&pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>" onClick="return vixConfirmDelete('this issue from Release Manager');">
                                          <img src="images/i_delete.gif" width="13" height="12" hspace="2" border="0" alt="Delete this issue from the list">
                                       </span>
                                    </td>
                                 <%End If%>
                              </tr>
                              <%rsCQ.MoveNext
                           WEnd
                           rsCQ.Close()%>
                           <%If pageIsEditable Then%>
                              <tr class=blank>
                                 <td align="center" nowrap bgcolor=#e4e9ec>
                                    <input type="submit" name="Apply" value="Apply" class="form_btn">
                                 </td>
                                 <td></td>
                                 <td></td>
                                 <td></td>
                                 <td></td>
                                 <td></td>
                                 <td></td>
                                 <td></td>
                                 <td></td>
                              </tr>
                           <%End If%>
                        <%Else%>
                           <tr>
                              <%If pageIsEditable Then%>
                                 <td bgcolor=#e4e9ec nowrap>&nbsp;</td>
                              <%End If%>
                              <td nowrap></td>
                              <td class="form_item"></td>
                              <td class="form_item"></td>
                              <td class="form_item"></td>
                              <td class="form_item"></td>
                              <td class="form_item"></td>
                              <td class="form_item"></td>
                              <td align="center"  class="form_item"></td>
                           </tr>
                        <%End If%>
                        <input name="pv_id" type="hidden" value="<%=parPv_id%>">
                        <input name="rtag_id" type="hidden" value="<%=parRtag_id%>">
                     </form>
                  </table>
               <%End If%>
               <%If retVal <> 0 Then Response.write enumMSSQL_ERROR%>
            <%End If%>
<!-- DEVI-050133 Although it would seem to the human eye that the following row and table closing tags are needed, -->
<!--             they do in fact cause the page to be rendered incorrectly. Hence they are commented out for now   -->
<!--             until the true cause of the mis-rendering can be ascertained.                                    -->
<!--     </tr> -->
<!--  </table> -->
   </fieldset>
   <br>
<!-- DEPENDENCY ISSUES (NOT FOR PATCHES!) ------------------------------------------------------------------------------------------------------->

   <%If IsNull(pkgInfoHash.Item ("is_patch")) Then%>
      <fieldset class="fset"><legend class="body_colb"><img src="images/s_bugs.gif" width="21" height="18" border="0" hspace="4" align='absmiddle'>Dependency Issues</legend>
         <table width="100%" border="0" cellspacing="1" cellpadding="2" class=stdGrey>

            <%
            If  Request("ShowIssues") <> "" Then
                retVal = Get_Package_Issues ( parPv_id, SQLstr, NULL, NULL, NULL )
            Else
                retVal = 0
                %>
                <tr>
                    <td>
                        <span class='pointer txt_linked' onClick="window.location.href=window.location.href+'&ShowIssues=1'">Show Issues of Dependent Packages</span>
                    </td>
                </tr>
                <%
            End If
            If (retVal > 0) Then
               retVal = Get_Dependency_CQ_Issues ( SQLstr, rsCQ, depIssDict, issArr )
               If retVal = 0 Then%>
                  <%
                  currG1 = 0
                  G1_template = _
                  "<tr>"&_
                  "  <td colspan='7'><img src='images/spacer.gif' width='2' height='2'></td>"&_
                  "</tr>"&_
                  "<tr>"&_
                  "  <td colspan='7' bgcolor=#e4e9ec class='form_item'>/*DEP_NAME_VERSION*//*REASONS*/</td>"&_
                  "</tr>"
                  Set rsDepIss = OraDatabase.DbCreateDynaset( SQL_Dependency_Issues( parPv_id ), cint(0))
                  %>
                  <%If ((NOT rsDepIss.BOF) AND (NOT rsDepIss.EOF)) Then%>
                     <%While ((NOT rsDepIss.BOF) AND (NOT rsDepIss.EOF))%>
                        <%
                        iss_db_id = Cstr(rsDepIss("iss_db") &"."& rsDepIss("iss_id"))
                        G1_style = Replace(G1_template, "/*DEP_NAME_VERSION*/", "<SPAN class='envolPkg'><b>"& rsDepIss("pkg_name") &" "& rsDepIss("pkg_version") &"</b></SPAN>")
                        If IsNull(rsDepIss("iss_id")) Then
                           If IsNull(rsDepIss("reasons")) Then
                              G1_style = Replace(G1_style, "/*REASONS*/", "<br>Reason for this version is not specified.")
                           Else
                              G1_style = Replace(G1_style, "/*REASONS*/", "<br>"& NewLine_To_BR ( To_HTML ( rsDepIss("reasons") ) ) )
                           End If
                        Else
                           If IsNull(rsDepIss("reasons")) Then
                              G1_style = Replace(G1_style, "/*REASONS*/", "")
                           Else
                              G1_style = Replace(G1_style, "/*REASONS*/", "<br>"& NewLine_To_BR ( To_HTML ( rsDepIss("reasons") ) ) )
                           End If
                        End If

                        Call Group_By ( rsDepIss("pv_id"), G1_style, currG1 )
                        If NOT IsNull(rsDepIss("iss_id")) Then
                           If rsDepIss("pv_id") <> currG1 Then
                              currG1 = rsDepIss("pv_id")%>
                              <thead>
                                 <th width="1%" align="center"></th>
                                 <th width="1%" align="center">Fixed</th>
                                 <th width="1%" >IssueId</th>
                                 <th width="1%" >Issue DB</th>
                                 <th width="100%">Summary</th>
                                 <th width="1%" >IssueType</th>
                                 <th width="1%" >Priority</th>
                              </thead>
                           <%End If%>
                           <tr>
                              <td bgcolor=#e4e9ec></td>
                              <td align="center" nowrap>
                                 <%If CInt(rsDepIss("iss_state")) = enumISSUES_STATE_FIXED Then%>
                                    <img src="images/i_tick_black.gif" width="7" height="7" vspace="2">
                                 <%Else%>
                                    <img src="images/spacer.gif" width="7" height="7" vspace="2">
                                 <%End If%>
                              </td>
                              <td nowrap class="form_item"><span class='pointer txt_linked' onClick="MM_openVixIFrame('_wform_issues_details.asp?iss_db=<%=asDepIss( iss_db_id, enumLoc_iss_db )%>&iss_id=<%=asDepIss( iss_db_id, enumLoc_iss_id )%>','Issue Details')" class="txt_linked"><%=asDepIss( iss_db_id, enumLoc_iss_num )%></span></td>
                              <td class="form_item">
                                    <%If CInt(asDepIss( iss_db_id, enumLoc_iss_db )) = enumCLEARQUEST_DEVI_ID Then%>
                                        DEVI
                                    <%Else%>
                                        UNKNOWN
                                    <%End If%></td>
                              <td class="form_item"><%=asDepIss( iss_db_id, enumLoc_summary)%></td>
                              <td nowrap  class="form_item"><%=asDepIss( iss_db_id, enumLoc_issue_type)%></td>
                              <td nowrap  class="form_item"><%=asDepIss( iss_db_id, enumLoc_priority)%></td>
                           </tr>
                        <%End If%>
                        <%rsDepIss.MoveNext
                     WEnd
                     rsDepIss.Close()
                     Set rsDepIss = nothing%>
                  <%Else%>
                     <tr>
                        <td nowrap></td>
                        <td></td>
                        <td></td>
                        <td></td>
                        <td></td>
                        <td></td>
                        <td></td>
                     </tr>
                  <%End If%>
               <%End If%>
               <%If retVal <> 0 Then Response.write enumMSSQL_ERROR%>
            <%End If%>
         </table>
      </fieldset>
      <br>
   <%End If%>
<!-- UNIT TESTS --------------------------------------------------------------------------------------------------------------------->
   <%
   Dim testCheckMSG, testCheckMSG_ID, testCheckNote, testCheckTestsFound
   Call CheckUnitTestsState ( parPv_id, testCheckMSG, testCheckMSG_ID, testCheckNote, testCheckTestsFound  )
   Set rsQry = OraDatabase.DbCreateDynaset( SQL_Unit_Tests ( parPv_id ), cint(0))
   %>
   <fieldset class="fset">
      <legend class="body_colb"><img src="images/i_unit_test.gif" width="18" height="25" hspace="4" border="0" align='absmiddle' alt="">Unit Tests
      <%If testCheckMSG_ID = 0 AND (pkgInfoHash.Item("dlocked") <> "Y") Then%>
         &nbsp;&nbsp;<%=testCheckMSG%>
      <%End If%></legend>
      <div style="display: block;float: right;margin-top: -20px;background-color: #FFF;padding: 0 5px;">
           <%If ( scriptName = "fixed_issues.asp" ) Then%>
              <%If objAccessControl.UserLogedIn AND (pageIsEditable OR (pkgInfoHash.Item("dlocked") = "Y")) Then%>
                 <span class='pointer txt_linked' onClick="MM_openVixIFrame('_wform_unit_test.asp?pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>','Add Unit Test')" class="txt_linked">New Test<img src="images/i_new.gif" width="13" height="13" hspace="2" border="0" align='absmiddle' alt="Add new test."></span>
              <%End If%>
              <%If (NOT testCheckTestsFound) AND (testCheckMSG_ID = 0)  Then%>
                 <a href='_not_done_unit_test.asp?pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>&notdone=Y' class='txt_linked'>Click here if Not Done!<img src="images/i_new.gif" width="13" height="13" hspace="2" border="0" align='absmiddle' alt="Add new test."></a>
              <%End If%>
           <%End If%>
      </div>
      <a name="UNIT_TESTS"></a>
      <%If (NOT testCheckTestsFound) AND (testCheckMSG_ID = -1) Then%>
         <table width="100%" border="0" cellspacing="1" cellpadding="2">
            <tr>
               <td class="form_item">
                  <%Call DisplayInfo ( "UNIT_TEST_NOT_DONE", 300 )%>
                  <span class="rep_small">Last Modified: <%=testCheckMSG%></span><br>
                  <%=NewLine_To_BR( To_HTML ( testCheckNote ) )%>
               </td>
            </tr>
         </table>
      <%End If%>

      <table width="100%" border="0" cellspacing="1" cellpadding="2" class='stdGrey'>
         <form name="review" method="get" action="_update_unit_test_accepted_state.asp">
            <thead>
               <th width="1%" nowrap valign="middle">Test Type</th>
               <th width="100%" nowrap valign="middle">Test Summary</th>
               <th width="1%" nowrap align="center" valign="middle">Test<br>Completed</th>
               <th width="1%" nowrap align="center" valign="middle">Passed<br># / Total</th>
               <th width="1%" nowrap align="center" valign="middle">Results</th>
               <th width="1%" nowrap align="center" valign="middle">Accepted</th>
               <th width="1%" nowrap align="center" valign="middle">Review<br>Completed</th>
               <th width="1%" nowrap valign="middle">Comments /<br>Issue#</th>
               <th width="1%" ></th>
            </thead>
            <%
               Dim ShowApply: ShowApply = FALSE
               While ((NOT rsQry.BOF) AND (NOT rsQry.EOF) )%>
               <tr>
                  <%If NOT pageIsEditable Then%>
                     <%If NOT IsNull(rsQry("test_id")) AND ( scriptName = "fixed_issues.asp") Then %>
                        <td nowrap   valign="top"><span class='pointer txt_linked' onClick="MM_openVixIFrame('_wform_update_unit_test.asp?test_id=<%=rsQry("test_id")%>&pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>','Update Unit Test')" class="txt_linked"><img src="images/i_test.gif" width="16" height="16" hspace="3" align='absmiddle' border="0"><%=rsQry("test_type_name")%></span></td>
                     <%Else %>
                        <td nowrap   valign="top"><img src="images/i_test.gif" width="16" height="16" hspace="3" align='absmiddle'><%=rsQry("test_type_name")%></td>
                     <%End If%>
                  <%Else %>
                     <td nowrap   valign="top"><span class='pointer txt_linked' onClick="MM_openVixIFrame('<%If Not IsNull(rsQry("test_id")) Then%>_wform_update_unit_test.asp<%Else%>_wform_unit_test.asp<%End If%>?test_id=<%=rsQry("test_id")%>&pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>&test_type_id=<%=rsQry("test_type_id")%>','Update Unit Test')" class="txt_linked"><img src="images/i_test.gif" width="16" height="16" hspace="3" align='absmiddle' border="0"><%=rsQry("test_type_name")%></span></td>
                  <%End If %>
                  <%If rsQry("test_type_id") <> CStr(enumTEST_TYPE_AUTOBUILD_UTF) Then %>
                  <td valign="top"><%=NewLine_To_BR( To_HTML( rsQry("test_summary") ))%></td>
                  <td nowrap   valign="top"><%If ( NOT IsNull(rsQry("tester")) ) Then%><%=DisplayDate ( rsQry("completion_date") )%><br>by <%=emailField(rsQry("tester"),rsQry("tester_email"))%><%End If%></td>
                  <td nowrap   valign="top" align="center"><%=rsQry("numof_test")%></td>

                  <%If CInt(rsQry("test_type_id")) = enumTEST_TYPE_AUTOMATIC Then %>
                     <td align="center" valign="top">
                        <%If NOT IsNull( rsQry("results_url") ) Then%>
                           <%If InStr( rsQry("results_url"), "http://" ) = 1 Then%>
                              <a href="<%=rsQry("results_url")%>" target="_blank"><img src="images/i_results.gif" width="15" height="16" border="0" alt="View test results"></a>
                           <%Else%>
                              <a href="<%=dpkg_archiveURL & pkgInfoHash.Item ("pkg_name") &"/"& pkgInfoHash.Item ("pkg_version") & rsQry("results_url")%>" target="_blank"><img src="images/i_results.gif" width="15" height="16" border="0" alt="View test results"></a>
                           <%End If%>
                        <%End If%>
                     </td>
                  <% Else %>
                     <td align="center" valign="top">
                        <%If NOT IsNull( rsQry("results_attachment_name") ) Then%>
                            <a href="<%=TEMP_FOLDER &"/"& pkgInfoHash.Item ("pkg_name") &"/"& pkgInfoHash.Item ("pkg_version") &"/"& rsQry("results_attachment_name")%>" target="_blank"><img src="images/i_results.gif" width="15" height="16" border="0" alt="View test results"></a>
                        <%End If%>
                     </td>
                  <%End If%>

                  <td nowrap bgcolor=#e4e9ec class="sublbox_txt" valign="top" align="center">
                        <%=FormatAccepted(rsQry("test_accepted"), rsQry("test_id"))%>
                        <%ShowApply = true%>
                  </td>
                  <td nowrap   valign="top"><%If NOT IsNull(rsQry("reviewee")) Then%><%=DisplayDate ( rsQry("acceptance_date") )%><br>by <%=emailField(rsQry("reviewee"),rsQry("reviewee_email"))%><%End If%></td>
                  <td valign="top"><%=NewLine_To_BR( To_HTML( rsQry("review_comments") ))%></td>
                  <%Else%>
                    <td colspan=7><a class=txt_linked href='unit_test_log.asp?pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>'>See Unit Tests tab</a></td>
                  <%End If%>
                  <%
                  If (  (    pageIsEditable _
                         AND (scriptName = "fixed_issues.asp") _
                         AND (IsNull(rsQry("test_accepted")) OR (rsQry("test_accepted") = enumUNIT_TEST_NOTACCEPTED))) _
                      OR _
                        (    objAccessControl.UserLogedIn _
                         AND (scriptName = "fixed_issues.asp") _
                         AND (pkgInfoHash.Item("dlocked") = "Y") _
                         AND (IsNull(rsQry("test_accepted")) OR (rsQry("test_accepted") = enumUNIT_TEST_NOTACCEPTED)) _
                         AND (rsQry("test_type_id") <> CStr(enumTEST_TYPE_AUTOBUILD_UTF))) ) Then
                  %>
                     <td valign="top"><%If NOT IsNull(rsQry("test_id")) Then%><span class=pointer data-href="_remove_unit_test.asp?test_id=<%=rsQry("test_id")%>&pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>" onClick="return vixConfirmDelete('this unit test');"><img src="images/i_delete.gif" alt="Remove this test." width="13" height="12" hspace="3" border="0"></span><%End If%></td>
                  <% Else %>
                     <td valign="top"></td>
                  <%End If%>
               </tr>
               <%
               rsQry.MoveNext
            WEnd
            %>
            <tr class=blank>
               <td></td>
               <td></td>
               <td></td>
               <td></td>
               <td></td>
               <td align="center">
                  <%If ShowApply AND (testCheckTestsFound) AND (testCheckMSG_ID = 0) AND ( scriptName = "fixed_issues.asp" ) AND pageIsEditable Then%>
                     <input type="submit" name="Apply" value="Apply" class="form_btn">
                  <%End If%>
               </td>
               <td></td>
               <td></td>
               <td></td>
            </tr>
            <input name="pv_id" type="hidden" value="<%=parPv_id%>">
            <input name="rtag_id" type="hidden" value="<%=parRtag_id%>">
         </form>
      </table>
   </fieldset>
    <br>
<!-- CODE REVIEW ------------------------------------------------------------------------------------------------------------------->
   <%Set rsQry = OraDatabase.DbCreateDynaset( SQL_CodeReview ( parPv_id ), cint(0))%>
   <fieldset class="fset">
      <legend class="body_colb"><img src='images/s_code_review.gif' width='21' height='23' hspace='4' border='0' align='absmiddle'>Code Review</legend>
      <div style="display: block;float: right;margin-top: -20px;background-color: #FFF;padding: 0 5px;">
           <%If ( scriptName = "fixed_issues.asp" ) Then%>
              <%If objAccessControl.UserLogedIn AND (pageIsEditable OR (pkgInfoHash.Item("dlocked") = "Y")) Then%>
                 <span class='pointer txt_linked' onClick="MM_openBrWindow('_wform_update_code_review.asp?pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>','CodeReviewEdit','scrollbars=yes,status=yes,resizable=yes,width=950,height='+ ( screen.height - 100 ) +',top=0,left=0')" class="txt_linked">Edit<img src="images/i_edit.gif" width="12" height="12" hspace="2" border="0" align='absmiddle'></span>
              <%End If%>
              <%If rsQry.RecordCount > 0 Then%>
                 <%If NOT IsNull(rsQry("date_of_review")) Then%>
                    &nbsp;
                    <span class='pointer txt_linked' onClick="MM_openBrWindow('_wform_code_review.asp?pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>','CodeReviewView','scrollbars=yes,status=yes,resizable=yes,width=950,height='+ ( screen.height - 100 ) +',top=0,left=0')" class="txt_linked">View<img src="images/i_open.gif" width="12" height="12" hspace="2" border="0" align='absmiddle'></span>
                 <%End If%>
              <%End If%>
           <%End If%>
      </div>
      <a name="CODE_REVIEW" id="CODE_REVIEW"></a>
      <%If ((NOT rsQry.BOF) AND (NOT rsQry.EOF)) Then%>
         <%If NOT IsNull(rsQry("date_of_review")) Then%>
            <table width="100%"  border="0" cellspacing="1" cellpadding="4" class=lhsGrey>
               <tr>
                  <td>Date of Review</td>
                  <td width='1%' nowrap><%=DisplayDate ( rsQry("date_of_review") )%>&nbsp;&nbsp;&nbsp;</td>
                  <td width='1%' align="right" nowrap class="hdr">&nbsp;&nbsp;&nbsp;Time Spent:</td>
                  <td><%=rsQry("time_spent")%> hrs </td>
               </tr>
               <tr>
                  <td>Reason for Review</td>
                  <td colspan="3"  ><%=NewLine_To_BR( To_HTML( rsQry("review_reason") ))%></td>
               </tr>
               <tr>
                  <td>Review Results </td>
                  <td colspan="3"  >
                  <%=DecodeOverallResult( rsQry("review_results") )%>
                  </td>
               </tr>
               <tr>
                  <td>Issues Raised </td>
                  <td colspan="3"  ><%=NewLine_To_BR( To_HTML( rsQry("issues_raised") ))%></td>
               </tr>
            </table>
         <%Else%>
            <table width="100%" border="0" cellspacing="1" cellpadding="2">
               <tr>
                  <td><span class='sublbox_txt'>No details found.</span></td>
               </tr>
            </table>
         <%End If%>
      <%Else%>
         <table width="100%" border="0" cellspacing="1" cellpadding="2">
            <tr>
               <td><span class='sublbox_txt'>No details found.</span></td>
            </tr>
         </table>
      <%End If%>

      <!-- Code Review URL section for this version -->
      <%Call GetCodeReviewURLs( parPv_id, rsCodeReviewURL )%>
      <table width="100%" border="0" cellspacing="1" cellpadding="2" class=stdGrey>
         <tr>
            <td align="left" valign="top" class="body_colb">Code Review URL for this version</td>
            <td align="right" valign="top" <%If NOT IsNull(rsCodeReviewURL("url")) Then Response.Write("colspan='5'")%>>
               <%If (scriptName = "fixed_issues.asp") AND objAccessControl.UserLogedIn AND (pageIsEditable OR (pkgInfoHash.Item("dlocked") = "Y")) Then%>
                  <span class='pointer txt_linked' onclick="MM_openVixIFrame('_wform_edit_code_review_url.asp?pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>','Edit Code Review URL')" class="txt_linked">New<img src="images/i_new.gif" width="13" height="13" hspace="2" border="0" align='absmiddle'></span>
               <%End If%>
            </td>
         </tr>
         <%If IsNull(rsCodeReviewURL("full_url")) Then %>
            <tr>
               <td width="100%"  colspan="2">
                  <span class='sublbox_txt'>No details found.</span>
               </td>
            </tr>
         <%Else%>
            <tr>
               <td bgcolor=#e4e9ec class="form_field">URL</td>
               <td bgcolor=#e4e9ec width="25%" class="form_field">Reason for Review</td>
               <td bgcolor=#e4e9ec nowrap width="1%" class="form_field">Date of Review</td>
               <td bgcolor=#e4e9ec nowrap width="1%" class="form_field">Last Modified</td>
               <td bgcolor=#e4e9ec nowrap width="18px" class="form_field"></td>
               <td bgcolor=#e4e9ec nowrap width="18px" class="form_field"></td>
            </tr>
            <%If ((NOT rsCodeReviewURL.BOF) AND (NOT rsCodeReviewURL.EOF)) Then
               While ((NOT rsCodeReviewURL.BOF) AND (NOT rsCodeReviewURL.EOF))%>
                  <tr>
                     <%If (Left(rsCodeReviewURL("url"),4) = "http") Then%>
                        <td valign="top"><a href="<%=rsCodeReviewURL("url")%>" target="_blank" class="txt_linked"><%=rsCodeReviewURL("url")%></a></td>
                     <%Else%>
                        <td valign="top"><a href="<%=rsCodeReviewURL("full_url")%>" target="_blank" class="txt_linked"><%=rsCodeReviewURL("full_url")%></a></td>
                     <%End If%>
                     <td valign="top"><%=rsCodeReviewURL("reason")%></td>
                     <td valign="top"><%=DisplayDate(rsCodeReviewURL("date_of_review"))%></td>
                     <td valign="top"><%=DisplayDate(rsCodeReviewURL("last_modified"))%></td>
                     <%If (scriptName = "fixed_issues.asp") AND objAccessControl.UserLogedIn AND (pageIsEditable OR (pkgInfoHash.Item("dlocked") = "Y")) Then%>
                        <td valign="top"><span class='pointer txt_linked' onclick="MM_openVixIFrame('_wform_edit_code_review_url.asp?pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>&cr_id=<%=rsCodeReviewURL("cr_id")%>','Edit Code Review URL')" class="txt_linked"><img src="images/i_edit.gif" width="12" height="12" hspace="2" border="0" align='absmiddle' alt="Edit this code review URL"></span></td>
                        <td valign="top"><span calss=pointer data-href="_remove_code_review_url.asp?cr_id=<%=rsCodeReviewURL("cr_id")%>&pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>" onclick="return vixConfirmDelete('this code review URL from Release Manager');"><img src="images/i_delete.gif" width="13" height="12" hspace="2" border="0" alt="Delete this code review URL" align='absmiddle'></span></td>
                     <%Else%>
                        <td valign="top"></td>
                        <td valign="top"></td>
                     <%End If%>
                  </tr>
                  <%rsCodeReviewURL.MoveNext
               WEnd
            Else%>
               <tr>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td></td>
               </tr>
            <%End If
         End If%>
      </table>

      <!-- Code Review URL section for last non-ripple build -->
      <%If pkgInfoHash.Item ("comments") = "Rippled Build." Then
         Call LastPvId(pkgInfoHash.Item ("pv_id"))
         While rsQry("comments") = "Rippled Build."
            Call LastPvId(rsQry("last_pv_id"))
         Wend
         Dim sOldPkgVersion
         Dim oldDlocked
         Call Get_Pkg_Short_Info ( rsQry("pv_id"), NULL, NULL, sOldPkgVersion, NULL, NULL, oldDlocked )
         Call GetCodeReviewURLs( rsQry("pv_id"), rsCodeReviewURL )
         %>
         <table width="100%" border="0" cellspacing="1" cellpadding="2">
            <tr>
               <td align="left" valign="top" class="body_colb" <%If NOT IsNull(rsCodeReviewURL("url")) Then Response.Write("colspan='6'")%>>Code Review URL for last non-ripple build (<a class="lbl_link" href="fixed_issues.asp?pv_id=<%=rsQry("pv_id")%>"><%=sOldPkgVersion%></a>)</td>
            </tr>
            <%If IsNull(rsCodeReviewURL("url")) Then%>
               <tr>
                  <td width="100%"  colspan="2">
                     <span class='sublbox_txt'>No details found.</span>
                  </td>
               </tr>
            <%Else%>
               <tr>
                  <td bgcolor=#e4e9ec class="form_field">URL</td>
                  <td bgcolor=#e4e9ec width="30%" class="form_field">Reason for Review</td>
                  <td bgcolor=#e4e9ec nowrap width="1%" class="form_field">Date of Review</td>
                  <td bgcolor=#e4e9ec nowrap width="1%" class="form_field">Last Modified</td>
                  <td bgcolor=#e4e9ec nowrap width="18px" class="form_field"></td>
                  <td bgcolor=#e4e9ec nowrap width="18px" class="form_field"></td>
               </tr>
               <%If ((NOT rsCodeReviewURL.BOF) AND (NOT rsCodeReviewURL.EOF)) Then
                  While ((NOT rsCodeReviewURL.BOF) AND (NOT rsCodeReviewURL.EOF))%>
                     <tr>
                        <%If (Left(rsCodeReviewURL("url"),4) = "http") Then%>
                           <td valign="top"><a href="<%=rsCodeReviewURL("url")%>" target="_blank" class="txt_linked"><%=rsCodeReviewURL("url")%></a></td>
                        <%Else%>
                           <td valign="top"><a href="<%=rsCodeReviewURL("full_url")%>" target="_blank" class="txt_linked"><%=rsCodeReviewURL("full_url")%></a></td>
                        <%End If%>
                        <td valign="top"><%=rsCodeReviewURL("reason")%></td>
                        <td valign="top"><%=rsCodeReviewURL("date_of_review")%></td>
                        <td valign="top"><%=rsCodeReviewURL("last_modified")%></td>
                        <%If (scriptName = "fixed_issues.asp") AND objAccessControl.UserLogedIn AND (pageIsEditable OR (oldDlocked = "Y")) Then%>
                           <td valign="top"><span class='pointer txt_linked' onclick="MM_openVixIFrame('_wform_edit_code_review_url.asp?pv_id=<%=rsCodeReviewURL("pv_id")%>&rtag_id=<%=parRtag_id%>&cr_id=<%=rsCodeReviewURL("cr_id")%>','Edit Code Review URL')" class="txt_linked"><img src="images/i_edit.gif" width="12" height="12" hspace="2" border="0" align='absmiddle' alt="Edit this code review URL"></span></td>
                           <td valign="top"><span class=pointer data-href="_remove_code_review_url.asp?cr_id=<%=rsCodeReviewURL("cr_id")%>&pv_id=<%=rsCodeReviewURL("pv_id")%>&rtag_id=<%=parRtag_id%>" onclick="return vixConfirmDelete('this code review URL from Release Manager');"><img src="images/i_delete.gif" width="13" height="12" hspace="2" border="0" alt="Delete this code review URL" align='absmiddle'></span></td>
                        <%Else%>
                           <td valign="top"></td>
                           <td valign="top"></td>
                        <%End If%>
                     </tr>
                     <%rsCodeReviewURL.MoveNext
                  WEnd
               Else%>
                  <tr>
                     <td></td>
                     <td></td>
                     <td></td>
                     <td></td>
                     <td></td>
                     <td></td>
                  </tr>
               <%End If
            End If%>
         </table>
      <%End If%>

   </fieldset>
   <br>
<!-- ADDITIONAL NOTES ------------------------------------------------------------------------------------------------------------------->
   <fieldset class="fset">
      <legend class="body_colb"><img src="images/i_additional_notes.gif" width="26" height="20" hspace="4" border="0" align='absmiddle' alt="">Additional Notes</legend>
      <div style="display: block;float: right;margin-top: -20px;background-color: #FFF;padding: 0 5px;">
       <%If pageIsEditable Then%>
          <span class='pointer txt_linked' onClick="MM_openVixIFrame('_wform_additional_note.asp?pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>','Additional Notes')" class="txt_linked">New Note<img src="images/i_new.gif" width="13" height="13" hspace="2" border="0" align='absmiddle' title="Add new note."></span>
       <%End If%>
      </div>
      <a name="ADDITIONAL_NOTES"></a>
      <table width="100%" border="0" cellspacing="1" cellpadding="2" class=stdGrey>
         <%Set rsQry = OraDatabase.DbCreateDynaset( SQL_Additional_Notes ( parPv_id ), cint(0))%>
         <%If rsQry.RecordCount < 1 Then%>
            <tr>
               <td>&nbsp;</td>
            </tr>
         <%End If%>
         <%While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
            <tr class=hdr>
               <td width="100%" nowrap>
                  <%If pageIsEditable Then%>
                     <span onClick="MM_openVixIFrame('_wform_update_additional_note.asp?note_id=<%=rsQry("note_id")%>&pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>','Update Note')" class="pointer"><img src="images/i_edit.gif" alt="Edit" width="12" height="12" hspace="3" vspace="3" border="0" align='absmiddle'><%=To_HTML (rsQry("note_title"))%></span>
                  <%Else%>
                     <%=To_HTML (rsQry("note_title"))%>
                  <%End If%>
               </td>
               <td width="1%">
                  <%If pageIsEditable Then%>
                     <span class=pointer data-href="_remove_additional_note.asp?note_id=<%=rsQry("note_id")%>&pv_id=<%=parPv_id%>&rtag_id=<%=parRtag_id%>" onClick="return vixConfirmDelete('this note');"><img src="images/i_delete.gif" alt="Remove this note." width="13" height="12" hspace="3" border="0"></span>
                  <%End If%>
               </td>
            </tr>
            <tr>
               <td colspan="2">
                  <%=NewLine_To_BR( To_HTML ( rsQry("note_body") ) )%><br>
                  <span class="rep_small">Last Modified: <%=rsQry("lastmod")%></span>
               </td>
            </tr>
            <tr>
               <td colspan="2"><img src='images/spacer.gif' width='2' height='2'></td>
            </tr>
            <%rsQry.MoveNext
         WEnd%>
      </table>
   </fieldset>
   <br>
<%End If%>