Subversion Repositories DevTools

Rev

Rev 6646 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
'   diffmerge.asp
'=====================================================
%>
<%
Option explicit
' Good idea to set when using redirect
Response.Expires = 0    ' always load the page, dont store
%>

<%
'To enable the script timeout to 5 mins
Server.ScriptTimeout=600
%>
<!--#include file="common/config.asp"-->
<!--#include file="common/globals.asp"-->
<!--#include file="common/formating.asp"-->
<!--#include file="common/common_subs.asp"-->
<!--#include file="common/common_dbedit.asp"-->
<!--#include file="common/_form_window_common.asp"-->
<!--#include file="common/_rtree_common.asp"-->
<%
' Set rfile parameter. This is a return page after Login
'Call objPMod.StoreParameter ( "rfile", "rtree.asp" )
'objPMod.PersistInQryString("proj_id")
'------------ ACCESS CONTROL ------------------
%>

<!--#include file="_access_control_general.asp"-->
<%
'------------ Variable Definition -------------
Dim rsQry
Dim objRelCollectorA
Dim objRelCollectorB
Dim parRtagA
Dim parRtagB
Dim parSBOMA
Dim parSBOMB
Dim dDiffFilter
Dim colorA, colorB, ChangeTypeIcon
Dim btnMerge, btnRemove
Dim rowId
Dim email
Dim FSO
Dim NewTextFile
Dim pkgA, pkgB, pkgname, delimiter, rsQryA, rsQryB, rsQryCommentsA, rsQryCommentsB, sqlstrA, counterA, sqlstrB, counterB
Dim SSsql, retVal, rsCQ, DEVIiss
Dim a, b, c, d, pkgversion, errormsg, source_change


'------------ Constants Declaration -----------
Const LIMG_UPDATED = "<img src='images/i_updated.gif' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Updated'>"
Const LIMG_ADDED = "<img src='images/i_added.gif' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Added'>"
Const LIMG_REMOVED = "<img src='images/i_removed.gif' width='11' height='11' border='0' hspace='5' align='absmiddle' title='Removed'>"
Const LIMG_FILTER_ON = "<img src='images/i_data_table.gif' border='0' align='absmiddle' hspace='0' title='Filter in use.'>"
Const LIMG_FILTER_OFF = "<img src='images/i_data_table_off.gif' border='0' align='absmiddle' hspace='0' title='Filter not in use.'>"
Const LIMG_DROP_DOWN_ARROW = "<img src='images/i_drop_down_arrow.gif' width='5' height='15' hspace='1' border='0' align='absmiddle'>"
Const LCOLOR_NOT_CHANGED = "#F5F5F5"
Const LCOLOR_CHANGED = "#d2f7c9"
Const LCOLOR_BLANK = "#FFFFFF"
Const LIMG_MERGE = "<img src='images/bt_move_all_right.gif' title='Click to merge.' border='0'>"
Const LIMG_MERGE_WARN = "<img src='images/bt_move_warn_right.gif' title='Right hand side version is newer.' border='0'>"
Const LIMG_REMOVE = "<img src='images/bt_remove.gif' title='Remove this version from release.' border='0'>"
Const LIMG_UNDO = "<img src='images/bt_undo.gif' title='Undo merge/remove.' border='0'>"
'------------ Variable Init -------------------
Set rsCQ = Server.CreateObject("ADODB.Recordset")
parRtagA = Request("rtagA")
parRtagB = Request("rtagB")
parSBOMA = Request("sbomA")
parSBOMB = Request("sbomB")
Set objRelCollectorA = CreateObject("Scripting.Dictionary")
Set objRelCollectorB = CreateObject("Scripting.Dictionary")
Set dDiffFilter = CreateObject("Scripting.Dictionary")

'----------------------------------------------
If Request("btn") = "Mail Me Report" Then
        email = true
End If
%>
<%
'--------------------------------------------------------------------------------------------------------------------------
Sub GetDiffFilterValues ( outDepFilter )
        Dim FilterVal, aFilterValues
        
        If Request.Cookies(enum_RELMGR_COOKIE_DOMAIN)(COOKIE_HIDE_DIFF_FILTER) <> "" Then       
                aFilterValues = Split( Replace( Request.Cookies(enum_RELMGR_COOKIE_DOMAIN)(COOKIE_HIDE_DIFF_FILTER), " ", ""), ",") 
                
                For Each FilterVal In aFilterValues
                        outDepFilter.Item (CStr( FilterVal )) = ""
                Next
                
        End If
        
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub GetFixedIssues(pv_id)
        Set sqlstrA = OraDatabase.DbCreateDynaset("SELECT iss_db, iss_id, iss_state, notes FROM CQ_ISSUES WHERE pv_id="& pv_id &"  AND iss_state = "& enumISSUES_STATE_FIXED, cint(0))                                           
                
                If sqlstrA.RecordCount <> 0 Then
                        NewTextFile.WriteLine()
                        NewTextFile.WriteLine("<blockquote><blockquote>Fixed Issues:</blockquote></blockquote>")
                End If
                
                For counterA=1 to sqlstrA.RecordCount
                        DEVIiss = "-1"

                        If CInt(sqlstrA("iss_db")) = CInt(enumCLEARQUEST_DEVI_ID) Then
                                DEVIiss = DEVIiss &","& sqlstrA("iss_id")
                        End If
                        
                        SSsql = ReadFile( QUERIES_PATH & "\cq_issues.sql" )
                        SSsql = Replace( SSsql, "/*enumCLEARQUEST_DEVI_ID*/", enumCLEARQUEST_DEVI_ID)
                        SSsql = Replace( SSsql, "/*DEVIiss*/", DEVIiss)
                        retVal = Get_CQ_Issues ( SSsql, rsCQ )

                        If rsCQ("iss_num") <> "" Then
                                NewTextFile.Write("<blockquote><blockquote><blockquote>"&rsCQ("iss_num")&": ")
                End If
                        
                If rsCQ("summary") <> "" Then
                                NewTextFile.WriteLine(rsCQ("summary")&"</blockquote></blockquote></blockquote>")                                                
                        End If
                                                                
                        sqlstrA.MoveNext
                Next
                        sqlstrA.Close()         
                        

End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub GetDependencies(pv_id_a, pv_id_b)
        Set sqlstrA = OraDatabase.DbCreateDynaset("select * from package_dependencies where pv_id = "& pv_id_b &" and dpv_id NOT IN (SELECT dpv_id from package_dependencies where pv_id ="& pv_id_a &" )", cint(0))    
                If sqlstrA.RecordCount <> 0 Then
                        NewTextFile.WriteLine()
                        NewTextFile.WriteLine("<b>Dependencies Changed:</b>")
                End If
                
                For counterA=1 to sqlstrA.RecordCount
                        Call dependencyComments(sqlstrA("dpv_id"))
                
                        sqlstrA.MoveNext                
                Next            
                        sqlstrA.Close()                          

