Avatar of Craig Lambie
Craig Lambie
Flag for Australia asked on

ASP Classic Page load/Display time issues

Hi Experts,

I am writing to query a page load issue with a Page created using ASP classic.

You can see on the code insert that the page loads within the same second according to the start and end TimeStamps written by the ASP.
The page then does't display for 3 seconds, let alone run the JS Function to set some values on the page.

This is happening with a few of my pages that have larger amounts of data on them.
Any ideas on why this happens?

IE 6
ASP classic
HTML

Cheers

C
<HTML><HEAD><TITLE>Money Market Desk - [Quasar]</TITLE><LINK TYPE=text/css REL=stylesheet HREF=/eucapps/FXManager/css/clientinfo.css></HEAD>
 
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
 
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
 
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
 
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
 
//-->
 
function switchpage(select) {
 var index;
 
 for(index=0; index<select.options.length; index++)
   if(select.options[index].selected)
      {
        if(select.options[index].value!="")
          window.location.href=select.options[index].value;
        break;
      }
}
 
</script> 
<BODY topmargin=0 leftmargin=0 ><table width=100% class=menu cellpadding=0 cellspacing=0><tr><td height=30 align=left valign=middle class=title><table class=menu width=100% cellspacing=0 cellpadding=0><tr><td class=title><img src=images/spacer.gif width=5px height=1px><img src=/EUCApps/FXManager/images/Pru_Logo_DEV.gif ></td><td class=title><td class=title><div align=right></td></td></tr></table></td></tr><tr height=1><td class=mainmenuItem></td></tr><tr height=1><td class=lite></td></tr><tr height=20><td class=mainmenu height=20><table class=menu cellpadding=0 cellspacing=0><tr><td class=lite width=1></td><td height=20 width=84 class=MainMenuButton><a class=menu href=/eucApps/FXManager/Menu/Instructions/Instructions.asp>Instructions</td><td class=dark width=1></td><td class=lite width=1></td><td height=20 width=119 class=MainMenuButton><a class=menu href=/eucApps/FXManager/Menu/FXFwdsDiary/FXFwdsDiary.asp>FX Forwards Diary</td><td class=dark width=1></td><td class=lite width=1></td><td height=20 width=80 class=MainMenuButtonSelected><a class=menu href=/eucApps/FXManager/Menu/Quasar/Quasar.asp>M&G Quasar</td><td class=dark width=1></td><td class=lite width=1></td><td height=20 width=80 class=MainMenuButton><a class=menu href=/eucApps/FXManager/Menu/Dealing/PreDealing.asp>Dealing</td><td class=dark width=1></td><td class=lite width=1></td><td height=20 width=80 class=MainMenuButton><a class=menu href=/eucApps/FXManager/Menu/Fastloader/Exec_FL.asp>Fastloader</td><td class=dark width=1></td><td class=lite width=1></td></tr></table></td></tr><tr height=1><td class=dark></td></tr><tr height=1><td class=lite></td></tr><tr height=3><td class=mainmenu></td></tr><tr height=2><td class=dark></td></tr><tr height=15><td class=nav></td></tr></table><script>
 
function ImageOver(selimage){
	eval('document.images.item("' + selimage + '").src = "../../images/' + selimage + '_Over.gif"')
}
 
function ImageOff(selimage){
	eval('document.images.item("' + selimage + '").src = "../../images/' + selimage + '.gif"')
}
 
</script>
 
 
 
<LINK rel="stylesheet" type="text/css" href="../../CSS/clientinfo.css">
 
<script type="text/javascript" src="../../includes/sorttable.js"></script>
<script type="text/javascript" src="../../includes/selectbox.js"></script>
 
 
<script language="VBScript" type="text/VBScript">
 
 
 
Function txtAmount_onblur(intID)
dim IncDec
 
IncDec = "txtAmount" & intID
 
If document.frmQuasar.elements(IncDec).value = "" then
	document.frmQuasar.elements(IncDec).value  = "0.00"
end if
 
End Function
 
</script>
 
<script type="text/javascript" src="../../includes/CalendarPopupComb.js"></script>
<script type="text/javascript" src="../../includes/inc_formatting.js"></script>
<script type="text/javascript" src="../../includes/ajax.js"></script>
 
 
<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
 
var cal18 = new CalendarPopup("caldiv");
cal18.setCssPrefix("TEST");
cal18.offsetX = 80;
cal18.offsetY = -8;
 
function MoveBal(RowID) {	
	if (currentControl==RowID) {		
		
		//alert(unformatCurrency(document.frmQuasar.elements("txtBalInc" + RowID).value)*-1);
		
		if (unformatCurrency(document.frmQuasar.elements("txtBalInc" + RowID).value) < 0) {
				document.frmQuasar.elements("txtAmount" + RowID).value= formatCurrency(unformatCurrency(document.frmQuasar.elements("txtBalInc" + RowID).value) * -1);
			}
			else {
				document.frmQuasar.elements("txtAmount" + RowID).value= document.frmQuasar.elements("txtBalInc" + RowID).value;
			}		
	}
}
 
var currentControl;
 
function txtAmountOnF(intID) {
	currentControl= intID;
	if (document.frmQuasar.elements('txtAmount' + intID).value == '0' || document.frmQuasar.elements('txtAmount' + intID).value == '0.00') {
		document.frmQuasar.elements('txtAmount' + intID).value  = '';
	}
}
 
