var MARKETCODE_TREASURY = "Treasury";
var MARKETCODE_AGENCY = "Agency";
var MARKETCODE_MUNICIPAL = "Municipal";
var MARKETCODE_CORPORATE = "Corporate";

var SECURITYTYPE_DISCOUNT = "D";
var SECURITYTYPE_FIXEDINTERESTRATE = "FIR";
var SECURITYTYPE_FIXEDINTERESTRATE_NOTE = "FIR_N";
var SECURITYTYPE_INFLATIONINDEXED = "II";
var SECURITYTYPE_INTERESTATMATURITY = "IAM";
var SECURITYTYPE_PERPETUALPREFERRED = "PP";
var SECURITYTYPE_PREFERRED = "P";
var SECURITYTYPE_STEPPEDINTERESTRATE = "SIR";
var SECURITYTYPE_STEPPEDINTERESTRATE_NOTE = "SIR_N";
var SECURITYTYPE_ZEROINTERESTRATE = "ZIR";

var index;

var securityTypes = new Array();
index = MARKETCODE_TREASURY;
securityTypes[index] = new Array();
securityTypes[index][0] = new Option("Bill", SECURITYTYPE_DISCOUNT, true, true);
securityTypes[index][1] = new Option("Note", SECURITYTYPE_FIXEDINTERESTRATE_NOTE, false, false);
securityTypes[index][2] = new Option("Bond", SECURITYTYPE_FIXEDINTERESTRATE, false, false);
securityTypes[index][3] = new Option("Inflation-indexed", SECURITYTYPE_INFLATIONINDEXED, false, false);
securityTypes[index][4] = new Option("STRIP", SECURITYTYPE_ZEROINTERESTRATE, false, false);
index = MARKETCODE_AGENCY;
securityTypes[index] = new Array();
securityTypes[index][0] = new Option("Fixed Coupon Bond", SECURITYTYPE_FIXEDINTERESTRATE, true, true);
securityTypes[index][1] = new Option("Zero Coupon Bond", SECURITYTYPE_ZEROINTERESTRATE, false, false);
securityTypes[index][2] = new Option("Stepped Coupon Bond", SECURITYTYPE_STEPPEDINTERESTRATE, false, false);
securityTypes[index][3] = new Option("Discount Note", SECURITYTYPE_DISCOUNT, false, false);
securityTypes[index][4] = new Option("Interest at Maturity", SECURITYTYPE_INTERESTATMATURITY, false, false);
index = MARKETCODE_MUNICIPAL;
securityTypes[index] = new Array();
securityTypes[index][0] = new Option("Fixed Rate Bond", SECURITYTYPE_FIXEDINTERESTRATE, true, true);
securityTypes[index][1] = new Option("Stepped Coupon Bond", SECURITYTYPE_STEPPEDINTERESTRATE, false, false);
securityTypes[index][2] = new Option("Zero Coupon Bond", SECURITYTYPE_ZEROINTERESTRATE, false, false);
securityTypes[index][3] = new Option("Note", SECURITYTYPE_INTERESTATMATURITY, false, false);
securityTypes[index][4] = new Option("Discount Note", SECURITYTYPE_DISCOUNT, false, false);
index = MARKETCODE_CORPORATE;
securityTypes[index] = new Array();
securityTypes[index][0] = new Option("Fixed Coupon Bond", SECURITYTYPE_FIXEDINTERESTRATE, true, true);
securityTypes[index][1] = new Option("Stepped Coupon Bond", SECURITYTYPE_STEPPEDINTERESTRATE, false, false);
securityTypes[index][2] = new Option("Zero Coupon Bond", SECURITYTYPE_ZEROINTERESTRATE, false, false);
securityTypes[index][3] = new Option("Interest at Maturity", SECURITYTYPE_INTERESTATMATURITY, false, false);
securityTypes[index][4] = new Option("Medium Term Note", SECURITYTYPE_FIXEDINTERESTRATE_NOTE, false, false);
securityTypes[index][5] = new Option("Preferred Security", SECURITYTYPE_PREFERRED, false, false);
securityTypes[index][6] = new Option("Perpetual Preferred Security", SECURITYTYPE_PERPETUALPREFERRED, false, false);
securityTypes[index][7] = new Option("Floating Rate Note", SECURITYTYPE_STEPPEDINTERESTRATE_NOTE, false, false);
securityTypes[index][8] = new Option("Discount Note", SECURITYTYPE_DISCOUNT, false, false);

