Subversion Repositories DevTools

Rev

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

<%
'=====================================================
'                 NEW VERSION
'                      PAGE
'=====================================================
%>
<!--#include file="_tabs.asp"-->
<!--#include file="_drawExtensionSelectBox.asp"-->
<!--#include file="class/classSortHelper.asp"-->
<script language="JavaScript" src="scripts/remote_scripting.js"></script>
<script type="text/javascript" src="scripts/json2.js"></script>
<%
'------------ Variable Definition -------------
Dim parPv_id
Dim rsLocRel
Dim parPage_title
Dim objPkgInfo
Dim rsTemp2
Dim rsLatest
Dim aVersions
Dim lastRow, i
Dim objSortHelper
Dim newPackage
Dim majorState
Dim minorState
Dim patchState
Dim parBase_view_id
Dim verNumber
Dim parPkgName

'------------ Constants Declaration -----------
'------------ Variable Init -------------------
parPv_id = QStrPar("pv_id")
parBase_view_id = Request("base_view_id")
parPkgName = QStrPar("pkgName")

parPage_title = "NEW VERSION"

If ( parPkgName <> "" ) Then
    newPackage = 1
    parPv_id = NULL
Else
    newPackage = 0
End if
    
majorState = ""
minorState = ""
patchState = "checked"

Set objPkgInfo = CreateObject("Scripting.Dictionary")

'-----------------------------------------------------------------------------------------------------------------------------
Sub GetPackageInfo( nPvId, outPkgInfo )
   Dim rsTemp, Query_String
   If (IsEmpty(nPvId) OR newPackage > 0) Then Exit Sub

   Query_String = _
   " SELECT pv.pv_id, pkg.pkg_id, pkg.pkg_name, pv.pkg_version, pv.v_ext"&_
   "  FROM packages pkg, package_versions pv"&_
   " WHERE pkg.pkg_id = pv.pkg_id  AND pv.pv_id ="& nPvId

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

   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
      outPkgInfo.Item("pv_id") = rsTemp.Fields("pv_id")
      outPkgInfo.Item("pkg_id") = rsTemp.Fields("pkg_id")
      outPkgInfo.Item("pkg_name") = rsTemp.Fields("pkg_name")
      outPkgInfo.Item("pkg_version") = rsTemp.Fields("pkg_version")
      if rsTemp.Fields("v_ext") <> "" Then
        outPkgInfo.Item("v_ext") = rsTemp.Fields("v_ext")
      Else
        outPkgInfo.Item("v_ext") = ""
      End If
   End If

   rsTemp.Close
   Set rsTemp = nothing
End Sub

'-----------------------------------------------------------------------------------------------------------------------------
Function Get_Latest_All_Ext ( NNpkg_id, nPv_id )
        Get_Latest_All_Ext = _
        " SELECT pv.pkg_version, pv.dlocked,"&_
        "        DECODE ( pv.pv_id, "& nPv_id &", 'selected', NULL ) AS selected"&_
        "    FROM PACKAGES pkg, package_versions pv"&_
        "   WHERE pkg.pkg_id = pv.pkg_id  AND  pkg.pkg_id = "& NNpkg_id
End Function

'-------------------------------------------------------------------------------------------------------------
' Returns TRUE if the specified version has a COTS extension
' Really determines if the extension has to be strict Major.Minor.PatchBuild
' or is allowed to be more relaxes. As in COTS and TOOL packages.
'
' Read from the database to determine type
' If we cannot determine the project suffix then assume the worst
'
Function HasCotsExtension(aExt)
   Dim rsQry, Query_String
   HasCotsExtension = FALSE

   if aExt <> "" Then
       Query_String = "SELECT EXT_NAME FROM PROJECT_EXTENTIONS pe WHERE " &_
                      "pe.IS_COTS='Y' AND pe.EXT_NAME='" & LCase(aExt) & "'"
       Set rsQry = OraDatabase.DbCreateDynaset( Query_String, ORADYN_DEFAULT )
       If ((NOT rsQry.BOF) AND (NOT rsQry.EOF)) Then
           HasCotsExtension = TRUE
       End If
       rsQry.Close
   Else
       HasCotsExtension = TRUE
   end If
   Set rsQry = Nothing