function txtAmountOC(varRowID) {
	UpdateMorT(document.frmQuasar.elements('txtAmount'+ varRowID));
	ValidateLine(varRowID);
}
 
 
function ValidateLine(varRowID) {
	//test this line and enable "create" if all fields have a value
 
var varValidateArray = [];
var varSplitable = ('txtBS,txtCCYb,txtAmount,txtCCYc,txtValueDate');
var varInvalid = false;
	
	varValidateArray = varSplitable.split(',');
 
		for (i=0;i<varValidateArray.length;i++) {
			
			//alert(document.frmQuasar.elements(varValidateArray[i]+varRowID).value);
			//alert(document.frmQuasar.elements(varValidateArray[i]+varRowID).name);
			if (document.frmQuasar.elements(varValidateArray[i]+varRowID).value == '' || document.frmQuasar.elements(varValidateArray[i]+varRowID).value == '0.00' || document.frmQuasar.elements(varValidateArray[i]+varRowID).value == '0') {
				varInvalid = true;
				break;
			}				
		}
		
	
		
		//if all fields have a value then enable create button
		if (varInvalid==false) {
			document.frmQuasar.elements('butCreateInst'+varRowID).disabled = false;
		}
}
 
function CreateInstruction (varRowID, varFundCode) {
	
	//Disable Button
	document.frmQuasar.elements('butCreateInst'+varRowID).disabled = false;
	
		if (CheckAmount(varRowID) != true) {
			return;
		}
 
	//create Posting HTTP
var PostingHTTP = 'strFundCode=' + varFundCode;
	PostingHTTP = PostingHTTP + '&strValueDate=' + document.frmQuasar.elements('txtValueDate'+varRowID).value;
	PostingHTTP = PostingHTTP + '&strFXQuasarID=' + document.frmQuasar.elements('txtFXQuasarID'+varRowID).value;
	PostingHTTP = PostingHTTP + '&strCCY=' + document.frmQuasar.elements('txtCCYb'+varRowID).value;
	PostingHTTP = PostingHTTP + '&strAmount=' + document.frmQuasar.elements('txtAmount'+varRowID).value;
	
	if (document.frmQuasar.elements('txtBS'+varRowID).value == 'B') {
		PostingHTTP = PostingHTTP + '&strBuyCCY=' + document.frmQuasar.elements('txtCCYb'+varRowID).value;
		PostingHTTP = PostingHTTP + '&strSellCCY=' + document.frmQuasar.elements('txtCCYc'+varRowID).value;
	} else {
		PostingHTTP = PostingHTTP + '&strBuyCCY=' + document.frmQuasar.elements('txtCCYc'+varRowID).value;
		PostingHTTP = PostingHTTP + '&strSellCCY=' + document.frmQuasar.elements('txtCCYb'+varRowID).value;
	}
 
	//send to Ajax
	//document.write(PostingHTTP);
	//document.location.href = '../../Forms/frmAddFXQuasarInst.asp?'+PostingHTTP;
	GenericAjax('../../Forms/frmAddFXQuasarInst.asp?'+PostingHTTP,'MarkDone('+varRowID+')');
 
}
 
function CheckAmount(varRowID) {
	var frm = document.frmQuasar;
	var varCCYBalInc = unformatCurrency(frm.elements('txtBalInc'+varRowID).value);
	var varAmount = unformatCurrency(frm.elements('txtAmount'+varRowID).value);
	
	if (varCCYBalInc < 0) {
		varCCYBalInc = varCCYBalInc * -1;
	}
	
	var var5Perc = varCCYBalInc * 0.05;
	var TotalToCheck = var5Perc + varCCYBalInc;
	
	
	if (varAmount > TotalToCheck) {
		var varInput_Box = confirm('You have input an Amount greater than 5% of total, continue?');
		if (varInput_Box != true) {
			return false;
		} else {
			return true;
		}
	} else {
		return true;
	}
}
 
function MarkDone(varRowID) { //Indicate Completed on Button 
document.frmQuasar.elements('butCreateInst'+varRowID).value = 'Instructed';
 
	//lock down Fields
var varLockArray = [];
var varSplitable = ('txtBS,txtCCYb,txtAmount,txtCCYc,txtValueDate,butCreateInst')
 
	varLockArray = varSplitable.split(',');
 
	for (i=0;i<varLockArray.length;i++) {
		document.frmQuasar.elements(varLockArray[i]+varRowID).disabled = true;
		}
 
}
 
</Script>
 
 
<body onload="javascript:fncOnLoad();">
	
Start Load: 18/07/2008 09:37:14<table cellpadding=2 cellspacing=2>
<form name=frmQuasar method='post' action='Quasar.asp'>
	<tr>
<td><SELECT type=text name=txtCustodian id=txtCustodian><Option Value=0></Option><Option Value=BBH>BBH</Option>
<Option Value=BONY>BONY</Option>
<Option Value=JPM>JPM</Option>
<Option Value=NORT>NORT</Option>
</Select></td>
		<td>
					<SELECT name=txtCCYFilter id=txtCCYFilter>
						<option value=0></option>
						<Option Value=GBP>GBP</Option>
 
 
					</SELECT>
		</td>
<td><SELECT type=text name=txtFundCode id=txtFundCode>
	<Option Value=0></Option>
 
 
</Select></td>
		<td>
			<INPUT type=Submit name=butSubmit id=butSubmit value=Filter>
		</td>
	</tr>
