function startup() {
	init(); 
	periodChange(); 
	reloadIns();  
	usingA=false; 
	useDefinedRates(); 
	chg = true; 
	checkDepAmt(); 
	calcAll();
}

function EnableDisable(objname, enableTF){
	obj=document.getElementById(objname);
	if (enableTF == true) { obj.className = 'SecEnabled'; }
	else { obj.className = 'SecDisabled'; }
}

function removeBackgrounder(rateArr) {
	var tmpVal = '';
	for (count = 0; count != rateArr.length-1; count ++) {
		tmpVal = rateArr[count][0];
		if (tmpVal.substring(0,1) == '<') {
			// Contains backgrounder link
			for (pos = 0; pos < tmpVal.length; pos++) {
				if (tmpVal.substring(pos, pos+3) == '<u>') { tmpVal = tmpVal.substring(pos+3, tmpVal.length); }
			}
			for (pos = 0; pos < tmpVal.length; pos++) {
				if (tmpVal.substring(pos, pos+4) == '</u>') { tmpVal = tmpVal.substring(0, pos); }
			}
			rateArr[count][0] = tmpVal;	}}
}

removeBackgrounder(annrate);
removeBackgrounder(semrate);
removeBackgrounder(quarate);
removeBackgrounder(monrate);

var myRate;
var myRate2;
var myRateBak;
var myRateBak2;
var usingA = false;
var currentArray;
var chg = false;
var inslock = false;

function init() {
	currentArray = 0;
	// initialize mouse events
	document.onmouseup = mouseUp
	if (is.ns) document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP)
	reloadIns();
}

function mouseUp(e) {
	if (is.ns && e.target!=document) routeEvent(e)
	// other mouseUp code
	calcAll();
	return true
}

function showHinfo1() {
	myRate = hbar1.getValue();
	myRate = myRate / 10000; myRateBak = myRate;
	myRate2 = hbar2.getValue();
	myRate2 = myRate2 / 10000; myRateBak2 = myRate2;
	var periods = document.calc.compounds[document.calc.compounds.selectedIndex].value;
	myRate = myRate / periods;	myRate2 = myRate2 / periods;
	writetolayer('rate1desc', '<div align="right"><B><font face=arial size=2 color=white class="arial2">First Rate </font><font face=arial size=2 color="#CCCCFF" class="arial2">(' + addzeros(myRateBak*100) + '%)</font></b></div>');
	writetolayer('ratelayer', '<div align="center"><font face=verdana size=1 color=#FFFF99 class="verdana1"><B>' + addzeros(myRateBak*100) + '%</B></FONT></div>');
	writetolayer('rate2desc', '<div align="right"><B><font face=arial size=2 color=white class="arial2">Second Rate </font><font face=arial size=2 color="#CCCCFF" class="arial2">(' + addzeros(myRateBak2*100) + '%)</font></b></div>');
	writetolayer('ratelayer2', '<div align="center"><font face=verdana size=1 color=#FFFF99 class="verdana1"><B>' + addzeros(myRateBak2*100) + '%</B></FONT></div>');
	usingA = true;
//	changesignal();
}

