// JavaScript Document
function formatCurrency(num,absval)
{
	/* http://javascript.internet.com/forms/currency-format.html */
	/* escaped regular expression test for "$" OR (bitwise) "," chracters, replacement with space */
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num)) { num = "0" };

	/* store sign value as boolean */
	sign = (num == (num = Math.abs(num)));

	/* Move decimal 2 places to right, round up, then take modulus 100 of floor to extract cents, move decimal 2 places to left and take floor for dollar amt */
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();

	/* Pad with leading 0 */
	if(cents<10) { cents = "0" + cents };

	/* Insert commas (mathmatically elegant formula) */
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	{
	  num = num.substring(0,num.length-(4*i+3)) + ',' + num.substring(num.length-(4*i+3));
	}

	/* Create return chain string; return absolute value when specified, otherwise return actual signed value */
	//return (((sign)?'':'-') + '$' + num + '.' + cents);
	return (((absval)?'':((sign)?'':'-')) + '$' + num + '.' + cents);
}

function subD(elem)
{
	return document.getElementById(elem);
}

/* Computation engines for each column */
function calcA()
{
	/* colA, calculation A - Total Grants & Scholarships */
	/* Unfortunately, it's necessary to convert the previously currency formatted strings back to numeric data types by removing the "$" and "," in order for the calculations to be performed */
	var a = subD('1A').value.replace(/\$|\,/g,'') - 0; /* subtract 0 for implicit numeric field type cast */
	var b = subD('2A').value.replace(/\$|\,/g,'') - 0;
	var c = subD('3A').value.replace(/\$|\,/g,'') - 0;
	var d = subD('4A').value.replace(/\$|\,/g,'') - 0;
	var e = subD('5A').value.replace(/\$|\,/g,'') - 0;
	var f = subD('6A').value.replace(/\$|\,/g,'') - 0;
	var g = (a + b + c + d + e + f);
	subD('7A').value = formatCurrency(g,0);

	/* colA, Subtotal Loans */
	var a = subD('8A').value.replace(/\$|\,/g,'') - 0; /* subtract 0 for implicit numeric field type cast */
	var b = subD('9A').value.replace(/\$|\,/g,'') - 0;
	var c = subD('10A').value.replace(/\$|\,/g,'') - 0;
	var d = (a + b + c);
	subD('11A').value = formatCurrency(d,0);

	/* colA, calculation B - Total loans */
	var a = subD('11A').value.replace(/\$|\,/g,''); /* Calculated result, already numeric */
	var b = subD('12A').value.replace(/\$|\,/g,'') - 0;
	var c = (a - b);
	subD('13A').value = formatCurrency(c,0); /* change calculated results back to currency formatted string */

	/* colA, Total Amount Due to School */
	var a = subD('0A').value.replace(/\$|\,/g,'') - 0;
	subD('14A').value = formatCurrency(a,0);
	var b = subD('7A').value.replace(/\$|\,/g,'');
	subD('15A').value = formatCurrency(b,0);
	var c = (a - b);
	subD('16A').value = formatCurrency(c,0);
	var d = subD('13A').value.replace(/\$|\,/g,'');
	subD('17A').value = formatCurrency(d,0);
	var e = (c - d);
	subD('18A').value = formatCurrency(e,0);

	/* colA, Final calculations - what does this really mean */
	var a = subD('18A').value.replace(/\$|\,/g,'');
	subD('19A').value = formatCurrency(a,0);
	var b = subD('20A').value.replace(/\$|\,/g,'') - 0;
	var c = subD('21A').value.replace(/\$|\,/g,'') - 0;
	var d = subD('22A').value.replace(/\$|\,/g,'') - 0;
	var e = subD('23A').value.replace(/\$|\,/g,'') - 0;
	var f = (a - b - c - d - e);
	subD('24A').value = formatCurrency(f,0);
}