Start SQL Open: 18/07/2008 09:37:14End SQL Open: 18/07/2008 09:37:14<tr>
	<th class=Bonds>Custodian</td>
	<th class=Bonds>CCY</td>
	<th class=Bonds>Fund Code</td>
	<th class=Bonds>Quasar</td>
	<th class=Bonds>TT</td>
	<th class=Bonds>Date</td>
	<th class=Bonds>CCY Bal Inc</td>
	<th class=Bonds>CCY Bal Ex</td>
	<th class=Bonds>Buy/ Sell</td>
	<th class=Bonds>CCY</td>
	<th class=Bonds>Amount</td>
	<th class=Bonds>Contra CCY</td>
	<th class=Bonds>Contra Amount<font class=subscript>E</font></td>
	<th class=Bonds>Value Date</td>
	<th class=Bonds>Create<br>Instruction</td>
</tr>
<tr>
	<td class=Bonds>NORT</td>
	<td class=Bonds>
		<INPUT type=text class=Bonds name=txtCCYa0 id=txtCCYa0 value="GBP" size=3></td>
	<td class=Bonds>COR</td>
	<td class=Bonds>1855</td>
	<td class=Bonds></td>
	<td class=Bonds>18/07/2008</td>
	<td class=Bonds>
		<INPUT type=text class=Bonds name=txtBalInc0 id=txtBalInc0 value="3,449,357.69" onclick="javascript:MoveBal(0);"></td>
	<td class=Bonds><div align=right>3,449,357.69</div></td>
		<INPUT type=hidden name=txtFXQuasarID0 id=txtFXQuasarID0 value="2501">
	<td class=Bonds>
	<SELECT name=txtBS0 id=txtBS0 onchange="javascript:ValidateLine(0);">
		<option value=0></option>
		<option value=B>Buy</option>
		<option value=S>Sell</option>
	</td>
	<td class=Bonds>
	<SELECT name=txtCCYb0 id=txtCCYb0 onchange="javascript:ValidateLine(0);">
		<option value=0></option>
	</td>
	<td class=Bonds>
		<INPUT type=text class=rightalign name=txtAmount0 id=txtAmount0 value=0.00 size=12 onfocus="javascript:txtAmountOnF(0);" onblur=txtAmount_onblur(0) onchange="javascript:txtAmountOC(0);">
	</td>
	<td class=Bonds>
	<SELECT name=txtCCYc0 id=txtCCYc0 onchange="javascript:ValidateLine(0);">
		<option value=0></option>
	</td>
	<td class=Bonds>
		<INPUT type=text class=readonly name=txtContraAmount0 id=txtContraAmount0 value="0.00" size=12 >
		<INPUT type=hidden name=txtDefContraCCY0 id=txtdefContraCCY0 value="GBP">
	</td>
	<td class=Bonds>
		<INPUT type=text name=txtValueDate0 id=txtValueDate0 onclick="javascript:cal18.select(document.frmQuasar.txtValueDate0,'txtValueDate0','dd/MM/yyyy'); return false;" value=22/07/2008 size=7 onchange="javascript:ValidateLine(0);">
	</td>
	<td class=Bonds>
		<INPUT type=Button disabled name=butCreateInst0 id=butCreateInst0 value="Create" onclick="javascript:CreateInstruction(0,'COR');">
	</td>
</tr>
 
 
......
Repeated for 90 TRs
.....
 
	<td class=Bonds>
		<INPUT type=text class=readonly name=txtContraAmount90 id=txtContraAmount90 value="0.00" size=12 >
		<INPUT type=hidden name=txtDefContraCCY90 id=txtdefContraCCY90 value="USD">
	</td>
	<td class=Bonds>
		<INPUT type=text name=txtValueDate90 id=txtValueDate90 onclick="javascript:cal18.select(document.frmQuasar.txtValueDate90,'txtValueDate90','dd/MM/yyyy'); return false;" value=22/07/2008 size=7 onchange="javascript:ValidateLine(90);">
	</td>
	<td class=Bonds>
		<INPUT type=Button disabled name=butCreateInst90 id=butCreateInst90 value="Create" onclick="javascript:CreateInstruction(90,'SPGT');">
	</td>
</tr>
</table>
<INPUT type=hidden name=intRowCount id=intRowCount value=91>
</form>
<DIV ID="caldiv" STYLE="position:absolute;visibility:hidden;background-color:white;layer-background-color:white;"></DIV>End Load: 18/07/2008 09:37:14
 
 
<SCRIPT LANGUAGE="JavaScript">
 
function fncOnLoad() {
 
alert(Date());
 
for (i=0;i<this.frmQuasar.intRowCount.value;i++) {
	
	Selectbox.selectOnlyOptions(this.frmQuasar.elements("txtCCYb" + i), '^'+this.frmQuasar.elements("txtCCYa"+i).value+'$');
	
}
 
alert(Date());
 
} //end On Load
</SCRIPT>

Open in new window

Web Languages and StandardsJavaScriptASP

Avatar of undefined
Last Comment
Craig Lambie

8/22/2022 - Mon
Badotz

What a mishmash!

You have 2  tags - not sure why - and you are >including< files all over the place.

I would start by organizing your CSS >links< and script >includes<. Ideally they would all appear in the  section of the page.

Remove any >onload< script from the  tag and use >window.onload< to run script when the page first loads.
Craig Lambie

ASKER
Hi Badotz,