var QUOTEVALUETYPE_PRICE = "P";
var QUOTEVALUETYPE_YIELD = "Y";
var QUOTEVALUETYPE_SPREAD = "S";
var QUOTEVALUETYPE_DISCOUNT = "D";

var quoteValueTypes = new Array();
index = "Default";
quoteValueTypes[index] = new Array();
quoteValueTypes[index][0] = new Option("Price", QUOTEVALUETYPE_PRICE, true, true);
quoteValueTypes[index][1] = new Option("Yield", QUOTEVALUETYPE_YIELD, false, false);
quoteValueTypes[index][2] = new Option("Spread", QUOTEVALUETYPE_SPREAD, false, false);
index = "Discount";
quoteValueTypes[index] = new Array();
quoteValueTypes[index][0] = new Option("Discount", QUOTEVALUETYPE_DISCOUNT, true, true);
quoteValueTypes[index][1] = new Option("Price", QUOTEVALUETYPE_PRICE, false, false);
quoteValueTypes[index][2] = new Option("Yield", QUOTEVALUETYPE_YIELD, false, false);
quoteValueTypes[index][3] = new Option("Spread", QUOTEVALUETYPE_SPREAD, false, false);

var DAYCOUNTBASIS_30_360 = "30/360";
var DAYCOUNTBASIS_ACT_360 = "ACT/360";
var DAYCOUNTBASIS_ACT_365 = "ACT/365";
var DAYCOUNTBASIS_ACT_ACT = "ACT/ACT";

function populateSecurityType( formName, marketCode ) {
	var optionsArray = securityTypes[marketCode];

	selectElement = document.getElementById(formName + ":securityType");
	selectElement.options.length = 0;
	for ( i=0; i < optionsArray.length; i++ ) selectElement.options[i] = optionsArray[i];
}

function populateQuoteValueType( formName, securityType ) {
	var optionsArray;

	if (securityType == SECURITYTYPE_DISCOUNT) optionsArray = quoteValueTypes["Discount"];
	else optionsArray = quoteValueTypes["Default"];

	selectElement = document.getElementById(formName + ":quoteValueType");
	selectElement.options.length = 0;
	for ( i=0; i < optionsArray.length; i++ ) selectElement.options[i] = optionsArray[i];
}