End Function

'-------------------------------------------------------------------------------------------------------------
'Returns TRUE if the specified version has a patch-build number.
Function HasPatchBuildNumber(aversion)
   'test for a version with a patch build number, ie a dot and at least 4 digits before the extenstion.
   Dim re: Set re = New RegExp
   re.Pattern = "\.\d{4,}\.[^\.]+$"
   HasPatchBuildNumber = re.Test(aversion)
   Set re = Nothing      
End Function

'-------------------------------------------------------------------------------------------------------------
'Returns TRUE if the specified version has a well formed version number
Function HasWellFormedVersion(aversion)
   'If a package has a major.minor.patch-build number then it is well formed
   Dim re: Set re = New RegExp
   re.Pattern = "^\d+\.\d+\.\d{4,}\.[^\.]+$"
   HasWellFormedVersion = re.Test(aversion)
   Set re = Nothing      
End Function

'-----------------------------------------------------------------------------------------------------------------------------
Sub Get_All_Base_Views ( NNnewgroup_id )
   Dim rsTemp, Query_String

   Query_String = _
   "   SELECT vi.view_id, vi.view_name "&_
   "     FROM views vi "&_
   "    WHERE UPPER(vi.base_view) = 'Y'"&_
   "    ORDER BY vi.view_name ASC"

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

   While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
      If NNnewgroup_id = Cstr( rsTemp.Fields("view_id")) Then
         Response.write "<option value='"& rsTemp("view_id") &"' selected>"& rsTemp("view_name") &"</option>"
      Else
         Response.write "<option value='"& rsTemp("view_id") &"'>" & rsTemp("view_name") &"</option>"
      End If

      rsTemp.MoveNext
   WEnd

   rsTemp.Close
   Set rsTemp = nothing
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
Sub Get_All_Personal_Views ( NNuser_id )
   Dim rsTemp, Query_String
   If NNuser_id = "" Then Exit Sub

   Query_String = _
   " SELECT vi.view_id, vi.view_name"&_
   "  FROM view_settings vs,"&_
   "       views vi"&_
   " WHERE vs.view_id = vi.view_id"&_
   "   AND vs.user_id = vi.owner_id  "&_
   "   AND vs.user_id = "& NNuser_id &_
   "   AND vi.base_view = 'N'"&_
   " ORDER BY UPPER(vi.view_name)"

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

   While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
      Response.write "<option value='"& rsTemp.Fields("view_id") &"'>"& rsTemp.Fields("view_name") &"</option>"

      rsTemp.MoveNext
   WEnd

   rsTemp.Close
   Set rsTemp = nothing
End Sub
'-----------------------------------------------------------------------------------------------------------------------------

%>
<%
'===================== MAIN LINE ============================
Dim bDisableAuto, bPatchOnly, bIsCots, bIsAuto

If NOT (newPackage > 0 ) Then
    Call GetPackageInfo( parPv_id, objPkgInfo )
    parPkgName = objPkgInfo.Item("pkg_name")

    ' Extract version number without extension
    verNumber = objPkgInfo.Item("pkg_version")
    verNumber = Mid( verNumber,1, Len(verNumber) - Len(objPkgInfo.Item("v_ext")))

    bIsCots = HasCotsExtension(objPkgInfo.Item("v_ext"))
    'Disable the "Auto" build option if the package is a COTS package and the version doesn't have a patch-build number.
    bDisableAuto = bIsCots and not HasPatchBuildNumber(objPkgInfo.Item("pkg_version"))
    'Enable only the "Patch Change" option if the package is a COTS package and the version has a patch-build number.
    bPatchOnly = bIsCots and not HasWellFormedVersion(objPkgInfo.Item("pkg_version")) and HasPatchBuildNumber(objPkgInfo.Item("pkg_version"))

    'if "Auto" build option is disabled then select the Manual option
    bIsAuto = NOT bDisableAuto

Else
    ' If New Package and First version
    parPage_title = "NEW PACKAGE and FIRST VERSION"
    bIsCots = FALSE
    bDisableAuto = FALSE
    bPatchOnly = FALSE
    bIsAuto = TRUE
    majorState = "checked"
    minorState = ""
    patchState = ""
    verNumber = "1.0.0000"
