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_idDim rsLocRelDim parPage_titleDim objPkgInfoDim rsTemp2Dim rsLatestDim aVersionsDim lastRow, iDim objSortHelperDim newPackageDim majorStateDim minorStateDim patchStateDim parBase_view_idDim verNumberDim 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 <> "" ) ThennewPackage = 1parPv_id = NULLElsenewPackage = 0End ifmajorState = ""minorState = ""patchState = "checked"Set objPkgInfo = CreateObject("Scripting.Dictionary")'-----------------------------------------------------------------------------------------------------------------------------Sub GetPackageInfo( nPvId, outPkgInfo )Dim rsTemp, Query_StringIf (IsEmpty(nPvId) OR newPackage > 0) Then Exit SubQuery_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 ="& nPvIdSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) ThenoutPkgInfo.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") <> "" ThenoutPkgInfo.Item("v_ext") = rsTemp.Fields("v_ext")ElseoutPkgInfo.Item("v_ext") = ""End IfEnd IfrsTemp.CloseSet rsTemp = nothingEnd 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_idEnd 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_StringHasCotsExtension = FALSEif aExt <> "" ThenQuery_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)) ThenHasCotsExtension = TRUEEnd IfrsQry.CloseElseHasCotsExtension = TRUEend IfSet rsQry = NothingEnd 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 RegExpre.Pattern = "\.\d{4,}\.[^\.]+$"HasPatchBuildNumber = re.Test(aversion)Set re = NothingEnd Function'-------------------------------------------------------------------------------------------------------------'Returns TRUE if the specified version has a well formed version numberFunction HasWellFormedVersion(aversion)'If a package has a major.minor.patch-build number then it is well formedDim re: Set re = New RegExpre.Pattern = "^\d+\.\d+\.\d{4,}\.[^\.]+$"HasWellFormedVersion = re.Test(aversion)Set re = NothingEnd Function'-----------------------------------------------------------------------------------------------------------------------------Sub Get_All_Base_Views ( NNnewgroup_id )Dim rsTemp, Query_StringQuery_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")) ThenResponse.write "<option value='"& rsTemp("view_id") &"' selected>"& rsTemp("view_name") &"</option>"ElseResponse.write "<option value='"& rsTemp("view_id") &"'>" & rsTemp("view_name") &"</option>"End IfrsTemp.MoveNextWEndrsTemp.CloseSet rsTemp = nothingEnd Sub'-----------------------------------------------------------------------------------------------------------------------------Sub Get_All_Personal_Views ( NNuser_id )Dim rsTemp, Query_StringIf NNuser_id = "" Then Exit SubQuery_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.MoveNextWEndrsTemp.CloseSet rsTemp = nothingEnd Sub'-----------------------------------------------------------------------------------------------------------------------------%><%'===================== MAIN LINE ============================Dim bDisableAuto, bPatchOnly, bIsCots, bIsAutoIf NOT (newPackage > 0 ) ThenCall GetPackageInfo( parPv_id, objPkgInfo )parPkgName = objPkgInfo.Item("pkg_name")' Extract version number without extensionverNumber = 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 optionbIsAuto = NOT bDisableAutoElse' If New Package and First versionparPage_title = "NEW PACKAGE and FIRST VERSION"bIsCots = FALSEbDisableAuto = FALSEbPatchOnly = FALSEbIsAuto = TRUEmajorState = "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 messagesetIdText('eMessage','');}function setIdText(id, text) {var element = document.getElementById(id);if ( element ) {while (element.firstChild!==null)element.removeChild(element.firstChild); // remove all existing contentelement.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 synchronousxmlHttp.send(null);}}function checkPackageDone(){//readyState of 4 or 'complete' represents that data has been returnedif (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){//alert("Got to checkPackageDone"+ xmlHttp.responseText);//Gather the results from the callbackvar 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 processingvar versionExt = document.all['v_ext'].value;var versionBase = document.all['FRvnumber'].value;document.all['FRnewver'].value = versionBase + versionExt;// check the version number is goodMM_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 synchronousxmlHttp.send(null);}}function checkVersionExistsDone(){//readyState of 4 or 'complete' represents that data has been returnedif (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){//Gather the results from the callbackvar 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 OKMM_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%"> </td><td align="right"><img src="images/h_trsp_dot.gif" width="30" height="30"></td><td width="1%"> </td></tr><tr><td width="1%"> </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 --> </td></tr></table></td><td width="1%"> </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%"> </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, flagManif bDisableAuto ThenflagAuto = "disabled"flagMan = "checked"ElseIf bIsAuto ThenflagAuto = "checked"flagMan = ""ElseflagAuto = ""flagMan = "checked"End ifEnd 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 ThenaVersions = rsLatest.GetRows()lastRow = UBound( aVersions, 2 )Set objSortHelper = New SortHelper' Sort versionsCall objSortHelper.VersionSort( aVersions, 0, lastRow, rsLatest.FieldIndex("pkg_version") )' Descending orderFor 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 <%Else%> <%End If%><%=aVersions( rsLatest.FieldIndex("pkg_version"), i )%></option><%NextSet objSortHelper = nothingEnd If%></select> 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> </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> </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> </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%"> </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"> </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>