// TER_SHOARRAY: rate[0] = new Array("AGF Trust                ","10 JAN ","10000"," 1.70"," 1.70"); 
// TER_LONARRAY: rate[0] = new Array("AGF Trust                ","10 JAN ","10000"," 1.70"," 1.80"," 1.80"," 1.90");

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(ltrate);
removeBackgrounder(strate);

var myRate;
var myRate2;
var myRateBak;
var myRateBak2;
var usingA = false;
var currentArray;
var chg = false;

function init() {
	currentArray = 0;
	reloadIns();
	// initialize mouse events
	if (is.ns) document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP)
}

function showHinfo1() {
	myRate = hbar1.getValue();
	myRate = myRate / 10000; myRateBak = myRate;
	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>');
	usingA = true;
	calcAll();
}

function showHinfo2() {
	myRate2 = hbar2.getValue();
	myRate2 = myRate2 / 10000; myRateBak2 = myRate2;
	writetolayer('rate2desc', '<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(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;
	calcAll();}
	
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.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>');
	usingA = false;
	var rootdown1 = Number(document.calc.ins1[document.calc.ins1.selectedIndex].value);
	var rootdown2 = Number(document.calc.ins2[document.calc.ins2.selectedIndex].value);
	var pixpt1 = Math.round(rootdown1 * 37.14);
	var pixpt2 = Math.round(rootdown2 * 37.14);
	rootdown1=addzeros(rootdown1);
	rootdown2=addzeros(rootdown2);
//	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>');
}

function removeDblspace(testsub) {

	for (x=testsub.length; x > 0; x--) {
		var y = testsub.charCodeAt(x);
		if ((y > 64 && y<91) || (y>97 && y < 123)) {
			testsub = testsub.substring(0, x + 1);
			return testsub; }
	}
}

function killVals(refVal) {
	for (var i=document.calc[refVal].length; i > -1; i=i-1) {
		document.calc[refVal].options[i] = null;
	}
}

function killResults() {
	writetolayer('diff3','');
	writetolayer('intpaid1','');
	writetolayer('intpaid2',''); }