End If

'============================================================
%>
<script language="JavaScript" type="text/JavaScript">
<!--
var savedVersion;
var fieldError;
var checkMode;

window.onload = function(e)
{
   // Init checking mode
   //   0 - Checking options one at a time
   //       Clear Error display before checking
   //
   //   1 - Checking before submit
   //       Accumulate error messages
   //
   checkMode = 0;

   savedVersion = "<%=verNumber%>";
   document.getElementById('FRvnumber').value = savedVersion;

   var isAutobuild = document.NEWversion.build_type[0].checked;
   if (!isAutobuild)
   {
      changeToManualVersionNumberAssignment();
   }
   else
   {
      changeToAutoVersionNumberAssignment();
   }
   checkPackage();
   checkBaseView();

   // Hide error message
   setIdText('eMessage','');
}

function setIdText(id, text) {
    var element = document.getElementById(id);
    if ( element ) {
    while (element.firstChild!==null)
        element.removeChild(element.firstChild); // remove all existing content
    element.appendChild(document.createTextNode(text));
    }
}

//////////////////////////////////////////////////////////////////
// Function: changeToAutoVersionNumberAssignment
//
// Purpose: Hide the relevent sections of the form
//
function changeToAutoVersionNumberAssignment()
{
   document.getElementById('change_type').style.display = 'table-row';
   //document.getElementById('pkgver').style.display = 'none';
   savedVersion = document.getElementById('FRvnumber').value;
   document.getElementById('FRvnumber').disabled = true;
   document.getElementById('FRvnumber').value = '(auto)';
   checkVersionNumber();
}

//////////////////////////////////////////////////////////////////
// Function: changeToManualVersionNumberAssignment
//
// Purpose: Show the relevent sections of the form
//
function changeToManualVersionNumberAssignment()
{
   document.getElementById('change_type').style.display = 'none';
   //document.getElementById('pkgver').style.display = 'table-row';
   document.getElementById('FRvnumber').disabled = false;
   document.getElementById('FRvnumber').value = savedVersion;
   checkVersionNumber();
}

function checkPackage()
{
    var f = document.getElementById('NEWversion');
    if ( f.newPackage.value > 0 )
    {
        reseteMessage();
        MM_validateForm("--Silent",'FRpkgName','Package Name','RisPackage');
        checkPackageHighlight( ! document.MM_returnValue, 'Name well formed', 'Invalid Characters in name');
        if ( ! document.MM_returnValue ) return;

        xmlHttp=GetXmlHttpObject(checkPackageDone);
        if (xmlHttp==null)
        {
          alert ("Your browser does not support AJAX!");
          return;
        }
 
        var url = "_json_checkPackage.asp?"
                + "packageName=" + document.getElementById('FRpkgName').value
                + "&Opr=checkName";

        MM_showProgressBar();
        xmlHttp.open("GET",url,false);  // `false` makes the request synchronous
        xmlHttp.send(null);
    }
}

function checkPackageDone()
{
    //readyState of 4 or 'complete' represents that data has been returned
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){
        //alert("Got to checkPackageDone"+ xmlHttp.responseText);

        //Gather the results from the callback
        var str = xmlHttp.responseText;
        var myJson = JSON.parse(str);

        checkPackageHighlight( myJson.result != 0, 'Name is unused', 'Package Exists');
        MM_hideProgressBar();
    }
}

function checkPackageHighlight(v, msggood, msgbad)
{
    if (v)
    {
        setIdText('cpError',msgbad);
        addClass(document.getElementById('FRpkgName'), 'form_error' );
        showeMessage(document.MM_error);
        fieldError = true;
    }
    else
    {
        setIdText('cpError',msggood);
        removeClass(document.getElementById('FRpkgName'), 'form_error' );
    }
}

function checkBaseView()
{
    var f = document.getElementById('NEWversion');
    if ( f.newPackage.value > 0 )
    {
        reseteMessage();
        MM_validateForm("--Silent",'base_view_id','Base View','R');
        if ( ! document.MM_returnValue )
        {
            addClass(document.getElementById('base_view_id'), 'form_error' );
            setIdText('bvError','Required');
            fieldError = true;
        }
        else
        {
            removeClass(document.getElementById('base_view_id'), 'form_error' );
            setIdText('bvError','');
        }
    }
}