function setElementsVisibility( formName, securityType ) {
	var element;

//window.alert("Entering setElementsVisibility(" + formName + "," + securityType + ")");
	element = document.getElementById(formName + ":faceValueLabel");
//	if (securityType == SECURITYTYPE_PERPETUALPREFERRED
//		|| securityType == SECURITYTYPE_PREFERRED) element.style.visibility = "visible";
//	else element.style.visibility = "hidden";
	if (securityType == SECURITYTYPE_PERPETUALPREFERRED
		|| securityType == SECURITYTYPE_PREFERRED) element.disabled = false;
	else element.disabled = true;
	element = document.getElementById(formName + ":faceValue");
//	if (securityType == SECURITYTYPE_PERPETUALPREFERRED
//		|| securityType == SECURITYTYPE_PREFERRED) element.style.visibility = "visible";
//	else element.style.visibility = "hidden";
	if (securityType == SECURITYTYPE_PERPETUALPREFERRED
		|| securityType == SECURITYTYPE_PREFERRED) element.disabled = false;
	else element.disabled = true;

	element = document.getElementById(formName + ":interestRateLabel");
	if (securityType != SECURITYTYPE_DISCOUNT
		&& securityType != SECURITYTYPE_STEPPEDINTERESTRATE
		&& securityType != SECURITYTYPE_STEPPEDINTERESTRATE_NOTE
//		&& securityType != SECURITYTYPE_ZEROINTERESTRATE) element.style.visibility = "visible";
		&& securityType != SECURITYTYPE_ZEROINTERESTRATE) element.disabled = false;
//	else element.style.visibility = "hidden";
	else element.disabled = true;
	element = document.getElementById(formName + ":interestRate");
	if (securityType != SECURITYTYPE_DISCOUNT
		&& securityType != SECURITYTYPE_STEPPEDINTERESTRATE
		&& securityType != SECURITYTYPE_STEPPEDINTERESTRATE_NOTE
//		&& securityType != SECURITYTYPE_ZEROINTERESTRATE) element.style.visibility = "visible";
		&& securityType != SECURITYTYPE_ZEROINTERESTRATE) element.disabled = false;
//	else element.style.visibility = "hidden";
	else element.disabled = true;

	element = document.getElementById(formName + ":maturityDateLabel");
//	if (securityType != SECURITYTYPE_PERPETUALPREFERRED) element.style.visibility = "visible";
	if (securityType != SECURITYTYPE_PERPETUALPREFERRED) element.disabled = false;
//	else element.style.visibility = "hidden";
	else element.disabled = true;
	element = document.getElementById(formName + ":maturityDate");
//	if (securityType != SECURITYTYPE_PERPETUALPREFERRED) element.style.visibility = "visible";
	if (securityType != SECURITYTYPE_PERPETUALPREFERRED) element.disabled = false;
//	else element.style.visibility = "hidden";
	else element.disabled = true;

	element = document.getElementById(formName + ":firstInterestDateLabel");
	if (securityType == SECURITYTYPE_FIXEDINTERESTRATE
		|| securityType == SECURITYTYPE_FIXEDINTERESTRATE_NOTE
		|| securityType == SECURITYTYPE_INFLATIONINDEXED
		|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE
//		|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE_NOTE) element.style.visibility = "visible";
		|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE_NOTE) element.disabled = false;
//	else element.style.visibility = "hidden";
	else element.disabled = true;
	element = document.getElementById(formName + ":firstInterestDate");
	if (securityType == SECURITYTYPE_FIXEDINTERESTRATE
		|| securityType == SECURITYTYPE_FIXEDINTERESTRATE_NOTE
		|| securityType == SECURITYTYPE_INFLATIONINDEXED
		|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE
//		|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE_NOTE) element.style.visibility = "visible";
		|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE_NOTE) element.disabled = false;
//	else element.style.visibility = "hidden";
	else element.disabled = true;

	element = document.getElementById(formName + ":lastInterestDateLabel");
	if (securityType == SECURITYTYPE_FIXEDINTERESTRATE
		|| securityType == SECURITYTYPE_FIXEDINTERESTRATE_NOTE
		|| securityType == SECURITYTYPE_INFLATIONINDEXED
		|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE
//		|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE_NOTE) element.style.visibility = "visible";
		|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE_NOTE) element.disabled = false;
//	else element.style.visibility = "hidden";
	else element.disabled = true;
	element = document.getElementById(formName + ":lastInterestDate");
	if (securityType == SECURITYTYPE_FIXEDINTERESTRATE
		|| securityType == SECURITYTYPE_FIXEDINTERESTRATE_NOTE
		|| securityType == SECURITYTYPE_INFLATIONINDEXED
		|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE
//		|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE_NOTE) element.style.visibility = "visible";
		|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE_NOTE) element.disabled = false;
//	else element.style.visibility = "hidden";
	else element.disabled = true;

	element = document.getElementById(formName + ":interestFrequencyLabel");
//	if (securityType != SECURITYTYPE_DISCOUNT) element.style.visibility = "visible";
	if (securityType != SECURITYTYPE_DISCOUNT) element.disabled = false;
//	else element.style.visibility = "hidden";
	else element.disabled = true;
	element = document.getElementById(formName + ":interestFrequency");
//	if (securityType != SECURITYTYPE_DISCOUNT) element.style.visibility = "visible";
	if (securityType != SECURITYTYPE_DISCOUNT) element.disabled = false;
//	else element.style.visibility = "hidden";
	else element.disabled = true;
window.alert("Exiting setElementsVisibility");
return;
	element = document.getElementById(formName + ":interestRateSteps");
	if (securityType == SECURITYTYPE_STEPPEDINTERESTRATE
//		|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE_NOTE) element.style.visibility = "visible";
		|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE_NOTE) element.disabled = false;
//	else element.style.visibility = "hidden";
	else element.disabled = true;

	element = document.getElementById(formName + ":addInterestRateStep");
	if (securityType == SECURITYTYPE_STEPPEDINTERESTRATE
//		|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE_NOTE) element.style.visibility = "visible";
		|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE_NOTE) element.disabled = false;
//	else element.style.visibility = "hidden";
	else element.disabled = true;

	element = document.getElementById(formName + ":clearInterestRateSteps");
	if (element != null) {
		if (securityType == SECURITYTYPE_STEPPEDINTERESTRATE
//			|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE_NOTE) element.style.visibility = "visible";
			|| securityType == SECURITYTYPE_STEPPEDINTERESTRATE_NOTE) element.disabled = false;
//		else element.style.visibility = "hidden";
		else element.disabled = true;
	}

	element = document.getElementById(formName + ":calls");
//	if (securityType != SECURITYTYPE_DISCOUNT) element.style.visibility = "visible";
	if (securityType != SECURITYTYPE_DISCOUNT) element.disabled = false;
//	else element.style.visibility = "hidden";
	else element.disabled = true;

	element = document.getElementById(formName + ":addCall");
//	if (securityType != SECURITYTYPE_DISCOUNT) element.style.visibility = "visible";
	if (securityType != SECURITYTYPE_DISCOUNT) element.disabled = false;
//	else element.style.visibility = "hidden";
	else element.disabled = true;

	element = document.getElementById(formName + ":clearCalls");
	if (element != null) {
//		if (securityType != SECURITYTYPE_DISCOUNT) element.style.visibility = "visible";
		if (securityType != SECURITYTYPE_DISCOUNT) element.disabled = false;
//		else element.style.visibility = "hidden";
		else element.disabled = true;
	}
}

