Subversion Repositories DevTools

Rev

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

<%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
'|                                                   |
'|                                       DIFF                                        |
'|                                                   |
'=====================================================
%>
<%
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/_rtree_common.asp"-->

<!--#include file="controls/ERGFormComponent/classFormComponent.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, TDSEiss, VT5DMiss             
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'>"
Const LIMG_EXPAND = "<img src='icons/i_plus.gif' width='9' height='9' border='0' hspace='2'>"
Const LIMG_COLLAPSE = "<img src='icons/i_minus.gif' width='9' height='9' border='0' hspace='2'>"
Const LIMG_EDIT = "<img src='icons/i_edit.gif' width='16' height='16' border='0' hspace='2'>"

Const LIMG_PRODUCT = "<img src='icons/i_product.gif' width='19' height='19' border='0' hspace='2' align='absmiddle'>"
'------------ 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"
                        TDSEiss = "-1"
                        VT5DMiss = "-1"
                                
                        If CInt(sqlstrA("iss_db")) = CInt(enumCLEARQUEST_DEVI_ID) Then
                                DEVIiss = DEVIiss &","& sqlstrA("iss_id")
                        ElseIf CInt(sqlstrA("iss_db")) = CInt(enumCLEARQUEST_TDSE_ID) Then
                                TDSEiss = TDSEiss &","& sqlstrA("iss_id")
                        ElseIf CInt(sqlstrA("iss_db")) = CInt(enumCLEARQUEST_VT5DM_ID) Then
                                VT5DMiss = VT5DMiss &","& sqlstrA("iss_id")                                                             
                        End If
                        
                        SSsql = ReadFile( QUERIES_PATH & "\cq_issues.sql" )
                        SSsql = Replace( SSsql, "/*enumCLEARQUEST_DEVI_ID*/", enumCLEARQUEST_DEVI_ID)
                        SSsql = Replace( SSsql, "/*enumCLEARQUEST_TDSE_ID*/", enumCLEARQUEST_TDSE_ID)
                        SSsql = Replace( SSsql, "/*enumCLEARQUEST_VT5DM_ID*/", enumCLEARQUEST_VT5DM_ID)
                        SSsql = Replace( SSsql, "/*DEVIiss*/", DEVIiss)
                        SSsql = Replace( SSsql, "/*TDSEiss*/", TDSEiss)
                        SSsql = Replace( SSsql, "/*VT5DMiss*/", VT5DMiss)       
                        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 )

        If OOrsCQ.State = 1 Then 
                OOrsCQ.Close
        End If
        
        On Error Resume Next
        OOrsCQ.ActiveConnection = CQ_conn
        OOrsCQ.Source = SSsql
        OOrsCQ.CursorType = 0
        OOrsCQ.CursorLocation = 2
        OOrsCQ.LockType = 3
        OOrsCQ.Open()
        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, 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 ("proj_id") = rsQry("proj_id")
                outobjDetails.Item ("branch_id") = rsQry("branch_id")
                outobjDetails.Item ("bom_id") = rsQry("bom_id")         
        Else
                Err.Raise 8, "Sub GetFormDetails in "& SCRIPT_NAME, "Empty record set returned. nSourceSBOM="& nSourceSBOM
        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 "RTAG_A",                    Request("rtagA"),       ORAPARM_INPUT, ORATYPE_NUMBER 
        OraDatabase.Parameters.Add "RTAG_B",                    Request("rtagB"),       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
                OraDatabase.ExecuteSQL _
                "BEGIN  "&_
                "  :VIEW_ID := PK_RELEASE.GET_PACKAGE_VIEW ( :PV_ID, :RTAG_A ); "&_
                "  PK_RELEASE.ADD_PACKAGE ( :PV_ID, :VIEW_ID, :RTAG_B, :USER_ID );  "&_
                "END;"
        Next
        
        '-- Remove Packages --
        For Each PvId In aRemovePkgList         
                OraParameter("PV_ID").Value = PvId
                OraDatabase.ExecuteSQL _
                "BEGIN  "&_
                "  PK_RELEASE.REMOVE_PACKAGE ( :PV_ID, :RTAG_B, :USER_ID );  "&_
                "END;"
        Next
        
        '-- 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 "RTAG_A"
        OraDatabase.Parameters.Remove "RTAG_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 ( "default.asp" )
End If

' Get release details

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

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