function useDefinedRates() {
	myRate = Number(document.calc.ins1[document.calc.ins1.selectedIndex].value) / 100; myRateBak = myRate;
	myRate2 = Number(document.calc.ins2[document.calc.ins2.selectedIndex].value) / 100; myRateBak2 = myRate2;
//	document.calc.ins2.selectedIndex = (document.calc.ins2.length - 1);	
	document.calc.rateDate1.value = rateArray[document.calc.ins1.selectedIndex][1];
	document.calc.rateDate2.value = rateArray[document.calc.ins2.selectedIndex][1];
	document.calc.rank1.value = document.calc.ins1.selectedIndex + 1;
	document.calc.rank2.value = document.calc.ins2.selectedIndex + 1;
	document.calc.rankmax.value = document.calc.ins1.length;
	writetolayer('rate1desc', '<div align="right"><B><font face=arial size=2 color=white class="arial2">First Rate </font><font face=arial size=2 color="#CCCCFF" class="arial2">(' + (Math.round((myRate * 100) *100) / 100) + '%)</font></b></div>');	
	writetolayer('rate2desc', '<div align="right"><B><font face=arial size=2 color=white class="arial2">Second Rate </font><font face=arial size=2 color="#CCCCFF" class="arial2">(' + (Math.round((myRate2 * 100)*100) / 100) + '%)</font></b></div>');
	var periods = document.calc.compounds[document.calc.compounds.selectedIndex].value;
	myRate = myRate / periods;
	myRate2 = myRate2 / periods;
	var rootdown1 = Number(document.calc.ins1[document.calc.ins1.selectedIndex].value);
	var rootdown2 = Number(document.calc.ins2[document.calc.ins2.selectedIndex].value);
	hbar1.setValue(rootdown1*100); writetolayer('ratelayer', '<div align=center><font face=verdana size=1 color=#FFFF99 class=verdana1><B>' + addzeros(rootdown1) + '%</B></FONT></div>');
	hbar2.setValue(rootdown2*100); writetolayer('ratelayer2', '<div align=center><font face=verdana size=1 color=#FFFF99 class=verdana1><B>' + addzeros(rootdown2) + '%</B></FONT></div>');
	usingA = false;
}

function periodChange() {
	var periods = document.calc.compounds[document.calc.compounds.selectedIndex].value;
	myRate = myRateBak;
	myRate2 = myRateBak2;
	myRate = myRate / periods;
	myRate2 = myRate2 / periods;
}

function killVals(refVal) {
	for (var i=document.calc[refVal].length; i > -1; i=i-1) {
		document.calc[refVal].options[i] = null;
	}
}

function killResults() {
	writetolayer('result1','');
	writetolayer('result2','');
	writetolayer('diff','');
	writetolayer('diff3','');
	writetolayer('intacc1','');
	writetolayer('intacc2','');
	writetolayer('intpaid1','');
	writetolayer('intpaid2',''); }

function trim(inputString) {
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") { retValue = retValue.substring(1, retValue.length); ch = retValue.substring(0, 1); }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") { retValue = retValue.substring(0, retValue.length-1); ch = retValue.substring(retValue.length-1, retValue.length); }
   while (retValue.indexOf("  ") != -1) { retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); }
   return retValue;
}