End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub dependencyComments(pv_id)
        Set sqlstrB = OraDatabase.DbCreateDynaset("SELECT * FROM PACKAGE_VERSIONS pv, PACKAGES pkg WHERE pkg.pkg_id = pv.pkg_id AND PV_ID ="&pv_id, cint(0))    
                        NewTextFile.Write("<blockquote><blockquote><blockquote>"& sqlstrB("pkg_name") &" "& sqlstrB("pkg_version") &"---->"& TextToHTML(sqlstrB("comments")) &"</blockquote></blockquote></blockquote>")        
        

End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub LastPvIdA(a)
        Dim qryA
        Set qryA = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&a , cint(0))
        
        If a <> qryA("last_pv_id") Then 
                a = qryA("last_pv_id")
        Else 
                errormsg = true
        End If
        
        qryA.Close()
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub LastPvIdB(b)
        Dim qryB
        Set qryB = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&b , cint(0))
        
        If b <> qryB("last_pv_id") Then
                b = qryB("last_pv_id")
        Else
                errormsg = true 
        End If
        
        qryB.Close()
        
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub pkg_Version(pv)
        Dim qry 
        Set qry = OraDatabase.DbCreateDynaset("SELECT PKG_VERSION FROM PACKAGE_VERSIONS WHERE PV_ID="&pv , cint(0))     
        pkgversion = qry("pkg_version")
        qry.Close()
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub LastPvIdAa(a)
        Dim qryA
        Set qryA = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&a , cint(0))
        c = qryA("last_pv_id")
        qryA.Close()
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub LastPvIdBb(b)
        Dim qryB
        Set qryB = OraDatabase.DbCreateDynaset("SELECT LAST_PV_ID FROM PACKAGE_VERSIONS WHERE PV_ID="&b , cint(0))
        d = qryB("last_pv_id")  
        qryB.Close()
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub Comments(Pv_Id)
        Dim comments
        Set comments = OraDatabase.DbCreateDynaset("SELECT COMMENTS, PKG_VERSION FROM PACKAGE_VERSIONS WHERE PV_ID="&Pv_id , cint(0))

        If comments("comments") <> "Rippled Build." Then
                NewTextFile.WriteLine("<blockquote><blockquote><font color="&chr(34)&"blue"&chr(34)&">Version: "& comments("pkg_version")&"</font></blockquote></blockquote>")
                If comments("comments") <> "" Then
                        NewTextFile.WriteLine("<blockquote><blockquote>Comments: </blockquote></blockquote>")
                        NewTextFile.WriteLine("<blockquote><blockquote><blockquote>"& TextToHTML(comments("comments")) &"</blockquote></blockquote></blockquote>")
                        source_change = true
                End If  
        End If

End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub Release(pvId)
        Dim release
        Set release = OraDatabase.DbCreateDynaset("SELECT INSERT_STAMP FROM RELEASE_CONTENT WHERE PV_ID="&pvId , cint(0))

        If release("insert_stamp") <> "" Then
                NewTextFile.Write(release("insert_stamp"))
        Else
                NewTextFile.Write("Version Not Used.")
        End If                  

End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub Header() 
        NewTextFile.WriteLine("<html>")
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub Footer()
        NewTextFile.WriteLine("</html>")
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Function GetIsDiffFilterInUseIcon()
        GetIsDiffFilterInUseIcon = LIMG_FILTER_OFF & LIMG_DROP_DOWN_ARROW
        
        If dDiffFilter.Count > 0 Then
                GetIsDiffFilterInUseIcon = LIMG_FILTER_ON & LIMG_DROP_DOWN_ARROW
        End If
        
End Function
'--------------------------------------------------------------------------------------------------------------------------
Function GetIsDiffFilterChecked( nFilterId )
        
        If dDiffFilter.Exists ( CStr(nFilterId)  ) Then
                GetIsDiffFilterChecked = "checked"
        End If
        
End Function
'---------------------------------------------------------------------------------------------------------------------------
Function  Get_CQ_Issues ( SSsql, OOrsCQ )

    On Error Resume Next
    Set OOrsCQ = OraDatabase.DbCreateDynaset( SSsql, cint(0))
    Get_CQ_Issues = Err.Number
        
End Function
'--------------------------------------------------------------------------------------------------------------------------
Public Function TextToHTML ( sString )
        Dim mString
                
        If (sString = "") OR IsNull(sString) Then Exit Function
        
        mString = Server.HTMLEncode( sString )
        mString = Replace(mString, VBNewLine, "<br>")
                
        TextToHTML = mString
End Function