The top of the ASP looks like (Attached)
Hence the includes all over the shop, sorry....
Tidied it up a little...

I have removed the 2nd body tag, I added that as on onload for this page, but obviously there is one in the inc_Header already...

I have added
response.buffer=true
response.flush

to no avail.

Note: the SELECTs are missing their OPTIONs
there is around 100 Options in each one, that I am writing out using the
strCCYOptList- per the ASP attached.

Thoughts?

C






 
<!--#include Virtual="/EUCApps/FXManager/includes/inc_Header.asp"-->
 
<!--#include Virtual="/EUCApps/FXManager/includes/inc_ClientFunctions.asp"-->
<!--#include Virtual="/EUCApps/FXManager/includes/inc_db_connect.asp"-->
<!--#include Virtual="/EUCApps/FXManager/includes/inc_db_MMDesk_connect.asp"-->
<!--#include Virtual="/EUCApps/FXManager/includes/inc_Functions.asp"-->
<!--#include Virtual="/EUCApps/MoneyMarkets/includes/inc_NextBusDay.asp"-->
 
 
<LINK rel="stylesheet" type="text/css" href="../../CSS/clientinfo.css">
 
<script type="text/javascript" src="../../includes/sorttable.js"></script>
<script type="text/javascript" src="../../includes/selectbox.js"></script>
<script type="text/javascript" src="../../includes/ajax.js"></script>
<script type="text/javascript" src="../../includes/CalendarPopupComb.js"></script>
<script type="text/javascript" src="../../includes/inc_formatting.js"></script>
<script type="text/javascript" src="../../includes/ajax.js"></script>
 
<script language="VBScript" type="text/VBScript">
 
 
 
Function txtAmount_onblur(intID)
dim IncDec
 
IncDec = "txtAmount" & intID
 
If document.frmQuasar.elements(IncDec).value = "" then
	document.frmQuasar.elements(IncDec).value  = "0.00"
end if
 
End Function
 
</script>
 
 
 
 
<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
 
var cal18 = new CalendarPopup("caldiv");
cal18.setCssPrefix("TEST");
cal18.offsetX = 80;
cal18.offsetY = -8;
 
function MoveBal(RowID) {	
	if (currentControl==RowID) {		
		
		//alert(unformatCurrency(document.frmQuasar.elements("txtBalInc" + RowID).value)*-1);
		
		if (unformatCurrency(document.frmQuasar.elements("txtBalInc" + RowID).value) < 0) {
				document.frmQuasar.elements("txtAmount" + RowID).value= formatCurrency(unformatCurrency(document.frmQuasar.elements("txtBalInc" + RowID).value) * -1);
			}
			else {
				document.frmQuasar.elements("txtAmount" + RowID).value= document.frmQuasar.elements("txtBalInc" + RowID).value;
			}		
	}
}
 
var currentControl;
 
function txtAmountOnF(intID) {
	currentControl= intID;
	if (document.frmQuasar.elements('txtAmount' + intID).value == '0' || document.frmQuasar.elements('txtAmount' + intID).value == '0.00') {
		document.frmQuasar.elements('txtAmount' + intID).value  = '';
	}
}
 
function txtAmountOC(varRowID) {
var frm = document.frmQuasar;
	UpdateMorT(frm.elements('txtAmount'+ varRowID));
	
	if (frm.elements('txtCCYb'+varRowID).value != '' && frm.elements('txtCCYc'+varRowID).value !='') {
		
		/*
		document.location.href = "../../forms/frmGenericADOrs.asp?strSQL="+
								"EXEC spFX_GetCurrentRate @chCCYLHS="+frm.elements('txtCCYb'+varRowID).value+
								", @chCCYRHS="+frm.elements('txtCCYc'+varRowID).value;
		*/					
								
		//Calc Contra Amount
		GenericAjax("../../forms/frmGenericADOrs.asp?strSQL="+
								"EXEC spFX_GetCurrentRate @chCCYLHS="+frm.elements('txtCCYb'+varRowID).value+
								", @chCCYRHS="+frm.elements('txtCCYc'+varRowID).value, 
								'CalcContra(xmlHttp.responseText,'+varRowID+')');
	} //end if
	
	ValidateLine(varRowID);
} //end txtAmountOC
 
function CalcContra(varRate, varRowID) {
var frm = document.frmQuasar;
 
	var varCalc = ( unformatCurrency(frm.elements('txtAmount'+varRowID).value) + varRate ) ;
	frm.elements('txtContraAmount'+varRowID).value = formatCurrency( eval(varCalc) );
	
} //end CalcContra
			
 
function ValidateLine(varRowID) {
	//test this line and enable "create" if all fields have a value
 
var varValidateArray = [];
var varSplitable = ('txtBS,txtCCYb,txtAmount,txtCCYc,txtValueDate');
var varInvalid = false;
	
	varValidateArray = varSplitable.split(',');
 
		for (i=0;i<varValidateArray.length;i++) {
			
			//alert(document.frmQuasar.elements(varValidateArray[i]+varRowID).value);
			//alert(document.frmQuasar.elements(varValidateArray[i]+varRowID).name);
			if (document.frmQuasar.elements(varValidateArray[i]+varRowID).value == '' || document.frmQuasar.elements(varValidateArray[i]+varRowID).value == '0.00' || document.frmQuasar.elements(varValidateArray[i]+varRowID).value == '0') {
				varInvalid = true;
				break;
			}				
		}
		
	
		
		//if all fields have a value then enable create button
		if (varInvalid==false) {
			document.frmQuasar.elements('butCreateInst'+varRowID).disabled = false;
		}
}
 