function reloadIns() {

	if (inslock == true) {
		var ins1name = document.calc.ins1[document.calc.ins1.selectedIndex].text;
		var ins2name = document.calc.ins2[document.calc.ins2.selectedIndex].text;
		ins1name = ins1name.substr(0, ins1name.indexOf('(')-1);
		ins2name = ins2name.substr(0, ins2name.indexOf('(')-1);
	}

	writetolayer('intpaiddesc','<b><font face="Arial, sans-serif" size="2" color="#FFFF66" class="arial2">Payment '+document.calc.compounds[document.calc.compounds.selectedIndex].text+'</font></b>');
	// Change array if neccesary
	var periods = document.calc.compounds[document.calc.compounds.selectedIndex].value;
	if (periods == 1 && !(currentArray == 1)) { 
		currentArray == 1;
		rateArray = new Array();
		rateArray = annrate; }
	else if (periods == 2 && !(currentArray == 2)) { 
		currentArray == 2;
		rateArray = new Array();
		rateArray = semrate; }
	else if (periods == 4 && !(currentArray == 3)) { 
		currentArray == 3;
		rateArray = new Array();
		rateArray = quarate; }
	else if (periods == 12 && !(currentArray == 4)) { 
		currentArray == 4;
		rateArray = new Array();
		rateArray = monrate; }

	// Sort by timelength
	var years = Number(document.calc.timeperiod[document.calc.timeperiod.selectedIndex].value);
	if (years == 1) {
		BubbleSort(rateArray, 3); }
	else if (years == 2) {
		BubbleSort(rateArray, 4); }
	else if (years == 3) {
		BubbleSort(rateArray, 5); }
	else if (years == 4) {
		BubbleSort(rateArray, 6); }
	else if (years == 5) {
		BubbleSort(rateArray, 7); }

	// Load boxes
//	killVals(4);
//	killVals(5);
	document.calc.ins1.options.length = 0;
	document.calc.ins2.options.length = 0;
	var ratetxt;
	var avgrate = 0;
	for (i=0; i < (rateArray.length); i++) {
		if (Number(rateArray[i][years+2]) != 0) {
			ratetxt = rateArray[i][0];
			ratetxt = removeDblspace(ratetxt) + ' ($' + rateArray[i][2] + ') : ' + rateArray[i][years+2] + '%';
			newOpt = new Option (ratetxt, rateArray[i][years+2]);
			document.calc.ins1[i] = newOpt;
			avgrate = avgrate + Number(rateArray[i][years+2]);
			newOpt = new Option (ratetxt, rateArray[i][years+2]);
			document.calc.ins2[i] = newOpt;
		}
	}
	document.calc.avgrate.value = avgrate / (document.calc.ins1.length);
	document.calc.highrate.value = document.calc.ins2[0].value;
	document.calc.lowrate.value = document.calc.ins2[(document.calc.ins2.length - 1)].value;
//  Bank rate code: December 22, 2003
	var bankBMO = 0; var bankScotia = 0; var bankCIBC = 0; var bankRoyal = 0; var bankTD = 0;
	for (i=0; i < (rateArray.length); i++) { 
		if (trim(rateArray[i][0]) == "Bank of Montreal") { bankBMO = Number(rateArray[i][years+2]); }
		if (trim(rateArray[i][0]) == "Bank of Nova Scotia") { bankScotia = Number(rateArray[i][years+2]); }
		if (trim(rateArray[i][0]) == "CIBC") { bankCIBC = Number(rateArray[i][years+2]); }
		if (trim(rateArray[i][0]) == "Royal Bank") { bankRoyal = Number(rateArray[i][years+2]); }
		if (trim(rateArray[i][0]) == "TD Canada Trust") { bankTD = Number(rateArray[i][years+2]); }
	}
	var bankavg = (bankBMO + bankScotia + bankCIBC + bankRoyal + bankTD) / 5;
	document.calc.bankavg.value = bankavg;
	if (inslock == false) {
		document.calc.ins1.selectedIndex = 0;	
		document.calc.ins2.selectedIndex = (document.calc.ins2.length - 1);	}
	else {
		// find previous institution names
		for (i=0; i < (rateArray.length); i++) { 
			if (trim(rateArray[i][0]) == ins1name) { document.calc.ins1.selectedIndex = i; }
			if (trim(rateArray[i][0]) == ins2name) { document.calc.ins2.selectedIndex = i; } }
	}
	
	checkDepAmt();
}

function checkDepAmt() {

	if (usingA == true) { return false; }

	var inrate1 = document.calc.ins1[document.calc.ins1.selectedIndex].text;
	var inrate2 = document.calc.ins2[document.calc.ins2.selectedIndex].text; 
	if (document.calc.depamt.selectedIndex < 10) {
		var prin = Number(document.calc.depamt[document.calc.depamt.selectedIndex].value); }
	else { 
		var prin = Number(document.calc.custom.value); }
	for (i=0; i< inrate1.length; i++) {
		if (inrate1.charCodeAt(i) == 36) {
			var split1 = i; }
		if (inrate1.charCodeAt(i) == 41) {
			var split2 = i; }
	}
	inrate1 = Number(inrate1.substring(split1 + 1,split2));
	for (i=0; i< inrate2.length; i++) {
		if (inrate2.charCodeAt(i) == 36) {
			var split1 = i; }
		if (inrate2.charCodeAt(i) == 41) {
			var split2 = i; }
	}
	inrate2 = Number(inrate2.substring(split1 + 1,split2));
	if (chg == true && (prin < inrate1 || prin < inrate2)) {
			alert('The institution you have selected requires a deposit amount larger than the amount entered. It will be adjusted for the institution.');
			document.calc.depamt.selectedIndex = 10;
			document.calc.custom.value = inrate1;
			if (inrate2 > inrate1) { document.calc.custom.value = inrate2; }
			document.calc[2].focus();
			chg = false;
	}
	else if (chg == false) {
			document.calc.depamt.selectedIndex = 10;
			document.calc.custom.value = inrate1;
			if (inrate2 > inrate1) { document.calc.custom.value = inrate2; }
			document.calc[2].focus();
	}
}