function calcB()
{
	/* colB, calculation A - Total Grants & Scholarships */
	/* Unfortunately, it's necessary to convert the previously currency formatted strings back to numeric data types by removing the "$" and "," in order for the calculations to be performed */
	var a = subD('1B').value.replace(/\$|\,/g,'') - 0; /* subtract 0 for implicit numeric field type cast */
	var b = subD('2B').value.replace(/\$|\,/g,'') - 0;
	var c = subD('3B').value.replace(/\$|\,/g,'') - 0;
	var d = subD('4B').value.replace(/\$|\,/g,'') - 0;
	var e = subD('5B').value.replace(/\$|\,/g,'') - 0;
	var f = subD('6B').value.replace(/\$|\,/g,'') - 0;
	var g = (a + b + c + d + e + f);
	subD('7B').value = formatCurrency(g,0);

	/* colB, Subtotal Loans */
	var a = subD('8B').value.replace(/\$|\,/g,'') - 0; /* subtract 0 for implicit numeric field type cast */
	var b = subD('9B').value.replace(/\$|\,/g,'') - 0;
	var c = subD('10B').value.replace(/\$|\,/g,'') - 0;
	var d = (a + b + c);
	subD('11B').value = formatCurrency(d,0);

	/* colB, calculation B - Total loans */
	var a = subD('11B').value.replace(/\$|\,/g,''); /* Calculated result, already numeric */
	var b = subD('12B').value.replace(/\$|\,/g,'') - 0;
	var c = (a - b);
	subD('13B').value = formatCurrency(c,0); /* change calculated results back to currency formatted string */

	/* colB, Total Amount Due to School */
	var a = subD('0B').value.replace(/\$|\,/g,'') - 0;
	subD('14B').value = formatCurrency(a,0);
	var b = subD('7B').value.replace(/\$|\,/g,'');
	subD('15B').value = formatCurrency(b,0);
	var c = (a - b);
	subD('16B').value = formatCurrency(c,0);
	var d = subD('13B').value.replace(/\$|\,/g,'');
	subD('17B').value = formatCurrency(d,0);
	var e = (c - d);
	subD('18B').value = formatCurrency(e,0);

	/* colB, Final calculations - what does this really mean */
	var a = subD('18B').value.replace(/\$|\,/g,'');
	subD('19B').value = formatCurrency(a,0);
	var b = subD('20B').value.replace(/\$|\,/g,'') - 0;
	var c = subD('21B').value.replace(/\$|\,/g,'') - 0;
	var d = subD('22B').value.replace(/\$|\,/g,'') - 0;
	var e = subD('23B').value.replace(/\$|\,/g,'') - 0;
	var f = (a - b - c - d - e);
	subD('24B').value = formatCurrency(f,0);
}

function calcC()
{
	/* colC, calculation A - Total Grants & Scholarships */
	/* Unfortunately, it's necessary to convert the previously currency formatted strings back to numeric data types by removing the "$" and "," in order for the calculations to be performed */
	var a = subD('1C').value.replace(/\$|\,/g,'') - 0; /* subtract 0 for implicit numeric field type cast */
	var b = subD('2C').value.replace(/\$|\,/g,'') - 0;
	var c = subD('3C').value.replace(/\$|\,/g,'') - 0;
	var d = subD('4C').value.replace(/\$|\,/g,'') - 0;
	var e = subD('5C').value.replace(/\$|\,/g,'') - 0;
	var f = subD('6C').value.replace(/\$|\,/g,'') - 0;
	var g = (a + b + c + d + e + f);
	subD('7C').value = formatCurrency(g,0);

	/* colC, Subtotal Loans */
	var a = subD('8C').value.replace(/\$|\,/g,'') - 0; /* subtract 0 for implicit numeric field type cast */
	var b = subD('9C').value.replace(/\$|\,/g,'') - 0;
	var c = subD('10C').value.replace(/\$|\,/g,'') - 0;
	var d = (a + b + c);
	subD('11C').value = formatCurrency(d,0);

	/* colC, calculation B - Total loans */
	var a = subD('11C').value.replace(/\$|\,/g,''); /* Calculated result, already numeric */
	var b = subD('12C').value.replace(/\$|\,/g,'') - 0;
	var c = (a - b);
	subD('13C').value = formatCurrency(c,0); /* change calculated results back to currency formatted string */

	/* colC, Total Amount Due to School */
	var a = subD('0C').value.replace(/\$|\,/g,'') - 0;
	subD('14C').value = formatCurrency(a,0);
	var b = subD('7C').value.replace(/\$|\,/g,'');
	subD('15C').value = formatCurrency(b,0);
	var c = (a - b);
	subD('16C').value = formatCurrency(c,0);
	var d = subD('13C').value.replace(/\$|\,/g,'');
	subD('17C').value = formatCurrency(d,0);
	var e = (c - d);
	subD('18C').value = formatCurrency(e,0);

	/* colC, Final calculations - what does this really mean */
	var a = subD('18C').value.replace(/\$|\,/g,'');
	subD('19C').value = formatCurrency(a,0);
	var b = subD('20C').value.replace(/\$|\,/g,'') - 0;
	var c = subD('21C').value.replace(/\$|\,/g,'') - 0;
	var d = subD('22C').value.replace(/\$|\,/g,'') - 0;
	var e = subD('23C').value.replace(/\$|\,/g,'') - 0;
	var f = (a - b - c - d - e);
	subD('24C').value = formatCurrency(f,0);
}

function calcAll()
{
	if (subD('2A').value - 0 > 0) {calcA()};
	if (subD('2B').value - 0 > 0) {calcB()};
	if (subD('2C').value - 0 > 0) {calcC()};
}