'--------------------------------------------------------------------------------------------------------------------------
Sub GetFormDetails ( nSourceSBOM, ByRef outobjDetails )
        Dim rsQry, query
        
        ' Exit if nSourceRtagId is empty
        If nSourceSBOM = "" Then Exit Sub 

        OraDatabase.Parameters.Add "SBOM",      nSourceSBOM,            ORAPARM_INPUT, ORATYPE_NUMBER 
        
        query = _
        " SELECT pr.PROJ_NAME ||' &gt; '|| br.BRANCH_NAME ||' &gt; '|| b.BOM_VERSION ||'.'||b.BOM_LIFECYCLE  AS LOCATION, "&_
        "        pr.PROJ_ID, b.BOM_ID, b.IS_READONLY, br.BRANCH_ID"&_
        "  FROM BRANCHES br,"&_
        "               BOMS b,"&_      
        "           DM_PROJECTS pr"&_
        " WHERE br.PROJ_ID = pr.PROJ_ID"&_
        "       AND b.BRANCH_ID = br.BRANCH_ID"&_       
        "   AND b.BOM_ID = :SBOM"
        
        Set rsQry = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT )
        
        OraDatabase.Parameters.Remove "SBOM"
        
        If rsQry.RecordCount > 0 Then
                outobjDetails.Item ("location") = rsQry("location")
                outobjDetails.Item ("official") = rsQry("IS_READONLY")
                outobjDetails.Item ("proj_id") = rsQry("proj_id")
                outobjDetails.Item ("branch_id") = rsQry("branch_id")
                outobjDetails.Item ("bom_id") = rsQry("bom_id")         
                outobjDetails.Item ("is_readonly") = rsQry("is_readonly")
        Else
                Err.Raise 8, "Sub GetFormDetails in "& SCRIPT_NAME, "Empty record set returned. nSourceSBOM="& nSourceSBOM
        End If
        
        If outobjDetails.Item ("location") = "" Then
                outobjDetails.Item ("location") = "N"
        End If
        
        rsQry.Close
        Set rsQry = Nothing
        
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub GetDiffStateIcon( nDiffState, outIcon )

        Select Case nDiffState
                Case "U"
                        outIcon  = LIMG_UPDATED         
                Case "UW"
                        outIcon  = LIMG_UPDATED                 
                Case "A"
                        outIcon = LIMG_ADDED                    
                Case "R"
                        outIcon = LIMG_REMOVED                  
                Case Else
                        outIcon = ""                    
        End Select
        
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub MergePackages ()
        Dim aFullList, aAddPkgList, aRemovePkgList, dAddPkgList, dRemovePkgList, PvId
        Dim OraParameter
        
        Set dAddPkgList = CreateObject("Scripting.Dictionary")
        Set dRemovePkgList = CreateObject("Scripting.Dictionary")
        
        '--- Get Add Packages ---
        ' Get full list of "addpkg" parameter
        aFullList = Split ( Replace( Request("addpkg"), " ", "" ), "," )
        
        
        ' Clean empty parameters
        For Each PvId In aFullList
                If PvId <> "" Then
                        dAddPkgList.Add CStr( PvId ), Empty
                End If
        Next
        
        aFullList = NULL
        aAddPkgList = dAddPkgList.Keys
        
        '--- Get Remove Packages ---
        ' Get full list of "removepkg" parameter
        aFullList = Split ( Replace( Request("removepkg"), " ", "" ), "," )
        
        ' Clean empty parameters
        For Each PvId In aFullList
                If PvId <> "" Then
                        dRemovePkgList.Add CStr( PvId ), Empty
                End If
        Next
        
        aFullList = NULL
        aRemovePkgList = dRemovePkgList.Keys
        


        '-- Add package List to release --
        OraDatabase.Parameters.Add "PV_ID",                     NULL,                           ORAPARM_INPUT, ORATYPE_NUMBER 
        OraDatabase.Parameters.Add "VIEW_ID",                   NULL,                           ORAPARM_BOTH, ORATYPE_NUMBER 
        OraDatabase.Parameters.Add "SBOM_A",                    parSBOMA,                       ORAPARM_INPUT, ORATYPE_NUMBER 
        OraDatabase.Parameters.Add "SBOM_B",                    parSBOMB,                       ORAPARM_INPUT, ORATYPE_NUMBER 
        OraDatabase.Parameters.Add "PROJB",                     objRelCollectorB.Item("proj_id"),       ORAPARM_INPUT, ORATYPE_NUMBER 
        OraDatabase.Parameters.Add "COMMENTS",                  "Merging from "& objRelCollectorA.Item("location") &" to "& objRelCollectorB.Item("location"),  ORAPARM_INPUT, ORATYPE_VARCHAR2
        OraDatabase.Parameters.Add "USER_ID",                   objAccessControl.UserId,                                ORAPARM_INPUT, ORATYPE_NUMBER 
        
        
        Set OraParameter = OraDatabase.Parameters
        
        
        On Error Resume Next
        
        
        ' Begin Database entry
        objEH.TryORA ( OraSession )
        
        OraSession.BeginTrans
        
        '-- Add Packages --
        For Each PvId In aAddPkgList
                OraParameter("PV_ID").Value = PvId
                
                
                Dim rsQry, rsQryNodeCount
                

                
                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("MergeManagerA.sql"), cint(0))
                
                'OraDatabase.Parameters.Add "OS_ID",                    rsQry("os_id"),                         ORAPARM_INPUT, ORATYPE_NUMBER 
                'OraDatabase.Parameters.Add "NODE_ID",                  rsQry("node_id"),                       ORAPARM_INPUT, ORATYPE_NUMBER           

                Set rsQryNodeCount = OraDatabase.DbCreateDynaset( "SELECT nn.NODE_NAME, nn.NODE_ID, os.OS_NAME, os.OS_ID, osc.PROD_ID, P.PKG_NAME FROM BOM_CONTENTS bc, NETWORK_NODES nn, OPERATING_SYSTEMS os, PACKAGES p, PACKAGE_VERSIONS pv, OS_CONTENTS osc WHERE bc.NODE_ID = nn.NODE_ID AND os.OS_ID = osc.OS_ID AND osc.PROD_ID = pv.PV_ID AND p.PKG_ID = pv.PKG_ID AND os.NODE_ID = nn.NODE_ID AND bc.BOM_ID ="&parSBOMB, cint(0))
                
                While ((NOT rsQryNodeCount.BOF) AND (NOT rsQryNodeCount.EOF))
                
                        If rsQryNodeCount("node_name") = rsQry("node_name_a") Then
                                If rsQryNodeCount("os_name") = rsQry("os_name_a") Then
                                        If rsQryNodeCount("pkg_name") = rsQry("pkg_name_a") Then
                                                If rsQry("change_type") = "U" OR rsQry("change_type") = "UW"  Then                                      
                                                        OraSession.BeginTrans
                                                        OraDatabase.ExecuteSQL _
                                                        "UPDATE OS_CONTENTS SET PROD_ID ="& rsQry("pv_id_a") &", PRODUCT_COMMENTS ='"& rsQry("product_comments_a") &"' WHERE OS_ID ="& rsQryNodeCount("os_id") &" AND PROD_ID ="& rsQry("pv_id_b") &" "
                                                        OraSession.CommitTrans
                                                ElseIf rsQry("change_type") = "R" Then
                                                        
                                                End If
                                        End If
                                End If
                        End If
                        
                rsQryNodeCount.MoveNext
                Wend
                

                

                'OraDatabase.ExecuteSQL _
                '"BEGIN  "&_
                '"  PK_PRODUCT_TEST.ADD_PACKAGE ( :PV_ID, :OS_ID, :NODE_ID, :SBOM_B, :USER_ID );  "&_
                '"END;" 
                
                rsQry.Close
                Set rsQry = nothing 
                
                rsQryNodeCount.Close
                Set rsQryNodeCount = nothing
                
                'OraDatabase.Parameters.Remove "OS_ID"
                'OraDatabase.Parameters.Remove "NODE_ID"
                
        Next
        
        '-- Remove Packages --
        For Each PvId In aRemovePkgList         
                OraParameter("PV_ID").Value = PvId
                
                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("MergeManagerB.sql"), cint(0))
                
                
                                                                
                OraSession.BeginTrans                   
                
                OraDatabase.ExecuteSQL _
                "DELETE FROM OS_CONTENTS WHERE PROD_ID ="& rsQry("pv_id_b") &" AND OS_ID ="& rsQry("os_id_b") &""
                
                OraSession.CommitTrans
        Next
        
                rsQry.Close
                Set rsQry = nothing 
        
        '-- Log Project Merge Action
        'OraDatabase.ExecuteSQL _
        '"BEGIN  LOG_PROJECT_ACTION ( :PROJB, 'merge_release', :USER_ID, :COMMENTS );  END;"
        
        '-- Force package state recalculate 
        'OraDatabase.ExecuteSQL _
        '"BEGIN  "&_
        '"  TOUCH_RELEASE ( :RTAG_B );  "&_
        '"END;"
        
        OraSession.CommitTrans
        
        objEH.CatchORA ( OraSession )
        
        Set OraParameter = Nothing
        OraDatabase.Parameters.Remove "PV_ID"
        OraDatabase.Parameters.Remove "VIEW_ID"
        OraDatabase.Parameters.Remove "SBOM_A"
        OraDatabase.Parameters.Remove "SBOM_B"
        OraDatabase.Parameters.Remove "USER_ID"
        OraDatabase.Parameters.Remove "PROJB"
        OraDatabase.Parameters.Remove "COMMENTS"
        'Response.write "<br>"& sAddPkgList &"-"& dAddPkgList.Count &"-"& UBound( aFullList )
End Sub
'--------------------------------------------------------------------------------------------------------------------------
%>
<%
'------------ RUN BEFORE PAGE RENDER ----------
If Request("btn") = "Exit" Then
        Call OpenInWindow ( "reports.asp" )