function reloadIns() {
	// add short/long text in below line
//	writetolayer('intpaiddesc','<b><font face="Arial, sans-serif" size="2" color="#FFFF66" class="arial2">Total Interest Paid<br><img src="/graphics/empty_dot.gif" width="1" height="4"><br>Payment</font></b>');
	writetolayer('intpaiddesc','<b><font face="Arial, sans-serif" size="2" color="#FFFF66" class="arial2">Total Interest Paid</font></b>');
	// Change array if neccesary and sort by timelength
	var termlength = Number(document.calc.timeperiod[document.calc.timeperiod.selectedIndex].value);
	if (termlength < 3 && !(currentArray == 1)) { 
		currentArray = 1;
		rateArray = new Array();
		rateArray = strate; }
	else if (termlength > 2 && !(currentArray == 2)) { 
		currentArray = 2;
		rateArray = new Array();
		rateArray = ltrate; }	
	if (termlength == 1) { termlength = 1;	BubbleSort(rateArray, 3); }
	else if (termlength == 2) {	termlength = 2;	BubbleSort(rateArray, 4); }
	else if (termlength == 3) {	termlength = 1;	BubbleSort(rateArray, 3); }
	else if (termlength == 4) {	termlength = 2;	BubbleSort(rateArray, 4); }
	else if (termlength == 5) {	termlength = 3;	BubbleSort(rateArray, 5); }
	else if (termlength == 6) {	termlength = 4;	BubbleSort(rateArray, 6); }
	// Load boxes
	killVals('ins1');
	killVals('ins2');
	var ratetxt;
	var avgrate = 0;
	for (i=0; i < (rateArray.length); i++) {
		if (Number(rateArray[i][termlength+2]) != 0) {
			ratetxt = rateArray[i][0];	
			ratetxt = removeDblspace(ratetxt) + ' ($' + rateArray[i][2] + ') : ' + rateArray[i][termlength+2] + '%';
			newOpt = new Option (ratetxt, rateArray[i][termlength+2]);
			document.calc.ins1[i] = newOpt;
			avgrate = avgrate + Number(rateArray[i][termlength+2]);
			newOpt = new Option (ratetxt, rateArray[i][termlength+2]);
			document.calc.ins2[i] = newOpt;
		}
	}
	document.calc.avgrate.value = avgrate / (document.calc.ins1.length - 1);
	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][termlength+2]); }
		if (trim(rateArray[i][0]) == "Bank of Nova Scotia") { bankScotia = Number(rateArray[i][termlength+2]); }
		if (trim(rateArray[i][0]) == "CIBC") { bankCIBC = Number(rateArray[i][termlength+2]); }
		if (trim(rateArray[i][0]) == "Royal Bank") { bankRoyal = Number(rateArray[i][termlength+2]); }
		if (trim(rateArray[i][0]) == "TD Canada Trust") { bankTD = Number(rateArray[i][termlength+2]); }
	}
	var bankavg = (bankBMO + bankScotia + bankCIBC + bankRoyal + bankTD) / 5;
	document.calc.bankavg.value = bankavg;
	document.calc.ins1.selectedIndex = 0;	
	document.calc.ins2.selectedIndex = (document.calc.ins2.length - 1);	
	checkDepAmt();
}

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 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 < 8) {
		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 = 8;
			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 = 8;
			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;

	if (document.calc.depamt.selectedIndex < 8) {
		var prin = Number(document.calc.depamt[document.calc.depamt.selectedIndex].value); }
	else { 
		var prin = Number(document.calc.custom.value); }
	var termlength = Number(document.calc.timeperiod[document.calc.timeperiod.selectedIndex].value);
	var timelength = termlength;

	if (termlength > 1) {
		var x = 1 + myRate; var res1 = prin * Math.pow(x,timelength);
		var x = 1 + myRate2; var res2 = prin * Math.pow(x,timelength); }
	else {
		var res1 = (prin * myRate) + prin;
		var res2 = (prin * myRate2) + prin;}

	if (isNaN(res1)) { }
	else { 
		res1=Math.round(100*res1)/100;
		var intacc1 = Math.round(100*(res1 - prin)) / 100;
		var intpaidperann1 = (prin * myRateBak);
		intpaidperann1 = Math.round(100*intpaidperann1) / 100;
		var intpaidperper1 = (prin * myRateBak);
		intpaidperper1 = Math.round(100*intpaidperper1) / 100;
		plot1 = true;
		}

	if (isNaN(res2)) { }
	else { 
		res2=Math.round(100*res2)/100;
		var intacc2 = Math.round(100*(res2 - prin)) / 100;
		var intpaidperann2 = (prin * myRateBak2);
		intpaidperann2 = Math.round(100*intpaidperann2) / 100;
		var intpaidperper2 = (prin * myRateBak2);
		intpaidperper2 = Math.round(100*intpaidperper2) / 100;
		plot2 = true;
		}

	var whatsthediff;
	if (res1 > res2) { whatsthediff = res1 - res2; }
	else if (res2 > res1) { whatsthediff = res2 - res1; }
	if (isNaN(whatsthediff)) { }
	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 = 1;
	document.calc.prin.value = prin;
	document.calc.years.value = termlength;
	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>$' + intpaidperann1 + '<BR>$' + intpaidperper1 + '</B></font></div>'); }
		writetolayer('intpaid1','<div align="right"><font face="arial" size=4 color="FFFFFF" class="arial3"><B>$' + intpaidperann1 + '</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>$' + intpaidperann2 + '<BR>$' + intpaidperper2 + '</B></font></div>');
		writetolayer('intpaid2','<div align="right"><font face="arial" size=4 color="FFFFFF" class="arial3"><B>$' + intpaidperann2 + '</B></font></div>');
		}

	if (!(isNaN(whatsthediff))) {	
		whatsthediff=addzeros(whatsthediff); }

	if (!(isNaN(whatsthediff3)) || !(isNaN(whatsthediff2))) {
		whatsthediff2=addzeros(whatsthediff2);
		whatsthediff3=addzeros(whatsthediff3);
//		writetolayer('diff3','<div align="right"><font face="arial" size=4 color="FFFF99" class="arial3"><B>$' + whatsthediff2 + '<BR>$' + whatsthediff3 + '</B></font></div>'); }
		writetolayer('diff3','<div align="right"><font face="arial" size=4 color="FFFF99" class="arial3"><B>$' + whatsthediff2 + '</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 = intpaidperper1;
	document.calc.intpaidann2.value = intpaidperann2;
	document.calc.intpaidper2.value = intpaidperper2;
	document.calc.intpaidanndiff.value = whatsthediff2;
	document.calc.intpaidperdiff.value = whatsthediff3;

}

function changesignal() {
	if (usingA == true) {
		MM_swapImage('Image1','','a_over.gif',1);
		MM_swapImage('Image2','','a.gif',1); 
		document.calc.comptype.value="Illustrative Comparison"; }
	else if (usingA == false) {
		MM_swapImage('Image1','','a.gif',1);
		MM_swapImage('Image2','','a_over.gif',1);
		document.calc.comptype.value="On-Line Comparison"; }
}

function BubbleSort(arry, col)  {
  tmp = new Array();
  for (pass = 0; pass < arry.length; pass++)  {
    madeAchange = 0;
//if a numerical array column
    for (a = 0; a < arry.length-1; a++)  {
      if (col != 0 && !isNaN(arry[a][col]) )  {
        if (parseFloat(arry[a][col]) < parseFloat(arry[(a+1)][col]))  {
          for (i = 0 ; i < arry[a].length; i++)  {
            tmp = arry[a][i];
            arry[a][i] = arry[(a+1)][i];
            arry[(a+1)][i] = tmp;
          }
          madeAchange = 1;
        }
      }
//if an alphanumeric array column
      else  {

// extract name from <a><font><u> here </u></font></a> in tag (if there is background info on this product)
// if there is no background info on this product the copied value is compared
        var s1, s2;
        s1 = arry[a][col];
        s2 = arry[a+1][col];
// institution name
        if (col == 0)  {
/*       
        s1 = s1.replace(/<[^>]*a.*><font.*><u.*>(.*)<\/u *><\/font *><\/a *>/i, "$1");
        s2 = s2.replace(/<[^>]*a.*><font.*><u.*>(.*)<\/u *><\/font *><\/a *>/i, "$1");
*/       
          s1 = s1.replace(/<u.*>(.*)<\/u *>/i, "$1");
          s2 = s2.replace(/<u.*>(.*)<\/u *>/i, "$1");
          
          if (s1 > s2)  {
            for (i = 0 ; i < arry[a].length; i++)  {
              tmp = arry[a][i];
              arry[a][i] = arry[(a+1)][i];
              arry[(a+1)][i] = tmp;
            }
            madeAchange = 1;
          }
        }
// date
        else if (col == 1)  {
          if (s1 < s2)  {
            for (i = 0 ; i < arry[a].length; i++)  {
              tmp = arry[a][i];
              arry[a][i] = arry[(a+1)][i];
              arry[(a+1)][i] = tmp;
            }
            madeAchange = 1;
          }
        }
      }
    }
// if no changes made after first pass - arry is in order, leave loop
    if (! madeAchange)
      break;
  }
};

function addzeros(num) {

	num = parseFloat(num);
	num = Math.round(100*num);
	num = num.toString();
	var p1 = num.substring(0, num.length - 2);
	var p2 = num.substring(num.length - 2, num.length);
	num = p1 + '.' + p2;

	var txtNumber = '' + num;
	var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])');
	var arrNumber = txtNumber.split('.');
	arrNumber[0] += '.';
	do {
	arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2');
	} while (rxSplit.test(arrNumber[0]));

	if (arrNumber.length > 1) {
	return arrNumber.join('');
	}
	else {
	return arrNumber[0].split('.')[0];
    }	
}	

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_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_findObj(n, d) { //v3.0
  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); 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];}
}

