function stripAlphaChars(pstrSource) { 
	var m_strOut = new String(pstrSource); 
	m_strOut = m_strOut.replace(/[^0-9\.]/g, ''); 
	
	return m_strOut; 
}

function update_number(input) {
    var temp;
    if (input.value != null && input.value.length != 0) temp = "" + eval(input.value);
    else input.value = "0.00";
}

function binomial(a, n) {
    var i;
    var sum, pow, term, cof;
    if (n < 0) return 1.0 / binomial(a, -n);
    sum = 1.0;
    pow = n;
    term = 1;
    cof = 1.0
    for (i = 1; i < 10; i++) {
        cof = cof * pow / i;
        pow = pow - 1.0;
        term = term * a;
        sum = sum + cof * term;
    }
    return sum;
}

function error(P, I, N, Y, M) {
    var value;
    value = P - M * (1.0 - binomial(I / Y, -N)) / (I / Y);
    return value;
}

function compute_loan(form) {
    var P, I, N, Y, M;
    if ((form.rate.value.length == 0) || (form.num.value.length == 0) || (form.num_annum.value.length == 0) || (form.amount.value.length == 0)) form.loan.value = "0.00";
    else {
        I = eval(form.rate.value) / 100.0;
        N = eval(form.num.value);
        Y = eval(form.num_annum.value);
        M = eval(form.amount.value);
        if (Y == 0.0) P = 0.0;
        else P = Math.round(M * (1.0 - binomial(I / Y, -N)) / (I / Y) * 100) / 100;
        form.loan.value = "" + P;
    }
}

function compute_amount(form) {
    var P, I, N, Y, M;
    if ((form.loan.value.length == 0) || (form.rate.value.length == 0) || (form.num.value.length == 0) || (form.num_annum.value.length == 0)) form.amount.value = "0.00";
    else {
		P = eval(form.loan.value);
		I = eval(form.rate.value) / 100.0;
		N = eval(form.num.value);
		Y = eval(form.num_annum.value);		
	
		if (I > 0) {
	        if (Y == 0.0) M = 0.0;
	        else M = Math.round(P * I / Y / (1.0 - binomial(I / Y, -N)) * 100) / 100;
		} else {
			if (Y == 0.0) {
				M = 0.0;
			} else {
				M = Math.round(P/N);
			}
		}
		
		form.amount.value = "" + M;
    }
    do_extra_months(form);
}

function do_extra_months(form) {
    form.num.value = 48;
    var P, I, N, Y, M;
    if ((form.loan.value.length == 0) || (form.rate.value.length == 0) || (form.num.value.length == 0) || (form.num_annum.value.length == 0)) form.amount2.value = "0.00";
    else {
		P = eval(form.loan.value);
		I = eval(form.rate.value) / 100.0;
		N = eval(form.num.value);
		Y = eval(form.num_annum.value);		
	
		if (I > 0) {
	        if (Y == 0.0) M = 0.0;
	        else M = Math.round(P * I / Y / (1.0 - binomial(I / Y, -N)) * 100) / 100;
		} else {
			if (Y == 0.0) {
				M = 0.0;
			} else {
				M = Math.round(P/N);
			}
		}
		
        form.amount2.value = "" + M;
    }
    form.num.value = 60;
    var P, I, N, Y, M;
    if ((form.loan.value.length == 0) || (form.rate.value.length == 0) || (form.num.value.length == 0) || (form.num_annum.value.length == 0)) form.amount3.value = "0.00";
    else {
       P = eval(form.loan.value);
		I = eval(form.rate.value) / 100.0;
		N = eval(form.num.value);
		Y = eval(form.num_annum.value);		
	
		if (I > 0) {
	        if (Y == 0.0) M = 0.0;
	        else M = Math.round(P * I / Y / (1.0 - binomial(I / Y, -N)) * 100) / 100;
		} else {
			if (Y == 0.0) {
				M = 0.0;
			} else {
				M = Math.round(P/N);
			}
		}
        form.amount3.value = "" + M;
    }
    form.num.value = 72;
    var P, I, N, Y, M;
    if ((form.loan.value.length == 0) || (form.rate.value.length == 0) || (form.num.value.length == 0) || (form.num_annum.value.length == 0)) form.amount4.value = "0.00";
    else {
        P = eval(form.loan.value);
		I = eval(form.rate.value) / 100.0;
		N = eval(form.num.value);
		Y = eval(form.num_annum.value);		
	
		if (I > 0) {
	        if (Y == 0.0) M = 0.0;
	        else M = Math.round(P * I / Y / (1.0 - binomial(I / Y, -N)) * 100) / 100;
		} else {
			if (Y == 0.0) {
				M = 0.0;
			} else {
				M = Math.round(P/N);
			}
		}
        form.amount4.value = "" + M;
    }
    form.num.value = 36;
}