End If

' Get release details

Call GetFormDetails ( parSBOMA, objRelCollectorA )
Call GetFormDetails ( parSBOMB, objRelCollectorB )

If (Request("btn") = "Merge") Then
        If objRelCollectorB.Item("official") <> "Y" Then
                Call MergePackages ()
        End If
End If

If Request("btn") = "Swap Compare" Then
        Call OpenInWindow ( SCRIPT_NAME &"?sbomA="& parSBOMB &"&sbomB="& parSBOMA )
End If

If Request("btn") = "Hide" Then
        ' Store filter in cookie
        Response.Cookies(enum_RELMGR_COOKIE_DOMAIN)(COOKIE_HIDE_DIFF_FILTER) = Request("difilter")
End If


Call GetDiffFilterValues ( dDiffFilter )
'----------------------------------------------
%>
<html>
<head>
<title>Deployment Manager SBOM Differences</title>
<link rel="shortcut icon" href="<%=FavIcon%>"/>
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="scripts/deployment_manager.css?ver=<%=VixVerNum%>" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="images/release_manager_style.css?ver=<%=VixVerNum%>" type="text/css">
<link rel="stylesheet" href="images/navigation.css?ver=<%=VixVerNum%>" type="text/css">
<script language="JavaScript" src="scripts/common.js?ver=<%=VixVerNum%>"></script>
<script language="JavaScript" src="scripts/remote_scripting.js?ver=<%=VixVerNum%>"></script>
<script language="JavaScript" type="text/javascript">
<!--

function RequestReleaseCombo( paramString, rowId ){
        var requestURL = 'RequestReleaseCombo.asp';

        // Set ajax divname
        ajaxdivname = rowId;
        
        //Append the name to search for to the requestURL
        var url = requestURL + paramString;
        
        //Progress
        //alert(MM_findObj( rowId ));
        
        //MM_findObj( rowId ).options[0] = new Option('Loading...','');
        //MM_findObj( rowId ).selectedIndex = 0;
        rowId.options[0] = new Option('Loading...','');
        rowId.selectedIndex = 0;
        
        
        //Create the xmlHttp object to use in the request
        //stateChangeHandler will fire when the state has changed, i.e. data is received back
        // This is non-blocking (asynchronous)
        xmlHttp = GetXmlHttpObject(stateComboChangeHandler);
        
        //Send the xmlHttp get to the specified url
        xmlHttp_Get(xmlHttp, url);
        
        
}

function RequestSBOMCombo( paramString, rowId ){
        var requestURL = 'RequestSBOMCombo.asp';

        // Set ajax divname
        ajaxdivname = rowId;
        
        //Append the name to search for to the requestURL
        var url = requestURL + paramString;
        
        //Progress
        //alert(MM_findObj( rowId ));
        
        //MM_findObj( rowId ).options[0] = new Option('Loading...','');
        //MM_findObj( rowId ).selectedIndex = 0;
        rowId.options[0] = new Option('Loading...','');
        rowId.selectedIndex = 0;
        
        
        //Create the xmlHttp object to use in the request
        //stateChangeHandler will fire when the state has changed, i.e. data is received back
        // This is non-blocking (asynchronous)
        xmlHttp = GetXmlHttpObject(stateComboChangeHandler);
        
        //Send the xmlHttp get to the specified url
        xmlHttp_Get(xmlHttp, url);
        
        
}


function MergePackage ( pkga, pkgb, rowId )
{

        // Set merge hidden field with new value
        MM_findObj( 'ADDPKG_' + rowId ).value = pkga;
        
        var divA = MM_findObj( 'PVA' + rowId );
        var divB = MM_findObj( 'PVB' + rowId );
        
        // Set text equal
        divB.innerHTML = divA.innerHTML;
        
        // Set highlight to blank
        divA.style.backgroundColor = '<%=LCOLOR_NOT_CHANGED%>';
        divB.style.backgroundColor = '<%=LCOLOR_NOT_CHANGED%>';
        
    // Set Change state icon to blank
        MM_findObj( 'IMGSTATE' + rowId ).style.display = 'none';
        
        // Remove Merge Button
        MM_findObj( 'IMGMERGE' + rowId ).style.display = 'none';
        MM_findObj( 'IMGREMOVE' + rowId ).style.display = 'none';
        
        // Show undo button
        MM_findObj( 'IMGUNDO' + rowId ).style.display = 'block';
        
        
}


function RemovePackage ( pkga, pkgb, rowId )
{

        // Set remove hidden field with new value
        MM_findObj( 'REMOVEPKG_' + rowId ).value = pkgb;
        
        var divA = MM_findObj( 'PVA' + rowId );
        var divB = MM_findObj( 'PVB' + rowId );
        
        // Set text equal
        divB.style.textDecoration = 'line-through';
        
        // Set highlight to blank
        if (MM_findObj( 'CHANGETYPE_' + rowId ).value != "A")
        {
                divA.style.backgroundColor = '<%=LCOLOR_NOT_CHANGED%>';
        }
        divB.style.backgroundColor = '<%=LCOLOR_NOT_CHANGED%>';
        
    // Set Change state icon to blank
        MM_findObj( 'IMGSTATE' + rowId ).style.display = 'none';
        
        // Remove Merge Button
        MM_findObj( 'IMGMERGE' + rowId ).style.display = 'none';
        MM_findObj( 'IMGREMOVE' + rowId ).style.display = 'none';
        
        // Show undo button
        MM_findObj( 'IMGUNDO' + rowId ).style.display = 'block';
        
        
}



function UndoPackage ( rowId )
{

        // Set merge/remove hidden field with new value
        MM_findObj( 'ADDPKG_' + rowId ).value = '';
        MM_findObj( 'REMOVEPKG_' + rowId ).value = '';
        
        var divA = MM_findObj( 'PVA' + rowId );
        var divB = MM_findObj( 'PVB' + rowId );
        
        // Set text equal
        divB.innerHTML = MM_findObj( 'UNDOPKG_' + rowId ).value;
        divB.style.textDecoration = 'none';
        
        
        // Set highlight to blank
        divA.style.backgroundColor = MM_findObj( 'UNDOCOLORA_' + rowId ).value;
        divB.style.backgroundColor = MM_findObj( 'UNDOCOLORB_' + rowId ).value;
        
        
    // Set Change state icon to blank
        MM_findObj( 'IMGSTATE' + rowId ).style.display = 'block';
        
        
        // Remove Merge Button
        var cht = MM_findObj( 'CHANGETYPE_' + rowId );
        
        if (cht.value == "R")
        {
                MM_findObj( 'IMGMERGE' + rowId ).style.display = 'block';
        } 
        else if ( (cht.value == "A") || (cht.value == "") ) 
        {
                MM_findObj( 'IMGREMOVE' + rowId ).style.display = 'block';
        } 
        else 
        {
                MM_findObj( 'IMGMERGE' + rowId ).style.display = 'block';
                MM_findObj( 'IMGREMOVE' + rowId ).style.display = 'block';
        }
        
        // Show undo button
        MM_findObj( 'IMGUNDO' + rowId ).style.display = 'none';
        
}