function CreateInstruction (varRowID, varFundCode) {
	
	//Disable Button
	document.frmQuasar.elements('butCreateInst'+varRowID).disabled = false;
	
		if (CheckAmount(varRowID) != true) {
			return;
		}
 
	//create Posting HTTP
var PostingHTTP = 'strFundCode=' + varFundCode;
	PostingHTTP = PostingHTTP + '&strValueDate=' + document.frmQuasar.elements('txtValueDate'+varRowID).value;
	PostingHTTP = PostingHTTP + '&strFXQuasarID=' + document.frmQuasar.elements('txtFXQuasarID'+varRowID).value;
	PostingHTTP = PostingHTTP + '&strCCY=' + document.frmQuasar.elements('txtCCYb'+varRowID).value;
	PostingHTTP = PostingHTTP + '&strAmount=' + document.frmQuasar.elements('txtAmount'+varRowID).value;
	
	if (document.frmQuasar.elements('txtBS'+varRowID).value == 'B') {
		PostingHTTP = PostingHTTP + '&strBuyCCY=' + document.frmQuasar.elements('txtCCYb'+varRowID).value;
		PostingHTTP = PostingHTTP + '&strSellCCY=' + document.frmQuasar.elements('txtCCYc'+varRowID).value;
	} else {
		PostingHTTP = PostingHTTP + '&strBuyCCY=' + document.frmQuasar.elements('txtCCYc'+varRowID).value;
		PostingHTTP = PostingHTTP + '&strSellCCY=' + document.frmQuasar.elements('txtCCYb'+varRowID).value;
	}
 
	//send to Ajax
	//document.write(PostingHTTP);
	//document.location.href = '../../Forms/frmAddFXQuasarInst.asp?'+PostingHTTP;
	GenericAjax('../../Forms/frmAddFXQuasarInst.asp?'+PostingHTTP,'MarkDone('+varRowID+')');
 
}
 
function CheckAmount(varRowID) {
	var frm = document.frmQuasar;
	var varCCYBalInc = unformatCurrency(frm.elements('txtBalInc'+varRowID).value);
	var varAmount = unformatCurrency(frm.elements('txtAmount'+varRowID).value);
	
	if (varCCYBalInc < 0) {
		varCCYBalInc = varCCYBalInc * -1;
	}
	
	var var5Perc = varCCYBalInc * 0.05;
	var TotalToCheck = var5Perc + varCCYBalInc;
	
	
	if (varAmount > TotalToCheck) {
		var varInput_Box = confirm('You have input an Amount greater than 5% of total, continue?');
		if (varInput_Box != true) {
			return false;
		} else {
			return true;
		}
	} else {
		return true;
	}
}
 
function MarkDone(varRowID) { //Indicate Completed on Button 
document.frmQuasar.elements('butCreateInst'+varRowID).value = 'Instructed';
 
	//lock down Fields
var varLockArray = [];
var varSplitable = ('txtBS,txtCCYb,txtAmount,txtCCYc,txtValueDate,butCreateInst')
 
	varLockArray = varSplitable.split(',');
 
	for (i=0;i<varLockArray.length;i++) {
		document.frmQuasar.elements(varLockArray[i]+varRowID).disabled = true;
		}
 
}
 
</Script>
 
 
<%
response.buffer=true
'response.write "Start Load: " & now()
dim objRec, strCCYOptList, intRowCount, strClass, strCCYBalInc, strCCYBalEx, strClass2
 
dim strSQLCrit, strComma
 
'response.write "StartASP: " & now()
 
Set objRec = Server.CreateObject("ADODB.RecordSet")	
 
 
		'Currency Filter Option
		'Create Trans Type List Selection
				strSQL =  "SELECT '<Option Value=' + chCurCode + '>' + chCurCode +  '</Option>'" & _
							" FROM tblCurrency " & _
							"  " _
							& " ORDER BY CASE chCurCode " _
								& " WHEN 'GBP' THEN 1 " _
								& " WHEN 'USD' THEN 3 " _
								& " WHEN 'EUR' THEN 2 " _
								& " WHEN '998' THEN 101 " _
								& " WHEN '999' THEN 102 " _
								& " ELSE 100 " _
								& " END, chCurCode" 
							
				objRec.Open strSQL, objSQLMMDeskConn,0,1
			
				If objRec.EOF = false then 				
					strCCYOptList	= objRec.GetString
				else
					strCCYOptList	= "<option value=0></option>"
				end if
				objRec.Close
				
Dim rsTable
 
 
	'Create Instruction for 1 Balance, Fund Disappears (with that CCY)
 
 
Response.Write "<table cellpadding=2 cellspacing=2>" & vbcrlf
 
Response.Write "<form name=frmQuasar method='post' action='Quasar.asp'>" & vbcrlf
 
 
Response.Write "	<tr>" & vbcrlf
 