function checkVersionNumber()
{
   reseteMessage();
   if (document.NEWversion.build_type[0].checked)
   {
        removeClass(document.getElementById('FRvnumber'), 'form_error' );
        setIdText('vnError','');

        var versionExt = document.all['v_ext'].value;
        document.all['FRnewver'].value = versionExt;
   }
   else
   {
        // Get Full version - store into hidden field processing
        var versionExt = document.all['v_ext'].value;
        var versionBase = document.all['FRvnumber'].value;
        document.all['FRnewver'].value = versionBase + versionExt;

        // check the version number is good
        MM_validateForm("--Silent",{vBase:versionBase, vExt:versionExt},'Version Number','RisVersionNumber');
        if ( ! document.MM_returnValue )
        {
            addClass(document.getElementById('FRvnumber'), 'form_error' );
            setIdText('vnError','Invalid form');
            showeMessage(document.MM_error);
            fieldError = true;
            return;
        }

        xmlHttp=GetXmlHttpObject(checkVersionExistsDone);
        if (xmlHttp==null)
        {
            alert ("Your browser does not support AJAX!");
            return;
        }

        var url = "_json_checkPackage.asp?"
                + "packageName=" + document.getElementById('FRpkgName').value
                + "&Version=" + document.all['FRvnumber'].value + document.all['v_ext'].value
                + "&Opr=checkVer";

        MM_showProgressBar();
        xmlHttp.open("GET",url,false);  // `false` makes the request synchronous
        xmlHttp.send(null);
    }
}

function checkVersionExistsDone()
{
    //readyState of 4 or 'complete' represents that data has been returned
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){

        //Gather the results from the callback
        var str = xmlHttp.responseText;
        var myJson = JSON.parse(str);

        if(myJson.error)
        {
            showeMessage(myJson.emsgSummary);
            fieldError = true;
        }

        if(myJson.result != 0)
        {
            addClass(document.getElementById('FRvnumber'), 'form_error' );
            setIdText('vnError','Exists');
            showeMessage('Version already exists');
            fieldError = true;
        }
        else
        {
            removeClass(document.getElementById('FRvnumber'), 'form_error' );
            setIdText('vnError','');
        }
        MM_hideProgressBar();
    }
}

function checkReason()
{
   reseteMessage();
    MM_validateForm("--Silent",'FRreason','Reason for This Version','maxLength:4000');
    if ( ! document.MM_returnValue )
    {
        addClass(document.getElementById('FRreason'), 'form_error' );
        //setIdText('frError','Too Long');
        
        showeMessage(document.MM_error);
        fieldError = true;
    }
    else
    {
        removeClass(document.getElementById('FRreason'), 'form_error' );
        //setIdText('frError','');
    }
}

function reseteMessage()
{
    if (checkMode == 0 )
    {
        setIdText('eMessage','');
    }
}

function showeMessage(msg)
{
    var omsg;
    if (checkMode == 1 )
    {
        omsg = document.getElementById("eMessage").innerText;
        if ( omsg.length > 0 )
            omsg += '\n';
    }
    else
    {
        omsg = "";
    }
    omsg += msg;
    setIdText('eMessage',omsg);
}

// Do not remove these next few lines, otherwise the page does not load properly in Microsoft IE.
//-->
</script>

<script>


function Dependency()
{
<%If newPackage > 0 Then%>
   parent.window.location.href="dependencies.asp?rtag_id=<%=parRtag_id%>";
<%Else%>
   parent.window.location.href="dependencies.asp?rtag_id=<%=parRtag_id%>&pv_id=<%=parPv_id%>";
<%End If%>
}

////////////////////////////////////////////////////////////////////////////////////////////////////////
// This function returns true if form validation passes, else false
// It is called when a user hits the submit button.
////////////////////////////////////////////////////////////////////////////////////////////////////////