function MergeAll()
{
        var elem
                
        if (document.all)
        {
                // Run this for IE
                elem = document.all;
        } else {
                // Run this for other browsers
                elem = document.getElementsByTagName('div');
        }
        
        for (i in elem)
        {
                if (elem[i].id)
                {       
                        if (elem[i].id.indexOf('SHORT_') == 0) elem[i].style.display = 'none';
                        if (elem[i].id.indexOf('LONG_') == 0) elem[i].style.display = 'block';
                }
        }
 
}

//-->
</script>

</head>
<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">
<form name="FormName" method="post" action="<%=SCRIPT_NAME%>">
<!-- HEADER -->
<!--#include file="_header.asp"-->
<!-- BODY ---->
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr> 
    <td width="1%" background="images/bg_lite_blue.gif" valign="top">
        
        
        <!-- SELECT SBOM A ---------------------------------------------->
        
        <br>
      <table width="100%"  border="0" cellspacing="10" cellpadding="0">
            
                <tr>
          <td align="left" class="body_col"><img src="images/i_rtag_open_mode.gif" border="0" align="absmiddle" width="15" height="13">&nbsp;Select SBOM A<hr size="1px" color="Olive" noshade></td>
        </tr>
        <tr>
          <td align="left">
                  <select name="projA" class="form_item" onChange="RequestReleaseCombo( '?proj_id='+ this.value, FormName.rtagA );">
              <option value="">-- Select Project --</option>
                          <%
                          OraDatabase.Parameters.Add "PROJ_ID",         objRelCollectorA.Item("proj_id"),       ORAPARM_INPUT, ORATYPE_NUMBER 
                          
                          Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ProjectsCombo.sql"), cint(0))
                          
                          OraDatabase.Parameters.Remove "PROJ_ID"
                          
                          While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
                <option value="<%=rsQry("proj_id")%>" <%=rsQry("selected")%>><%=rsQry("proj_name")%></option>
              <%rsQry.MoveNext
                          WEnd
                          
                          rsQry.Close
                          Set rsQry = Nothing
                        %>
          </select></td>
        </tr>
        <tr>
          <td align="left">
                  
                  <select name="rtagA" id="rtagA" class="form_item" onChange="RequestSBOMCombo( '?branch_id='+ this.value, FormName.sbomA );">
              <option value="">-- Select SBOM --</option>                         
                          <%
                          OraDatabase.Parameters.Add "PROJ_ID",         objRelCollectorA.Item("proj_id"),       ORAPARM_INPUT,  ORATYPE_NUMBER 
                          OraDatabase.Parameters.Add "BRANCH_ID",       objRelCollectorA.Item("branch_id"),     ORAPARM_INPUT, ORATYPE_NUMBER 
                          
                          Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleasesCombo.sql"), cint(0))
                          
                          OraDatabase.Parameters.Remove "PROJ_ID"
                          OraDatabase.Parameters.Remove "BRANCH_ID"
                          
                          While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
                <option value="<%=rsQry("branch_id")%>" <%=rsQry("selected")%>><%=rsQry("branch_name")%></option>
              <%rsQry.MoveNext
                          WEnd
                          
                          rsQry.Close
                          Set rsQry = Nothing
                          %>
                  </select></td>
        </tr>
        <tr>
          <td align="left">


                  <select name="sbomA" id="sbomA" class="form_item">
            <%
                          OraDatabase.Parameters.Add "BOM_ID",  objRelCollectorA.Item("bom_id"),        ORAPARM_INPUT,  ORATYPE_NUMBER 
                          OraDatabase.Parameters.Add "BRANCH_ID",       objRelCollectorA.Item("branch_id"),     ORAPARM_INPUT, ORATYPE_NUMBER 

                          Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("SBOMCombo.sql"), cint(0))
                          
                          OraDatabase.Parameters.Remove "BOM_ID"
                          OraDatabase.Parameters.Remove "BRANCH_ID"
                          
                          While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
            <option value="<%=rsQry("bom_id")%>" <%=rsQry("selected")%>><%=rsQry("version")%></option>
            <%rsQry.MoveNext
                          WEnd
                          
                          rsQry.Close
                          Set rsQry = Nothing
                          %>
          </select>
                  
                  </td>
        </tr>
                <%If (parRtagA <> "") Then%>  
                <tr>
          <td align="left"><a href="Bom_Home.asp?bom_id=<%=parSBOMA%>" class="body_txt_drk">Go To SBOM A &raquo;</a></td>
        </tr>
                <%End If%>
    </table>
            
    <!-- SELECT SBOM A END ---------------------------------------------->      </td>
    <td width="1%" valign="top" background="images/bg_lght_gray.gif">&nbsp;</td>
    <td rowspan="2" valign="top" width="100%" background="images/bg_lght_gray.gif" align="center"> 
      <!-- DIFF -------------------------------------------------------->
      <br>
          
            
                                  
                                  
      <table width="100%" border="0" cellspacing="10" cellpadding="0">
        <tr>
          <td>
                  
                  
                  
            <table width="100%" border="0" cellspacing="0" cellpadding="0">
                          <tr> 
                <td width="1%"></td>
                <td width="100%" align="left" class="form_ttl">MERGE SBOM</td>
                <td width="1%"></td>
              </tr>
              <tr> 
                <td align="left" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tl_cnr_b.gif" width="13" height="13"></td>
                <td background="images/lbox_bg_blue.gif" align="left" class="wform_ttl">&nbsp; 
                </td>
                <td align="right" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tr_cnr_b.gif" width="13" height="13"></td>
              </tr>
              <tr> 
                <td width="1%" bgcolor="#FFFFFF"><img src="images/h_trsp_dot.gif" width="10" height="100"></td>
                <td bgcolor="#FFFFFF" valign="top" class="form_item">
                
                                
                                  
                                <table width="100%"  border="0" cellspacing="0" cellpadding="5">
                  <tr>
                    <td width="100%" bgcolor="#DAD7C8">
                                        <input type="submit" name="btn" value="Compare" class="form_btn_comp" style="margin-right:5px;">
                                        <input type="submit" name="btn" value="Swap Compare" class="form_btn_comp">
                                </td>
                    <td width="1" align="right" bgcolor="#DAD7C8" nowrap>
                                        <table width="100%"  border="0" cellspacing="0" cellpadding="0">
                      <tr>
                                                <td><%If objAccessControl.IsActive("mergeManager") Then%><input type="submit" name="btn" value="Merge" class="form_btn_comp" style="margin-right:10px;"><%End If%></td>
                        <td><input type="submit" name="btn" value="Exit" class="form_btn_comp"></td>
                      </tr>
                    </table></td>
                  </tr>
                                  <tr>
                    <td>
                                        <%If (parRtagA <> "") AND (parRtagB <> "")Then%> 
                                        <!-- DIFF FILTER +++++++++++++++++++++++++++++++++++++++++++ -->   
                                        <fieldset style="width:150px;">
                                        <legend><a href="javascript:;" class="body_scol" onClick="ToggleDisplay('divDiffFilter');" ><%=GetIsDiffFilterInUseIcon() %>&nbsp;Filter&nbsp;Results...</a></legend>                                     
                                        <div name="divDiffFilter" id="divDiffFilter" class="body_txt" style="display:none;">
                                        <br>
                                        <table width="100%"  border="0" cellspacing="1" cellpadding="3">
                                            <tr>
                                              <td width="1" background="images/bg_action_norm.gif"><input name="difilter" type="checkbox" value="<%=enumDB_DIFF_UPDATED%>" <%=GetIsDiffFilterChecked(enumDB_DIFF_UPDATED)%>></td>
                                              <td width="50" nowrap background="images/bg_action_norm.gif" class="form_field"><%=LIMG_UPDATED%>Updated</td>
                                            </tr>
                                            <tr>
                                              <td background="images/bg_action_norm.gif"><input type="checkbox" name="difilter" value="<%=enumDB_DIFF_NEW%>" <%=GetIsDiffFilterChecked(enumDB_DIFF_NEW)%>></td>
                                              <td nowrap background="images/bg_action_norm.gif" class="form_field"><%=LIMG_ADDED%>Added</td>
                                            </tr>
                                            <tr>
                                              <td background="images/bg_action_norm.gif"><input type="checkbox" name="difilter" value="<%=enumDB_DIFF_REMOVED%>" <%=GetIsDiffFilterChecked(enumDB_DIFF_REMOVED)%>></td>
                                              <td nowrap background="images/bg_action_norm.gif" class="form_field"><%=LIMG_REMOVED%>Removed</td>
                                            </tr>
                                            <tr>

                                            <tr>
                                              <td background="images/bg_action_norm.gif">&nbsp;</td>
                                              <td background="images/bg_action_norm.gif"><input name="btn" type="submit" class="form_btn" value="Hide"></td>
                                            </tr>
                                          </table>
                                        </div>
                                        </fieldset>
                                        <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
                                        <%End If%>
                                        </td>
                    <td></td>
                  </tr>
                </table>
                                
                                <%
                                ' Successfull Merge
                                If (Request("btn") = "Merge") Then
                                        Call Messenger ( "Merge has completed successfully.", 3, "100%" )                               
                                End If

                                Set FSO=Server.CreateObject("Scripting.FileSystemObject")
                                Set NewTextFile=FSO.CreateTextFile(Server.MapPath("docs\compareReleases_"&objAccessControl.UserName&".html"), true)
                                Call Header()                           

                                If (parRtagA <> "") AND (parRtagB <> "")Then%>  
                <table width="100%"  border="0" cellspacing="1" cellpadding="0">
                  <tr>
                    <td width="50%" bgcolor="#E4E9EC" class="body_row" nowrap><%= ReleaseIcon(objRelCollectorA.Item("official")) & objRelCollectorA.Item("location")%> </td>
                    <td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="1"></td>
                    <td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="20"></td>
                    <td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="1"></td>
                    <td width="50%" bgcolor="#E4E9EC" class="body_row" nowrap><%= ReleaseIcon(objRelCollectorB.Item("official")) & objRelCollectorB.Item("location")%></td>
                    <td width="1" bgcolor="#E4E9EC"><img src="images/spacer.gif" width="20" height="1"></td>
                  </tr>
                            <%

                                OraDatabase.Parameters.Add "SBOM_A",    parSBOMA,       ORAPARM_INPUT, ORATYPE_NUMBER 
                                OraDatabase.Parameters.Add "SBOM_B",    parSBOMB,       ORAPARM_INPUT, ORATYPE_NUMBER 
                                OraDatabase.Parameters.Add "NO_CHANGE", GetIsDiffFilterChecked(enumDB_DIFF_NO_CHANGE),          ORAPARM_INPUT, ORATYPE_VARCHAR2
                                OraDatabase.Parameters.Add "ADDED",     GetIsDiffFilterChecked(enumDB_DIFF_NEW),                ORAPARM_INPUT, ORATYPE_VARCHAR2
                                OraDatabase.Parameters.Add "UPDATED",   GetIsDiffFilterChecked(enumDB_DIFF_UPDATED),            ORAPARM_INPUT, ORATYPE_VARCHAR2
                                OraDatabase.Parameters.Add "REMOVED",   GetIsDiffFilterChecked(enumDB_DIFF_REMOVED),            ORAPARM_INPUT, ORATYPE_VARCHAR2
                        
                                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("BOMDiffMerge.sql"), cint(0))
                                
                                OraDatabase.Parameters.Remove "SBOM_A"
                                OraDatabase.Parameters.Remove "SBOM_B"
                                OraDatabase.Parameters.Remove "NO_CHANGE"
                                OraDatabase.Parameters.Remove "ADDED"
                                OraDatabase.Parameters.Remove "UPDATED"
                                OraDatabase.Parameters.Remove "REMOVED"
                                
                                Set rsQryA = OraDatabase.DbCreateDynaset( "SELECT pr.PROJ_NAME, br.BRANCH_NAME, b.BOM_VERSION ||'.'||b.BOM_LIFECYCLE  AS LOCATION, "&_
        "        pr.PROJ_ID, b.BOM_ID, br.BRANCH_ID"&_
        "  FROM BRANCHES br,"&_
        "               BOMS b,"&_      
        "           DM_PROJECTS pr"&_
        " WHERE br.PROJ_ID = pr.PROJ_ID"&_
        "       AND b.BRANCH_ID = br.BRANCH_ID"&_       
        "   AND b.BOM_ID ="&parSBOMA, cint(0))


                                Set rsQryB = OraDatabase.DbCreateDynaset( "SELECT pr.PROJ_NAME, br.BRANCH_NAME, b.BOM_VERSION ||'.'||b.BOM_LIFECYCLE  AS LOCATION, "&_
        "        pr.PROJ_ID, b.BOM_ID, br.BRANCH_ID"&_
        "  FROM BRANCHES br,"&_
        "               BOMS b,"&_      
        "           DM_PROJECTS pr"&_
        " WHERE br.PROJ_ID = pr.PROJ_ID"&_
        "       AND b.BRANCH_ID = br.BRANCH_ID"&_       
        "   AND b.BOM_ID ="&parSBOMB, cint(0))
                                
                                NewTextFile.WriteLine("<title>Difference Report Between "&rsQryA("branch_name")&" "&rsQryA("location")&" and "&rsQryB("branch_name")&" "&rsQryB("location")&"</title>")
                                NewTextFile.WriteLine("<div align="&chr(34)&"center"&chr(34)&"><font color="&chr(34)&"red"&chr(34)&" size="&chr(34)&"4"&chr(34)&" face="&chr(34)&"Verdana, Arial, Helvetica, sans-serif"&chr(34)&">Difference Report Between "&rsQryA("branch_name")&" "&rsQryA("location")&" and "&rsQryB("branch_name")&" "&rsQryB("location")&"</font></div><br>")
                                
                                While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))
                                errormsg = false
                                        rowId = rsQry("node_id_a") &"_"& rsQry("os_id_a") &"_"& rsQry("pv_id_a") &"_"& rsQry("pv_id_b")
                                        
                                        btnMerge = LIMG_MERGE
                                        btnRemove = LIMG_REMOVE
                                        colorA = LCOLOR_NOT_CHANGED
                                        colorB = LCOLOR_NOT_CHANGED
                                        
                                        Select Case rsQry("change_type")
                                                Case "U"
                                                        colorA = LCOLOR_CHANGED
                                                        colorB = LCOLOR_CHANGED                                                 
                                                Case "UW"
                                                        colorA = LCOLOR_CHANGED
                                                        colorB = LCOLOR_CHANGED
                                                        btnMerge = LIMG_MERGE_WARN
                                                Case "A"
                                                        colorA = LCOLOR_BLANK
                                                Case "R"
                                                        colorB = LCOLOR_BLANK
                                        End Select
                                        
                                        Call GetDiffStateIcon ( rsQry("change_type"), ChangeTypeIcon )
                                %>
                                  <tr>
                    <td class="body_row" nowrap>
                                                <DIV id="PVA<%=rowId%>" style="background:<%=colorA%>; padding:5px;">
                                                <%If rsQry("pkg_name_a") <> "" Then %>
                                                <%=rsQry("node_name_a") &"/"& rsQry("os_name_a") &"/"& rsQry("pkg_name_a") &" "& rsQry("pkg_version_a")%>
                                                <%End If%>
                                                </DIV>
                                                <input type="hidden" id="UNDOCOLORA_<%=rowId%>" value="<%=colorA%>">
                                        </td>
                    <td bgcolor="#F5F5F5"><%If objRelCollectorB.Item("is_readonly") <> "Y" AND (rsQry("change_type") = "U" OR rsQry("change_type") = "UW") Then%><DIV id="IMGMERGE<%=rowId%>" <%If (rsQry("change_type") = "A")  OR IsNull( rsQry("change_type") ) Then%>style="display:none;"<%End If%>><a href="javascript:;" onClick="MergePackage( '<%=rsQry("pv_id_a")%>', '<%=rsQry("pv_id_b")%>', '<%=rowId%>' );"><%=btnMerge%></a></DIV><%End If%></td>
                    <td bgcolor="#E4E9EC"><DIV id="IMGSTATE<%=rowId%>" ><%=ChangeTypeIcon%></DIV><input type="hidden" id="CHANGETYPE_<%=rowId%>" value="<%=rsQry("change_type")%>"></td>
                    <td bgcolor="#F5F5F5"><%If objRelCollectorB.Item("is_readonly") <> "Y" Then%><DIV id="IMGREMOVE<%=rowId%>" <%If rsQry("change_type") = "R" Then%>style="display:none;"<%End If%>><a href="javascript:;" onClick="RemovePackage( '<%=rsQry("pv_id_a")%>', '<%=rsQry("pv_id_b")%>', '<%=rowId%>' );"><%=btnRemove%></a></DIV><%End If%></td>
                    <td class="body_row" nowrap>
                                                <DIV id="PVB<%=rowId%>" style="background:<%=colorB%>; padding:5px;">
                                                <%If rsQry("pkg_name_b") <> "" Then %>
                                                <%=rsQry("node_name_b") &"/"& rsQry("os_name_b") &"/"& rsQry("pkg_name_b") &" "& rsQry("pkg_version_b")%>
                                                <%End If%>
                                                </DIV>
                                                <input type="hidden" id="UNDOCOLORB_<%=rowId%>" value="<%=colorB%>">
                                                <input type="hidden" name="addpkg" id="ADDPKG_<%=rowId%>" value="">
                                                <input type="hidden" name="removepkg" id="REMOVEPKG_<%=rowId%>" value="">
                                                <input type="hidden" id="UNDOPKG_<%=rowId%>" value="<%=rsQry("node_name_b") &"/"& rsQry("os_name_b") &"/"& rsQry("pkg_name_b") &" "& rsQry("pkg_version_b")%>">
                                        </td>
                    <td bgcolor="#F5F5F5"><DIV id="IMGUNDO<%=rowId%>" style="display:none;" ><a href="javascript:;" onClick="UndoPackage( '<%=rowId%>' );"><%=LIMG_UNDO%></a></DIV></td>
                  </tr> 