'Bank Filter
				strSQL = "SELECT DISTINCT '<Option Value=' + vchCustodian + '>' + vchCustodian +  '</Option>'  " _
				        & " FROM tblFXQuasar " _
								& " WHERE CAST(sdtDate as int) > CAST(GETDATE() as int)"
								
				'response.write strSQL 
				objRec.Open strSQL, objSQLMMDeskConn,0,1
				
				If objRec.EOF = false then 
					Response.Write "<td><SELECT type=text name=txtCustodian id=txtCustodian><Option Value=0></Option>" & objRec.GetString & "</Select></td>" & vbcrlf
				else
					Response.Write "<td><SELECT type=text name=txtCustodian id=txtCustodian><Option Value=0></Option></Select></td>" & vbcrlf
				end if
				objRec.Close
 
 
'CCY Filter
Response.Write "		<td>" & vbcrlf
Response.Write "					<SELECT name=txtCCYFilter id=txtCCYFilter>" & vbcrlf
Response.Write "						<option value=0></option>" & vbcrlf
Response.Write "						" & strCCYOptList & vbcrlf
Response.Write "					</SELECT>" & vbcrlf
Response.Write "		</td>" & vbcrlf
 
'Fund Code Filter
				strSQL = "SELECT DISTINCT '<Option Value=' + vchFundCode + '>' + vchFundCode +  '</Option>'  " _
				        & " FROM tblFXQuasar " _
								& " WHERE CAST(sdtDate as int) > CAST(GETDATE() as int)"
								
				'response.write strSQL 
				objRec.Open strSQL, objSQLMMDeskConn,0,1
				
				If objRec.EOF = false then 
					Response.Write "<td><SELECT type=text name=txtFundCode id=txtFundCode><Option Value=0></Option>" & objRec.GetString & "</Select></td>" & vbcrlf
				else
					Response.Write "<td><SELECT type=text name=txtFundCode id=txtFundCode><Option Value=0></Option></Select></td>" & vbcrlf
				end if
				objRec.Close
 
'Submit Button
Response.Write "		<td>" & vbcrlf
Response.Write "			<INPUT type=Submit name=butSubmit id=butSubmit value=Filter>" & vbcrlf
Response.Write "		</td>" & vbcrlf
 
Response.Write "	</tr>" & vbcrlf
	
	'Setup Query
	If Request.Form("txtCustodian") <> "" AND Request.Form("txtCustodian") <> "0" then
		strSQLCrit = strSQLCrit & " @vchCustodian='" & Request.Form("txtCustodian") & "' "
		strComma = ", "
	end if
	
	'FundCode
	If Request.Form("txtFundCode") <> "" AND Request.Form("txtFundCode") <> "0" then
		strSQLCrit = strSQLCrit & strComma & " @vchFundCode='" & Request.Form("txtFundCode") & "' " 
		strComma = ", "
	end if
	
	'CCY
	If Request.Form("txtCCYFilter") <> "" AND Request.Form("txtCCYFilter") <> "0" then
		strSQLCrit = strSQLCrit & strComma & " @chCCY='" & Request.Form("txtCCYFilter") & "' "
		strComma = ", "
	end if
	
 strSQL = "EXEC spFX_Quasar " & strSQLCrit
 
'response.write strSQL 
'response.write "Open: " & now()
'response.write "Start SQL Open: " & now()
    Set rsTable = CreateObject("ADODB.Recordset")
    
    rsTable.Open strSQL, objSQLMMDeskConn, 0, 1
 