function calcAll() {

	changesignal();
	killResults();
	var plot1 = false;
	var plot2 = false;
	var periods = Number(document.calc.compounds[document.calc.compounds.selectedIndex].value);
	if (document.calc.depamt.selectedIndex < 10) {
		var prin = Number(document.calc.depamt[document.calc.depamt.selectedIndex].value); }
	else { 
		var prin = Number(document.calc.custom.value); }
	var years = Number(document.calc.timeperiod[document.calc.timeperiod.selectedIndex].value);
	var timelength = years * periods;

	if (years > 1 || periods > 1) {
		//var x = 1 + myRate; var res1 = prin * Math.pow(x,timelength);
		//var x = 1 + myRate2; var res2 = prin * Math.pow(x,timelength); }
		var res1 = (prin * myRate  * years);
		var res2 = (prin * myRate2 * years); }
	else {
		var res1 = (prin * myRate);
		var res2 = (prin * myRate2);}

	if (isNaN(res1)) { writetolayer('result1',''); }
	else { 
		res1=Math.round(100*res1)/100;
		var intacc1=Math.round(res1 / years / periods);
		var intpaidperann1=prin + res1;
		//var intacc1 = Math.round(100*(res1 - prin)) / 100;
		//var intpaidperann1 = (prin * myRateBak);
		//intpaidperann1 = Math.round(100*intpaidperann1) / 100;
		//var intpaidperper1 = (prin * myRateBak) / periods;
		//intpaidperper1 = Math.round(100*intpaidperper1) / 100;
		plot1 = true;
		}

	if (isNaN(res2)) { writetolayer('result2',''); }
	else { 
		res2=Math.round(100*res2)/100;
		var intacc2 = Math.round(res2 / years / periods);
		var intpaidperann2 = (prin + res2);
//		intpaidperann2 = Math.round(100*intpaidperann2) / 100;
		//var intpaidperper2 = (prin * myRateBak2) / periods;
		//intpaidperper2 = Math.round(100*intpaidperper2) / 100;
		plot2 = true;
		}

	var whatsthediff;
	if (intacc1 > intacc2) { whatsthediff = intacc1 - intacc2; }
	else if (intacc2 > intacc1) { whatsthediff = intacc2 - intacc1; }
	if (isNaN(whatsthediff)) { writetolayer('diff',''); }
	else { 
		whatsthediff=Math.round(100*whatsthediff)/100;
		 }
	var	whatsthediff2;
	if (intpaidperann1 > intpaidperann2) { whatsthediff2 = intpaidperann1 - intpaidperann2; }
	else if (intpaidperann2 > intpaidperann1) { whatsthediff2 = intpaidperann2 - intpaidperann1; }
	if (isNaN(whatsthediff2) || whatsthediff2 == 0) { writetolayer('diff3',''); }
	else { 
		whatsthediff2=Math.round(100*whatsthediff2)/100;
		 }
//	var	whatsthediff3;
//	if (intpaidperper1 > intpaidperper2) { whatsthediff3 = intpaidperper1 - intpaidperper2; }
//	else if (intpaidperper2 > intpaidperper1) { whatsthediff3 = intpaidperper2 - intpaidperper1; }
//	if (isNaN(whatsthediff3) || whatsthediff3 == 0) { writetolayer('diff3',''); }
//	else { 
//		whatsthediff3=Math.round(100*whatsthediff3)/100;
//		 }
	
	document.calc.periods.value = periods;
	document.calc.prin.value = prin;
	document.calc.years.value = years;
	document.calc.timelength.value = timelength;
	document.calc.myRate.value = myRateBak;
	document.calc.myRate2.value = myRateBak2;

	if (plot1 == true) {
		res1=addzeros(res1);
		intacc1 = addzeros(intacc1);
		intpaidperann1 = addzeros(intpaidperann1);
		//intpaidperper1 = addzeros(intpaidperper1);
		writetolayer('intpaid1','<div align="right"><font face="arial" size=4 color="#FFFFFF" class="arial3"><B>$' + intacc1 + '</B></font></div>');
		writetolayer('result1','<div align="right"><font face="arial" size=4 color="#FFFFFF" class="arial3"><B>$' + intpaidperann1 + '</B></font></div>');
		writetolayer('intacc1','<div align="right"><font face="arial" size=4 color="#FFFFFF" class="arial3"><B>$' + res1 + '</B></font></div>'); }

	if (plot2 == true) {
		res2=addzeros(res2);
		intacc2 = addzeros(intacc2);
		intpaidperann2 = addzeros(intpaidperann2);
		//intpaidperper2 = addzeros(intpaidperper2);
		writetolayer('intpaid2','<div align="right"><font face="arial" size=4 color="#FFFFFF" class="arial3"><B>$' + intacc2 + '</B></font></div>');
		writetolayer('result2','<div align="right"><font face="arial" size=4 color="#FFFFFF" class="arial3"><B>$' + intpaidperann2 + '</B></font></div>');
		writetolayer('intacc2','<div align="right"><font face="arial" size=4 color="#FFFFFF" class="arial3"><B>$' + res2 + '</B></font></div>');
		}

	if (!(isNaN(whatsthediff2))) {
		whatsthediff2=addzeros(whatsthediff2);
		//whatsthediff3=addzeros(whatsthediff3);
		writetolayer('diff3','<div align="right"><font face="arial" size=4 color="#FFFF99" class="arial3"><B>$' + whatsthediff2 + '</B></font></div>'); }

	if (!(isNaN(whatsthediff))) {	
		whatsthediff=addzeros(whatsthediff);
		writetolayer('diff','<div align="right"><font face="arial" size=4 color="#FFFF99" class="arial3"><B>$' + whatsthediff +'</B></font></div>'); }

	var testsub = document.calc.ins1[document.calc.ins1.selectedIndex].text;
	for (i=0; i< testsub.length; i++) {
		if (testsub.charCodeAt(i) == 40) {
			var split = i; }
	}
	document.calc.insname1.value = testsub.substring(0,split-1);
	testsub = document.calc.ins2[document.calc.ins2.selectedIndex].text;
	for (i=0; i< testsub.length; i++) {
		if (testsub.charCodeAt(i) == 40) {
			var split = i; }
	}
	document.calc.insname2.value = testsub.substring(0,split-1);
	document.calc.intpaidann1.value = intpaidperann1;
	document.calc.intpaidper1.value = intacc1;
	document.calc.intpaidann2.value = intpaidperann2;
	document.calc.intpaidper2.value = intacc2;
	document.calc.intpaidanndiff.value = whatsthediff2;
//	document.calc.intpaidperdiff.value = whatsthediff3;

}

function changesignal() {
	if (usingA == true) {
		EnableDisable('SecA', true);
		EnableDisable('SecB', false);
//		MM_swapImage('Image1','','a_over.gif',1);
//		MM_swapImage('Image2','','a.gif',1); 
		document.calc.comptype.value="Illustrative Comparison"; }
	else if (usingA == false) {
		EnableDisable('SecA', false);
		EnableDisable('SecB', true);
//		MM_swapImage('Image1','','a.gif',1);
//		MM_swapImage('Image2','','a_over.gif',1);
		document.calc.comptype.value="On-Line Comparison"; }
}