<%
        If email then 
                If rsQry("pv_id_a") Then
                        Set rsQryCommentsA = OraDatabase.DbCreateDynaset( "SELECT COMMENTS FROM PACKAGE_VERSIONS WHERE PV_ID="& rsQry("pv_id_a"), cint(0)) 
                End If
                                
                If rsQry("pv_id_b") Then
                        Set rsQryCommentsB = OraDatabase.DbCreateDynaset( "SELECT COMMENTS FROM PACKAGE_VERSIONS WHERE PV_ID="& rsQry("pv_id_b"), cint(0)) 
                End If
                                
                pkgA = rsQry("pkg_name_a")
                pkgB = rsQry("pkg_name_b")
                
                If pkgA <> "" then 
                        pkgname = pkgA
                Else
                        pkgname = pkgB
                End If
                                
                Select Case rsQry("change_type") 
                        Case "U" 
                                NewTextFile.WriteLine("<b><font face="&chr(34)&"arial"&chr(34)&">Package Name: "&pkgname&"</font></b><br>")
                                NewTextFile.Write(rsQryA("location")&" uses: "&rsQry("pkg_version_a")&" ")
                                
                                NewTextFile.WriteLine("<br>")
                                NewTextFile.Write(rsQryB("location")&" uses: "&rsQry("pkg_version_b")&" ")

                                NewTextFile.WriteLine("<br><br>")
                                NewTextFile.WriteLine()
                                NewTextFile.WriteLine("<b>"&rsQryA("location")&"</b>")  
                                Call Comments(rsQry("pv_id_a"))
                                Call GetFixedIssues(rsQry("pv_id_a"))
                                'Call GetDependencies(rsQry("pv_id_a"), rsQry("pv_id_b"))
                                
                                NewTextFile.WriteLine("<br><br>")
                                NewTextFile.WriteLine()
                                NewTextFile.WriteLine("<b>"&rsQryB("location")&"</b>")  
                                Call Comments(rsQry("pv_id_b"))
                                Call GetFixedIssues(rsQry("pv_id_b"))
                                Call GetDependencies(rsQry("pv_id_a"), rsQry("pv_id_b"))                

                                        

                                                                                
                                        NewTextFile.WriteLine("****************************************************************************************************************************")
                                        
                        Case "UW"                                       
                                NewTextFile.WriteLine("<b><font face="&chr(34)&"arial"&chr(34)&">Package Name: "&pkgname&"</font></b><br>")
                                NewTextFile.Write(rsQryA("location")&" uses: "&rsQry("pkg_version_a")&" ")

                                NewTextFile.WriteLine("<br>")
                                NewTextFile.Write(rsQryB("location")&" uses: "&rsQry("pkg_version_b")&" ")

                                NewTextFile.WriteLine("<br><br>")
                                NewTextFile.WriteLine()
                                NewTextFile.WriteLine("<b>"&rsQryA("location")&"</b>")  
                                Call Comments(rsQry("pv_id_a"))
                                Call GetFixedIssues(rsQry("pv_id_a"))
                                'Call GetDependencies(rsQry("pv_id_a"))
                                
                                NewTextFile.WriteLine("<br><br>")
                                NewTextFile.WriteLine()
                                NewTextFile.WriteLine("<b>"&rsQryB("location")&"</b>")  
                                Call Comments(rsQry("pv_id_b"))
                                Call GetFixedIssues(rsQry("pv_id_b"))
                                Call GetDependencies(rsQry("pv_id_a"), rsQry("pv_id_b"))                                
                                
                                
                                

                                        
                                NewTextFile.WriteLine("****************************************************************************************************************************")
                                                
                End Select      
                                
        End If
                
        rsQry.MoveNext
        WEnd
                                
        rsQry.Close
        Set rsQry = Nothing