'response.write "End SQL Open: " & now()
 
 intRowCount = 0
 
    'Create Fields for Instructions
    if rsTable.EOF <> True then    
	    
	    	response.write "<tr>"	& vbcrlf
					
					'For i = 0 To rsTable.Fields.Count - 2
						'Response.Write "	<th class=Bonds>" & rsTable.Fields(i).Name & "</th>"
					'next
					Response.write "	<th class=Bonds>Custodian</td>" & vbcrlf
					Response.write "	<th class=Bonds>CCY</td>" & vbcrlf
					Response.write "	<th class=Bonds>Fund Code</td>" & vbcrlf
					Response.write "	<th class=Bonds>Quasar</td>" & vbcrlf
					Response.write "	<th class=Bonds>TT</td>" & vbcrlf
					Response.write "	<th class=Bonds>Date</td>" & vbcrlf
					Response.write "	<th class=Bonds>CCY Bal Inc</td>" & vbcrlf
					Response.write "	<th class=Bonds>CCY Bal Ex</td>" & vbcrlf
					
					Response.write "	<th class=Bonds>Buy/ Sell</td>" & vbcrlf
					Response.write "	<th class=Bonds>CCY</td>" & vbcrlf
					Response.write "	<th class=Bonds>Amount</td>" & vbcrlf
					Response.write "	<th class=Bonds>Contra CCY</td>" & vbcrlf
					Response.write "	<th class=Bonds>Contra Amount<font class=subscript>E</font></td>" & vbcrlf
					
					Response.write "	<th class=Bonds>Value Date</td>" & vbcrlf		
					
					Response.write "	<th class=Bonds>Create<br>Instruction</td>" & vbcrlf
					
				response.write "</tr>" & vbcrlf
	    
	    'Input Data to Table
	    
	    	strFundCodeMaster = rsTable.Fields("Fund Code").Value
	    	strClass = "Bonds"
	    	
	    Do Until rsTable.EOF
					
			'		response.write "StartTDs: " & now()
					
					if rsTable.Fields("Fund Code").Value <> strFundCodeMaster then
						strFundCodeMaster = rsTable.Fields("Fund Code").Value
						if strClass = "Bonds" then
							strClass = "BondsLight"
						else
							strClass = "Bonds"
						end if
					end if
					
					
					
					response.write "<tr>"	& vbcrlf
 
					'Custodian
					Response.Write "	<td class=" & strClass & ">" & rsTable.Fields("Custodian").Value & "</td>" & vbcrlf
					
					'CCY
					Response.Write "	<td class=" & strClass & ">" & vbcrlf
					Response.Write "		<INPUT type=text class=" & strClass & " name=txtCCYa" & intRowCount & " id=txtCCYa" & intRowCount & " value=""" & rsTable.Fields("CCY").Value & """ size=3></td>" & vbcrlf
					
					'Fund Code
					Response.Write "	<td class=" & strClass & ">" & rsTable.Fields("Fund Code").Value & "</td>" & vbcrlf
					
					'Quasar
					Response.Write "	<td class=" & strClass & ">" & rsTable.Fields("Quasar").Value & "</td>" & vbcrlf
					
					'TT
					Response.Write "	<td class=" & strClass & ">" & rsTable.Fields("TT").Value & "</td>" & vbcrlf
					
					'Date
					Response.Write "	<td class=" & strClass & ">" & rsTable.Fields("Date").Value & "</td>" & vbcrlf
					
					strCCYBalInc = f7Deci(rsTable.Fields("CCY Balance Inc").Value)
					
					if strCCYBalInc < 0 then 
						strClass2 = strClass & "Neg"
					else
						strClass2 = strClass
					end if
					
					'CCY Bal Inc
					Response.Write "	<td class=" & strClass & ">" & vbcrlf
					Response.Write "		<INPUT type=text class=" & strClass2 & " name=txtBalInc" & intRowCount & " id=txtBalInc" & intRowCount & " value=""" & strCCYBalInc & """ onclick=""javascript:MoveBal(" & intRowCount & ");""></td>" & vbcrlf
					
					strCCYBalEx = f7Deci(rsTable.Fields("CCY Balance Ex").Value)
					
					if strCCYBalEx < 0 then 
						strClass2 = strClass & "Neg"
					else
						strClass2 = strClass
					end if
					
					'CCY Bal Ex
					Response.Write "	<td class=" & strClass2 & "><div align=right>" & strCCYBalEx & "</div></td>" & vbcrlf						
	        
	        'Hidden INPUT for ID Field
	        Response.Write "		<INPUT type=hidden name=txtFXQuasarID" & intRowCount & " id=txtFXQuasarID" & intRowCount & " value=""" & rsTable.Fields("intFXQuasarID").value & """>" & vbcrlf
					
					'Action Keys
					Response.Write "	<td class=" & strClass & ">" & vbcrlf
					Response.Write "	<SELECT name=txtBS" & intRowCount & " id=txtBS" & intRowCount & " onchange=""javascript:ValidateLine(" & intRowCount & ");"">" & vbcrlf & _
												 "		<option value=0></option>" & vbcrlf & _
												 "		<option value=B>Buy</option>" & vbcrlf & _
												 "		<option value=S>Sell</option>" & vbcrlf 
					Response.Write "	</SELECT>" & vbcrlf
					Response.Write "	</td>" & vbcrlf
					
					'CCY Base
					Response.Write "	<td class=" & strClass & ">" & vbcrlf
					Response.Write "	<SELECT name=txtCCYb" & intRowCount & " id=txtCCYb" & intRowCount & " onchange=""javascript:ValidateLine(" & intRowCount & ");"">" & vbcrlf & _
												 "		<option value=0></option>" & vbcrlf & _
												 strCCYOptList
					Response.Write "	</SELECT>" & vbcrlf
					Response.Write "	</td>" & vbcrlf
					
					'Amount
					Response.Write "	<td class=" & strClass & ">" & vbcrlf
					Response.Write "		<INPUT type=text class=rightalign name=txtAmount" &intRowCount & " id=txtAmount" & intRowCount & " value=0.00 size=12 onfocus=""javascript:txtAmountOnF(" & intRowCount & ");"" onblur=txtAmount_onblur(" & intRowCount & ") onchange=""javascript:txtAmountOC(" & intRowCount & ");"">" & vbcrlf
					Response.Write "	</td>" & vbcrlf
					
					'CCY Contra
					Response.Write "	<td class=" & strClass & ">" & vbcrlf
					Response.Write "	<SELECT name=txtCCYc" & intRowCount & " id=txtCCYc" & intRowCount & " onchange=""javascript:ValidateLine(" & intRowCount & ");"">" & vbcrlf & _
												 "		<option value=0></option>" & vbcrlf & _
												 strCCYOptList
					Response.Write "	</SELECT>" & vbcrlf
					Response.Write "	</td>" & vbcrlf
					
					Response.Write "	<td class=" & strClass & ">" & vbcrlf
					Response.Write "		<INPUT type=text class=readonly name=txtContraAmount" &intRowCount & " id=txtContraAmount" & intRowCount & " value=""0.00"" size=12 >" & vbcrlf
					Response.Write "		<INPUT type=hidden name=txtDefContraCCY" &intRowCount & " id=txtdefContraCCY" & intRowCount & " value=""" & rsTable.Fields("chFXBaseCCY").value & """>" & vbcrlf
					Response.Write "	</td>" & vbcrlf
					
					'Value Date
					Response.Write "	<td class=" & strClass & ">" & vbcrlf
					Response.Write "		<INPUT type=text name=txtValueDate" & intRowCount & " id=txtValueDate" & intRowCount & " onclick=""javascript:cal18.select(document.frmQuasar.txtValueDate" & intRowCount & ",'txtValueDate" & intRowCount & "','dd/MM/yyyy'); return false;"" value=" & strNBDPlus1 & " size=7 onchange=""javascript:ValidateLine(" & intRowCount & ");"">" & vbcrlf
					Response.Write "	</td>" & vbcrlf
					
					'Create Button
					Response.Write "	<td class=" & strClass & ">" & vbcrlf
					Response.Write "		<INPUT type=Button disabled name=butCreateInst" & intRowCount & " id=butCreateInst" & intRowCount & " value=""Create"" onclick=""javascript:CreateInstruction(" & intRowCount & ",'" & rsTable.Fields("Fund Code").Value & "');"">" & vbcrlf
					Response.Write "	</td>" & vbcrlf
					
					
	        Response.Write "</tr>" & vbcrlf
	        
	        
	        intRowCount = intRowCount + 1
	        rsTable.MoveNext
	        
	     '   response.write "EndTD: " & now()
	        
	    Loop
 
	End If
	
	rsTable.close
	
	set rsTable = nothing
	
	Response.Write "</table>" & vbcrlf
 
Response.Write "<INPUT type=hidden name=intRowCount id=intRowCount value=" & intRowCount & ">" & vbcrlf
 
Response.Write "</form>" & vbcrlf
 
Response.Write "<DIV ID=""caldiv"" STYLE=""position:absolute;visibility:hidden;background-color:white;layer-background-color:white;""></DIV>"
 
 
'response.write " End Load: " & now() 
 
response.flush 
%>
 
 
<SCRIPT LANGUAGE="JavaScript">
 
//alert(Date());
 
for (i=0;i<this.frmQuasar.intRowCount.value;i++) {
	
	Selectbox.selectOnlyOptions(this.frmQuasar.elements("txtCCYb" + i), '^'+this.frmQuasar.elements("txtCCYa"+i).value+'$');
	if (this.frmQuasar.elements("txtdefContraCCY"+i).value != '') {
		Selectbox.selectOnlyOptions(this.frmQuasar.elements("txtCCYc" + i), '^'+this.frmQuasar.elements("txtdefContraCCY"+i).value+'$');
	} //end if
}
 
//alert(Date());
 
</SCRIPT>
 
<!--#include Virtual="/EUCApps/FXManager/includes/inc_Footer.asp"-->

Open in new window

Badotz

Your line 216:

strSQL =  "SELECT '' + chCurCode +  ''" & _

I would try:

strSQL =  "'<option Value=' & Chr(34) & chCurCode & Chr(34) & '>' & chCurCode &  '</option>'" & _

and line 233:

strCCYOptList      = "<option value=0></option>"

I would try:

strCCYOptList      = "<option value='0'></option>"

since all HTML element attributes *should be* quoted strings.
Experts Exchange is like having an extremely knowledgeable team sitting and waiting for your call. Couldn't do my job half as well as I do without it!
James Murphy
Craig Lambie

ASKER
I tried your line for 216, and adjusted slightly too
      strSQL =  "SELECT '' + chCurCode +  ''" & _

This actually slowed the page load down signicantly...?

Added the quoted strings around the other <option> Elements too.

C
Badotz

Do you get the <option> elements now?
Craig Lambie

ASKER
I always did get them, no issues with those, the issue is with the speed the page is loading...

I have limited the number of Records the Query brings back, and now the page is signicantly faster than before...

6 secs downs to 1sec.

But I am having similar issues on other pages...?

I was thinking of adding an onfocus event to add the SELECT OPTIONs when they go to select it, would save stacks of code in the onload, and might make the page faster... altougth, I can imagine the gap would be significant when they change it?

Have you used this approach before?

C
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
Badotz

You said:

>>to no avail.
>>
>>Note: the SELECTs are missing their OPTIONs

That sounded, to me, like you were *not* getting the <option> elements.
Craig Lambie

ASKER
Sorry, not too clear there obviously.

What I meant is that I didn't give you 50000 lines of code, as the  elements are mostly repeated several times throughout the code....(ie. around 200 times...)

Thoughts?
Badotz

50,000 OPTION elements? That might be part of the slowing down, eh?
All of life is about relationships, and EE has made a viirtual community a real community. It lifts everyone's boat
William Peck
Craig Lambie

ASKER
well, yes, I guess it would be...

200 x 100 options.....

So the issue is the page rendering...
Hence my thought about using the onfocus event of the SELECTs to add the options....

C
Badotz

If you limit the option elements, my guess is the page rendering will be moot.
Craig Lambie

ASKER
moot, what is moot?
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
Badotz

If the slow page rendering is due to the 20,000 option elements, reducing the number of option elements will "fix" the slow page rendering.
Craig Lambie

ASKER
ok,  have removed about 47000 excess lines of code, and added the Options to a JS array, which I call on the onfocus event of the SELECT.

The page is still reasonably slow considering it has been reduced in size by 000s of lines???

Not sure what else to do...

The ASP/ Db calls are not the issue, it is not the onload function.
It is comletely the page render...??

ASKER CERTIFIED SOLUTION
Badotz

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
Craig Lambie

ASKER
Ok,
Thanks for your help, I think we have gone as far as practically possible.

Cheers
I started with Experts Exchange in 2004 and it's been a mainstay of my professional computing life since. It helped me launch a career as a programmer / Oracle data analyst
William Peck