Hi guys I am brand new to JS and building a small calculator project just to learn:

Calculator is working and I a now trying to implement a Format function I got by googling. I am obviously doing something wrong because all my attempts fail and in fact stop the rest of my JS from running

Here is what I have:

The line in red is my attempt at implementing the formatDollar( ) function

Can someone show me where I am going wrong

Thanks

Code:`<script type="text/javascript">`

<!--

function formatDollar(value) {

var p = num.toFixed(2).split(".");

return "$" + p[0].split("").reverse().reduce(function(acc, num, i, orig) {

return num + (i && !(i % 3) ? "," : "") + acc;

}, "") + "." + p[1];

}

function centNotation(value)

{

dollars = Math.floor(value); // chop floating point portion

cents = Math.floor((value % 1) * 100); // and chop everything else

if (cents < 10) cents = "" + cents + "0";

return(dollars + "." + cents);

}

function validInt(value)

{

for (var i=0; i < value.length; i++) {

var c = value.charAt(i);

if ((c < '0' || c > '9') && c != '.') {

alert("There's a problem: all values herein must " +

"be numbers only, and " + value + " has an unacceptable character " +

"'" + c + "'");

return(false);

}

}

return(true);

}

function myPaymentCalc()

{

var interestRate = document.debtcalc.interest.value,

monthlyPayment = document.debtcalc.monthlypayment.value,

principal = document.debtcalc.principal.value,

accumulatingInterest = 1;

if (! validInt(interestRate) || ! validInt(monthlyPayment) ||

! validInt(principal))

return(false);

if (interestRate == 0 || monthlyPayment == 0 || principal == 0) {

alert("You need to specify your monthly payment, credit card " +

"interest rate and current debt amount before I can calculate " +

"how long it'll take for you to pay off your debt.");

return(false);

}

interestRate = (interestRate > 1)? interestRate / 100.0 : interestRate;

monthlyInterestRate = interestRate / 12;

if (principal * monthlyInterestRate > monthlyPayment) {

monthlyrate = "$" + centNotation(principal * monthlyInterestRate);

permonthPayment = "$" + centNotation(monthlyPayment);

alert("You've got a fundamental problem: your monthly payment of " +

permonthPayment + " is less than the interest added each month " +

"(which is " + monthlyrate + ") and you will never " +

"pay off this debt. It might be a good time to call your creditors.");

return(false);

}

interimVal1 = monthlyPayment - (monthlyInterestRate * principal)

numberOfPayments = (Math.log(monthlyPayment) - Math.log(interimVal1)) /

Math.log(1+monthlyInterestRate);

numberOfPayments = Math.ceil(numberOfPayments);

interimVal2 = Math.pow((monthlyInterestRate+1), (numberOfPayments-1));

remaining = (principal * interimVal2) -

(monthlyPayment/monthlyInterestRate) * (interimVal2 - 1);

totalPayment = monthlyPayment *(numberOfPayments-1) + remaining;

payments = numberOfPayments;

totalpayment = "$" + centNotation(totalPayment);

totalpaymentamt= formatDollar(totalpayment);

interestPaid = "$" + centNotation(totalPayment-principal);

alert("Given these figures, you'll end up having " + payments +

" payments and pay a total of " + totalpayment + ", of which " +

interestPaid + " is interest.");

document.debtcalc.numberofpayments.value = payments;

document.debtcalc.totalpayments.value = totalpayment;

document.debtcalc.intpmt.value = interestPaid;

}

// -->

</script>