%>                                                                        
<%
        Call Footer()
        NewTextFile.Close
        Set NewTextFile=Nothing 
%>                                
                </table>
                <br>
                        <%Else%>        
                                <br>
                                <%
                                If (parRtagB <> "") Then
                                        Call Messenger ( "Select <b>SBOM A</b> to compare.", 3, "100%" )                                        
                                ElseIf (parRtagA <> "") Then
                                        Call Messenger ( "Select <b>SBOM B</b> to compare.", 3, "100%" )                                        
                                Else
                                        Call Messenger ( "Select <b>SBOM A</b> and <b>SBOM B</b> to compare.", 3, "100%" )                                      
                                End If
                                %>
                                
                        <%End If%>
                                
                                </td>
                <td width="1%" background="images/lbox_bgside_white.gif">&nbsp;</td>
              </tr>
              <tr> 
                <td width="1%" background="images/lbox_bg_blue.gif" valign="bottom"><img src="images/lbox_bl_cnr_b.gif" width="13" height="13"></td>
                <td background="images/lbox_bg_blue.gif"></td>
                <td width="1%" background="images/lbox_bg_blue.gif" valign="bottom" align="right"><img src="images/lbox_br_cnr_b.gif" width="13" height="13"></td>
              </tr>
            </table>
          </td>
        </tr>
      </table>
    <!-- DIFF END ---------------------------------------------------->
    </td>
        <td valign="top" width="1%" background="images/bg_lite_blue.gif"> 
        
        
          <!-- SELECT SBOM B ---------------------------------------------->
      <br>
      <table width="100%"  border="0" cellspacing="10" cellpadding="0">
                <tr>
          <td align="left" class="body_col"><img src="images/i_rtag_open_mode.gif" border="0" align="absmiddle" width="15" height="13">&nbsp;Select SBOM B<hr size="1px" color="Olive" noshade></td>
        </tr>
        <tr>
          <td align="left">
                  <select name="projB" class="form_item" onChange="RequestReleaseCombo( '?proj_id='+ this.value, FormName.rtagB );">
              <option value="">-- Select Project --</option>
                          <%
                          OraDatabase.Parameters.Add "PROJ_ID",         objRelCollectorB.Item("proj_id"),       ORAPARM_INPUT, ORATYPE_NUMBER 
                          
                          Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ProjectsCombo.sql"), cint(0))
                          
                          OraDatabase.Parameters.Remove "PROJ_ID"
                          
                          While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
                <option value="<%=rsQry("proj_id")%>" <%=rsQry("selected")%>><%=rsQry("proj_name")%></option>
              <%rsQry.MoveNext
                          WEnd
                          
                          rsQry.Close
                          Set rsQry = Nothing
                        %>
          </select></td>
        </tr>
        <tr>
          <td align="left">
                  
                  <select name="rtagB" id="rtagB" class="form_item" onChange="RequestSBOMCombo( '?branch_id='+ this.value, FormName.sbomB );">
              <option value="">-- Select SBOM --</option>                 
                          <%
                          OraDatabase.Parameters.Add "PROJ_ID",         objRelCollectorB.Item("proj_id"),       ORAPARM_INPUT,  ORATYPE_NUMBER 
                          OraDatabase.Parameters.Add "BRANCH_ID",       objRelCollectorB.Item("branch_id"),     ORAPARM_INPUT, ORATYPE_NUMBER 
                          
                          Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("ReleasesCombo.sql"), cint(0))
                          
                          OraDatabase.Parameters.Remove "PROJ_ID"
                          OraDatabase.Parameters.Remove "BRANCH_ID"
                          
                          While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
                <option value="<%=rsQry("branch_id")%>" <%=rsQry("selected")%>><%=rsQry("branch_name")%></option>
              <%rsQry.MoveNext
                          WEnd
                          
                          rsQry.Close
                          Set rsQry = Nothing
                          %>
                  </select></td>
        </tr>
        <tr>
          <td align="left">


                  <select name="sbomB" id="sbomB" class="form_item">
            <%
                          OraDatabase.Parameters.Add "BOM_ID",  objRelCollectorB.Item("bom_id"),        ORAPARM_INPUT,  ORATYPE_NUMBER 
                          OraDatabase.Parameters.Add "BRANCH_ID",       objRelCollectorB.Item("branch_id"),     ORAPARM_INPUT, ORATYPE_NUMBER 

                          Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("SBOMCombo.sql"), cint(0))
                          
                          OraDatabase.Parameters.Remove "BOM_ID"
                          OraDatabase.Parameters.Remove "BRANCH_ID"
                          
                          While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))%>
            <option value="<%=rsQry("bom_id")%>" <%=rsQry("selected")%>><%=rsQry("version")%></option>
            <%rsQry.MoveNext
                          WEnd
                          
                          rsQry.Close
                          Set rsQry = Nothing
                          %>
          </select>

                  
                  </td>
        </tr>
                <%If (parRtagB <> "") Then%>  
                <tr>
          <td align="left"><a href="Bom_home.asp?bom_id=<%=parSBOMB%>" class="body_txt_drk">Go To SBOM B &raquo;</a></td>
        </tr>
                <%End If%>
      </table>
      <!-- SELECT RELEASE B END ---------------------------------------------->   </td>
  </tr>
  <tr> 
    <td valign="bottom" align="center" background="images/bg_lite_blue.gif"><img src="images/img_vtree.gif" width="86" height="99" vspace="20" hspace="30"></td>
    <td background="images/bg_lght_gray.gif" valign="top"><img src="images/h_trsp_dot.gif" width="1" height="500"></td>
        <td valign="bottom" background="images/bg_lite_blue.gif" align="center"><img src="images/img_vtree.gif" width="86" height="99" vspace="20" hspace="30"></td>
  </tr>
</table>
</form>
<%
        If email Then
        
                Dim myMail, LocalPath
                Set myMail=Server.CreateObject("Persits.MailSender")
                LocalPath = Server.MapPath("docs\compareReleases_"&objAccessControl.UserName&".html")
                
                myMail.Host = SMTP_HOST
                myMail.Subject="Release Comparisons from Release Manager"
                myMail.From="releasem@vixtechnology.com"
                myMail.AddAddress objAccessControl.UserEmail
                ' Attach the file
                myMail.AddAttachment LocalPath
                myMail.Body = "Your requested report..." 
                myMail.Send
                
                set myMail=nothing
                
        End If
%>
<!-- FOOTER -->
<!--#include file="_footer.asp"-->
</body>
</html>