'If Request("btn") = "Swap Compare" Then
'       Call OpenInWindow ( SCRIPT_NAME &"?bom_id="& parSBOMB &"&bom_id="& 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>
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="images/release_manager_style.css" type="text/css">
<link rel="stylesheet" href="images/navigation.css" type="text/css">
<script language="JavaScript" src="images/common.js"></script>
<script language="JavaScript" src="scripts/remote_scripting.js"></script>
<script language="JavaScript" type="text/javascript">
<!--
function RequestProductLocation( paramString, rowId, changeType ){
        var requestURL 
        
        // Product is changes, hence can be found in current bom
        requestURL = 'RequestBomDiffProductLocation.asp';
        

        // Show div
        ToggleDisplay( 'PRODUCT_'+ rowId, 'IMG_EXPAND_PRODUCT_' + rowId, 'IMG_COLLAPSE_PRODUCT_' + rowId );
        
        // Set ajax divname
        ajaxdivname = 'PRODUCT_'+ rowId;
        
        if ( MM_findObj( ajaxdivname ).innerHTML == '<%=enumLOADING%>') 
        {
        
                //Append the name to search for to the requestURL
                var url = requestURL + paramString;
                
                //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(stateChangeHandler);
                
                //Send the xmlHttp get to the specified url
                xmlHttp_Get(xmlHttp, url);
                
        }
        
        
}

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">DIFF / 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;">

                                        <span class="body_txt">
                                        <input name="btn" type="submit" class="form_btn" value="Mail Me Report">
                                        </span>                                 </td>
                    <td width="1" align="right" bgcolor="#DAD7C8" nowrap>
                                        <table width="100%"  border="0" cellspacing="0" cellpadding="0">
                      <tr>

                        <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("BOMDiff.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("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;">
                                                <SPAN id="IMG_EXPAND_PRODUCT_<%=rsQry("pv_id_a") & rsQry("change_type")%>" name="IMG_EXPAND_PRODUCT_<%=rsQry("pv_id_a") & rsQry("change_type")%>" style="display:block;"><a href="javascript:;" class="menu_link" onClick="RequestProductLocation('?prod_id=<%=rsQry("pv_id_a")%>&bom_id=<%=parSBOMA%>&compare_bom_id=<%=parSBOMB%>&change_type=<%=rsQry("change_type")%>', '<%=rsQry("pv_id_a") & rsQry("change_type")%>');"><%=LIMG_EXPAND & rsQry("pkg_name_a")%> <%=rsQry("pkg_version_a")%></a></SPAN>
                                                <SPAN id="IMG_COLLAPSE_PRODUCT_<%=rsQry("pv_id_a") & rsQry("change_type")%>" name="IMG_COLLAPSE_PRODUCT_<%=rsQry("pv_id_a") &rsQry("change_type")%>" style="display:none;"><a href="javascript:;" class="menu_link" onClick="ToggleDisplay( 'PRODUCT_<%=rsQry("pv_id_a") & rsQry("change_type")%>', 'IMG_EXPAND_PRODUCT_<%=rsQry("pv_id_a") & rsQry("change_type")%>', 'IMG_COLLAPSE_PRODUCT_<%=rsQry("pv_id_a") & rsQry("change_type")%>');"><%=LIMG_COLLAPSE & rsQry("pkg_name_a")%> <%=rsQry("pkg_version_a")%></a></SPAN>                                                                                                                   
                                                </DIV>
                                                <DIV id="PRODUCT_<%=rsQry("pv_id_a") & rsQry("change_type")%>" name="PRODUCT_<%=rsQry("pv_id_a") & rsQry("change_type")%>" style="display:none;"><%=enumLOADING%></DIV>
                                                <input type="hidden" id="UNDOCOLORA_<%=rowId%>" value="<%=colorA%>">
                                        </td>
                    <td bgcolor="#F5F5F5"></td>
                    <td bgcolor="#E4E9EC"><DIV id="IMGSTATE<%=rowId%>" ><%=ChangeTypeIcon%></DIV><input type="hidden" id="CHANGETYPE_<%=rowId%>" value="<%=rsQry("change_type")%>"></td>
                    <td bgcolor="#F5F5F5"></td>
                    <td class="body_row" nowrap>
                                                <DIV id="PVB<%=rowId%>" style="background:<%=colorB%>; padding:5px;">
                                                <%=rsQry("pkg_name_b") &" "& rsQry("pkg_version_b")%>
                                                </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("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>
<!-- FOOTER -->
<!--#include file="_footer.asp"-->
<%
        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@erggroup.com"
                myMail.AddAddress objAccessControl.UserEmail
                ' Attach the file
                myMail.AddAttachment LocalPath
                myMail.Body = "Your requested report..." 
                myMail.Send
                
                set myMail=nothing
                
        End If
%>
</body>
</html>
<%
Call Destroy_All_Objects
%>
<!--#include file="common/globals_destructor.asp"-->