function validateFormNEWversion()
{
    var f = document.getElementById('NEWversion');

    if (f == null)
        alert('Failed To Get NEWversion');   // should never happen unless a coding/rendering mistake is made?
    else
    {
        setIdText('eMessage','');
        fieldError = false;
        checkMode = 1;
        checkPackage();
        checkBaseView();
        checkVersionNumber();
        checkReason();
        if (!fieldError)
        {
            MM_showProgressBar();
            f.action='_new_version.asp';
            parent.window.location.href='dependencies.asp?rtag_id=<%=parRtag_id%>&pv_id=<%=parPv_id%>';
            return true;
        }
    }

    // Hide progress bar that is exposed because the previous tests were OK
    MM_hideProgressBar();
    checkMode = 0;
    return false;
}

</script>

<table width="650" border="0" cellspacing="0" cellpadding="0">
   <tr>
      <td>
         <table width="100%" border="0" cellspacing="0" cellpadding="0">
            <tr>
               <td width="1%">&nbsp;</td>
               <td align="right"><img src="images/h_trsp_dot.gif" width="30" height="30"></td>
               <td width="1%">&nbsp;</td>
            </tr>
            <tr>
               <td width="1%">&nbsp;</td>
               <td>
                  <table width="100%" border="0" cellspacing="0" cellpadding="0">
                     <tr>
                        <td nowrap class="form_ttl"><%=parPage_title%></td>
                        <td align="right" valign="bottom">
                           <!-- TABS -->
                           &nbsp;
                        </td>
                     </tr>
                  </table>
               </td>
               <td width="1%">&nbsp;</td>
            </tr>
            <tr>
               <td align="left" valign="top" width="1%" 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"><!-- Heading --><img src="images/h_trsp_dot.gif" width="1" height="20"><!-- END Heading --></td>
               <td align="right" valign="top" width="1%" 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">
                  <!-- Body -->
                  <table width="100%" border="0" cellspacing="1" cellpadding="2">
                     <form id="NEWversion"  name="NEWversion" method="post">
                        <tr>
                           <td width="1%"><img src="images/h_trsp_dot.gif" width="1" height="10"></td>
                           <td width="1%" nowrap class="form_group" valign="bottom"></td>
                           <td nowrap width="100%" align="right" class="form_step"></td>
                        </tr>
                        <tr>
                           <td width="1%">&nbsp;</td>
                           <td colspan="2" width="1%" nowrap class="form_field">
                              <table width="100%" border="0" cellspacing="1" cellpadding="5">

                                 <!-- Package Name -->
                                 <tr>
                                    <td background="images/bg_form_lightbluedark.gif" width="20%" class="form_field">Package Name</td>
                                   <% if newPackage > 0 Then %>
                                        <td background="images/bg_form_lightgray.gif" class="form_item">
                                          <input type="text" id="FRpkgName" name="FRpkgName" class="form_item" size="40" value="<%=parPkgName%>" onBlur="checkPackage()">
                                          <span id="cpError"></span>
                                        </td>
                                    <% Else %>
                                        <td background="images/bg_form_lightgray.gif" class="form_field"><%=parPkgName%></td>
                                    <% End If %>
                                 </tr>

                                 <!--Base View -------------->
                                 <% if newPackage > 0 Then %>
                                    <tr>
                                        <td background="images/bg_form_lightbluedark.gif" width="20%" class="form_field">To Base View</td>
                                        <td colspan="2" width="1%" nowrap background="images/bg_form_lightgray.gif" class="form_item">
                                           <select name="base_view_id" id="base_view_id" class="form_item" onBlur="checkBaseView()">
                                              <option></option>
                                              <%Call Get_All_Base_Views(parBase_view_id)%>
                                           </select>
                                           <span id="bvError"></span>
                                        </td>
                                     </tr>

                                 <!--Personal View -------------->
                                   <%If QStrPar("Pview") <> "disable" Then%>
                                    <tr>
                                        <td background="images/bg_form_lightbluedark.gif" width="20%" class="form_field">To Personal View</td>
                                       <td colspan="2" width="1%" nowrap background="images/bg_form_lightgray.gif">
                                          <select name="personal_view_id" class="form_item">
                                             <option value="">None</option>
                                             <%Call Get_All_Personal_Views(objAccessControl.UserId )%>
                                          </select>
                                       </td>
                                    </tr>
                                    <%End If%>

                                 <!--Dummy Line to highlight New Package Data -------------->
                                    <tr>
                                        <td background="images/bg_form_lightbluedark.gif" width="20%" class="form_field"></td>
                                        <td background="images/bg_form_lightbluedark.gif" class="form_field"></td>
                                    </tr>
                                 <% End If %>

                                 <!--Version Number Assignment -------------->
                                 <tr>
                                    <td background="images/bg_form_lightbluedark.gif" width="20%" class="form_field">Version Number Assignment</td>
                                    <td background="images/bg_form_lightgray.gif" class="form_txt">
                                       <%
                                            Dim flagAuto, flagMan
                                            if bDisableAuto Then
                                                flagAuto = "disabled"
                                                flagMan = "checked"
                                            Else
                                                If bIsAuto Then
                                                    flagAuto = "checked"
                                                    flagMan = ""
                                                Else
                                                    flagAuto = ""
                                                    flagMan = "checked"
                                                End if
                                            End if
                                       %>
                                        <table>
                                        <tr>
                                            <td background="images/bg_form_lightgray.gif" class="form_txt">
                                        
                                            <input name="build_type" id="build_type" type="radio" value="A" <%=flagAuto%> onclick="changeToAutoVersionNumberAssignment();"> Auto
                                            <input name="build_type" id="build_type" type="radio" value="M" <%=flagMan%> onclick="changeToManualVersionNumberAssignment();"> Manual
                                        </td>
                                        </table>
                                    </td>
                                 </tr>

                                 <!-- New Version Number -->
                                 <tr>
                                    <td background="images/bg_form_lightbluedark.gif"  width="20%" class="form_field">New Version Number</td>
                                    <td>
                                        <table>
                                        <tr>
                                        <td background="images/bg_form_lightgray.gif" class="form_item">
                                            <input type="text" id="FRvnumber"
                                                    name="FRvnumber"
                                                    class="form_item" size="12" onBlur="checkVersionNumber()">
                                                    <span id="vnError"></span>
                                        </td>
                                           <td id="pkgver" background="images/bg_form_lightgray.gif" class="form_item">
                                           <%If NOT newPackage > 0 Then%>
                                              <select id="FRpkgver"  name="FRpkgver" class="form_item">
                                                 <option value=""></option>
                                                 <%
                                                 Set rsLatest = OraDatabase.DbCreateDynaset( Get_Latest_All_Ext( objPkgInfo.Item("pkg_id"), parPv_id ), cint(0))

                                                 If rsLatest.RecordCount > 0 Then
                                                    aVersions = rsLatest.GetRows()
                                                    lastRow = UBound( aVersions, 2 )
                                                    Set objSortHelper = New SortHelper

                                                    ' Sort versions
                                                    Call objSortHelper.VersionSort( aVersions, 0, lastRow, rsLatest.FieldIndex("pkg_version") )

                                                    ' Descending order
                                                    For i = lastRow To 0 Step -1
                                                    %>
                                                       <option value="<%=aVersions( rsLatest.FieldIndex("pkg_version"), i )%>" <%=aVersions( rsLatest.FieldIndex("selected"), i )%>>
                                                          <%If aVersions( rsLatest.FieldIndex("dlocked"), i ) = "Y" Then%>
                                                             R&nbsp;
                                                          <%Else%>
                                                             &nbsp;&nbsp;&nbsp;&nbsp;
                                                          <%End If%>
                                                          <%=aVersions( rsLatest.FieldIndex("pkg_version"), i )%>
                                                       </option>
                                                    <%
                                                    Next
                                                    Set objSortHelper = nothing

                                                 End If
                                                 %>
                                              </select>&nbsp;Existing Versions (For Reference Only)
                                           <%End If%>
                                           </td>
                                        </tr>
                                        </table>
                                    </td>
                                 </tr>
                                 <tr>
                                    <td background="images/bg_form_lightbluedark.gif" width="20%" class="form_field">Version Extension</td>
                                    <td background="images/bg_form_lightgray.gif" class="form_item">
                                       <DIV id="divVersionExt" name="divVersionExt">
                                          <select name="v_ext" id="v_ext" onchange="checkVersionNumber()">
                                             <%
                                             Call drawExtensionSelectBox( objPkgInfo.Item("v_ext"), true )
                                             %>
                                          </select>
                                       </DIV>
                                    </td>
                                 </tr>

                                 <!-- Reason For This Version -->
                                 <tr>
                                    <td background="images/bg_form_lightbluedark.gif" width="20%" class="form_field">Reason For This Version</td>
                                    <td background="images/bg_form_lightgray.gif" nowrap width="100%" class="form_field">
                                       <textarea name="FRreason" id="FRreason" class="form_item" style="width: 420px; height: 150px" onBlur="checkReason()"></textarea>
                                        <span id="frError"></span>
                                    </td>
                                 </tr>

                                <tr id="change_type">
                                   <td background="images/bg_form_lightbluedark.gif" nowrap width="20%" class="form_field">Change Type</td>
                                   <td background="images/bg_form_lightgray.gif" >
                                      <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                         <tr>
                                            <td width="1%">
                                              <%If bPatchOnly Then majorState = "disabled" %>
                                              <input name="change_type" type="radio" value="M" <%=majorState%>>
                                            </td>
                                            <td nowrap>
                                               <span class="form_field">Major Change</span>
                                            </td>
                                            <td>&nbsp;</td>
                                            <td>
                                               <span class="form_txt">A major number change indicates the contract of the package has changed in a non-backwardly compatible manner.</span>
                                            </td>
                                         </tr>
                                         <tr>
                                            <td colspan="4"><hr width="100%" size="1" noshade></td>
                                         </tr>
                                         <tr>
                                            <td width="1%">
                                              <%If bPatchOnly Then minorState = "disabled" %>
                                              <input name="change_type" type="radio" value="N" <%=minorState%>>
                                            </td>
                                            <td align="center" nowrap>
                                               <span class="form_field">Minor Change</span>
                                            </td>
                                            <td>&nbsp;</td>
                                            <td>
                                               <span class="form_txt">A minor number change indicates the contract of the package has changed in a backwardly compatible manner.</span>
                                            </td>
                                         </tr>
                                         <tr>
                                            <td colspan="4"><hr width="100%" size="1" noshade></td>
                                         </tr>
                                         <tr>
                                            <td width="1%">
                                               <input name="change_type" type="radio" value="P" <%=patchState%>>
                                            </td>
                                            <td nowrap>
                                               <span class="form_field">Patch Change</span>
                                            </td>
                                            <td>&nbsp;</td>
                                            <td>
                                               <span class="form_txt">A patch number change indicates the package has changed internally.</span>
                                            </td>
                                         </tr>
                                      </table>

                                   </td>
                                </tr>
                                 <tr>
                                    <td nowrap><img src="images/h_trsp_dot.gif" width="120" height="1"></td>
                                    <td></td>
                                 </tr>
                                 <input type="hidden" name="FRnewver" id="FRnewver" value="hello">
                                 <input type="hidden" name="OLDpv_id" value="<%=parPv_id%>">
                                 <input type="hidden" name="rtag_id" value="<%=parRtag_id%>">
                                 <input type="hidden" name="newPackage" value="<%=newPackage%>">
                                 <% if NOT (newPackage > 0) Then %>
                                 <input type="hidden" id="FRpkgName" name="FRpkgName" value="<%=parPkgName%>">
                                 <%End If%>
                              </table>
                           </td>
                        </tr>
                        <tr>
                           <td width="1%">&nbsp;</td>
                           <td width="1%" nowrap class="form_field"><img src="images/h_trsp_dot.gif" width="1" height="1"></td>
                           <td nowrap width="100%" class="body_scol">
                              <input type="submit" name="btn" value="Submit" class="form_btn" onClick="return validateFormNEWversion();">
                              <input type="reset" name="btn" value="Cancel" class="form_btn" onClick="Dependency();">
                              <SPAN id="ProgressBar" name="ProgressBar" style="visibility:hidden;"><img src="images/i_processing.gif" width="11" height="17" align="absmiddle" hspace="3">Processing...</SPAN>
                              <br><br>
                           </td>
                           <tr><td id="eMessage" colspan=3 class="err_alert">ERROR: Page Java script did not load</td><tr>
                        </tr>
                     </form>
                  </table>
                  <!-- END Body-->
               </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>