function initializeDocument(formName, securityType) {
//	populateQuoteValueType(formName, securityType);
	setElementsVisibility(formName, securityType);
}

function clearForm(formName, form, marketCode, securityType) {
	var element;
	var emptyString = "";
	var defaultSettlementDate;
	var defaultDayCountBasis;
	var defaultEomAdjust;


window.alert("Entering clearForm...");

//if (form == null) window.alert("form is null");
	element = form[formName + ":quantity"];
	element.value = emptyString;
	element = form[formName + ":quoteValueType"];
	if (securityType == SECURITYTYPE_DISCOUNT) element.value = QUOTEVALUETYPE_DISCOUNT;
	else element.value = QUOTEVALUETYPE_PRICE;
	element = form[formName + ":quoteValue"];
	element.value = emptyString;
	element = form[formName + ":concession"];
	element.value = emptyString;

	element = form[formName + ":settlementDate"];
	if (marketCode == MARKETCODE_TREASURY) {
		defaultSettlementDate = form[formName + ":defaultTreasurySettlementDate"].value;
	}
	else if (marketCode == MARKETCODE_AGENCY) {
		defaultSettlementDate = form[formName + ":defaultAgencySettlementDate"].value;
	}
	else if (marketCode == MARKETCODE_CORPORATE) {
		defaultSettlementDate = form[formName + ":defaultCorporateSettlementDate"].value;
	}
	else if (marketCode == MARKETCODE_MUNICIPAL) {
		defaultSettlementDate = form[formName + ":defaultMunicipalSettlementDate"].value;
	}
//if (defaultSettlementDate == null) window.alert("defaultSettlementDate is null");
	element.value = defaultSettlementDate;

	element = form[formName + ":faceValue"];
	element.value = emptyString;
	element = form[formName + ":interestRate"];
	element.value = emptyString;
	element = form[formName + ":maturityDate"];
	element.value = emptyString;
	element = form[formName + ":issueDate"];
	element.value = emptyString;
	element = form[formName + ":firstInterestDate"];
	element.value = emptyString;
	element = form[formName + ":lastInterestDate"];
	element.value = emptyString;
	element = form[formName + ":interestFrequency"];
	element.value = "2";  // Semi-annual

	if (marketCode == MARKETCODE_TREASURY) {
		if (securityType == SECURITYTYPE_DISCOUNT) dayCountBasis = DAYCOUNTBASIS_ACT_360;
		else dayCountBasis = DAYCOUNTBASIS_ACT_ACT;
		defaultEomAdjust = true;
	}
	else if (marketCode == MARKETCODE_AGENCY) {
		if (securityType == SECURITYTYPE_DISCOUNT) dayCountBasis = DAYCOUNTBASIS_ACT_360;
		else dayCountBasis = DAYCOUNTBASIS_30_360;
		defaultEomAdjust = false;
	}
	else if (marketCode == MARKETCODE_CORPORATE) {
		if (securityType == SECURITYTYPE_INTERESTATMATURITY) dayCountBasis = DAYCOUNTBASIS_ACT_365;
		else dayCountBasis = DAYCOUNTBASIS_30_360;
		defaultEomAdjust = true;
	}
	else if (marketCode == MARKETCODE_MUNICIPAL) {
		if (securityType == SECURITYTYPE_INTERESTATMATURITY) dayCountBasis = DAYCOUNTBASIS_ACT_365;
		else dayCountBasis = DAYCOUNTBASIS_30_360;
		defaultEomAdjust = true;
	}
	element = form[formName + ":dayCountBasis"];
	element.value = dayCountBasis;
	element = form[formName + ":eomAdjust"];
	element.checked = defaultEomAdjust;

	return false;
}
