var _____float_regex = new RegExp("^\\s*(\\d{1,9}(?:\\.\\d{0,4})?)\\s*$");


function my_parse_float(value)
{
	var num = _____float_regex.exec(value);
	var result = NaN;
	if(num)
		result = parseFloat(num[1]);
	return result;
}


function paym_calculate(elem) 
{
	var form = elem.form;
	if(!form)
		return false;

	// check if the fields are null
	if(form.paym_amount.value.length == 0 || form.paym_downpayment.value.length == 0 || form.paym_tradein.value.length == 0) { 
		return false; 
	}

	// get the values and check them for validity
	var amount = my_parse_float(form.paym_amount.value);
	var downpayment = my_parse_float(form.paym_downpayment.value);
	var tradein = my_parse_float(form.paym_tradein.value);
	var term = my_parse_float(form.paym_term.value);
	var interest = my_parse_float(form.paym_rate.value);

  	if(isNaN(amount) || isNaN(downpayment) || isNaN(tradein) || isNaN(term) || isNaN(interest)){
  		alert('Number not valid. Please check your entries to ensure the numbers are correct.');
  		return false; 
  	}

	// adjust interest to be in percents per month
	var interest = (interest / 100.0) / 12.0;

	// total loan amount
	var loan = amount - downpayment - tradein;
	
	// calculate payment
	var payment = 0;
	if(interest > 0){
		var temp = 1;
		var interest_adj = 1 + interest;
		for (var j = 0; j < term; j++)
		    temp *= interest_adj;

		payment = (loan * temp * interest) / (temp - 1);
	} else {
		payment = loan / term;
	}
	var number = new Number(payment);
	if (!isNaN(number)) {
		form.paym_payment.value = number.toFixed(2);
	}else {
		form.paym_payment.value = '';
	}
	return true;
}

function power_calculate(elem)
{
	var form = elem.form;
	if(!form)
		return false;

	// check if the fields are null
	if(form.power_amount.value.length == 0 || form.power_downpayment.value.length == 0 || form.power_tradein.value.length == 0){
		return false;
	}

	// get the values and check them for validity
	var amount = my_parse_float(form.power_amount.value);
	var downpayment = my_parse_float(form.power_downpayment.value);
	var tradein = my_parse_float(form.power_tradein.value);
	var term = parseInt(form.power_term.value);
	var interest = my_parse_float(form.power_rate.value);

	if(isNaN(amount) || isNaN(downpayment) || isNaN(tradein) || isNaN(term) || isNaN(interest)){
  		alert('Number not valid. Please check your entries to ensure the numbers are correct.');
		return false; 
	}

	// adjust interest to be in percents per month
	var interest = (interest / 100.0) / 12.0;
 
	//total amount
	var total = 0;
	if(interest > 0){
		var temp = 1;
		var interest_adj = 1 + interest;
		for (var j = 0; j < term; j++)
			temp *= interest_adj;

		total = Math.round(((temp - 1) * amount) / (temp * interest) + 0.5);
	} else {
		total = amount * term;
	}
	total = total + downpayment + tradein;

	var number = new Number(total);
	if (!isNaN(number)) {
		form.power_power.value = number.toFixed(2);
	}else {
		form.power_power.value = '';
	}
	return true;
}
