function calculate() {
	hideCalculatorError();
	var price = $("price").value
	price = price.replace('$','');
	price = price.replace('-','');
	price = price.replace(',','');
	price = price.replace('&','');
		if ($("price").value !='' && !isNaN(price)) {
			price = parseInt(price);
			price = round(price);
			$("price").value = price;
		}

	var downpayment = $("down_payment").value;
	downpayment = downpayment.replace(',','');
	downpayment = downpayment.replace('-',''); 
	downpayment = downpayment.replace('$','');
	downpayment = downpayment.replace('&',''); 
		if ($("down_payment").value != '' && !isNaN(downpayment)) {
			downpayment = parseInt(downpayment);
			downpayment = round(downpayment);
			$("down_payment").value = downpayment;
		}
	var tradein = $("trade_in").value;
	tradein = tradein.replace(',','');
	tradein = tradein.replace('-',''); 
	tradein = tradein.replace('$','');
	tradein = tradein.replace('&',''); 
		if ($("trade_in").value != '' && !isNaN(tradein)) {
			tradein = parseInt(tradein);
			tradein = round(tradein);
			$("trade_in").value = tradein;
		}
		
	var taxrate = $("tax_rate").value;
	taxrate = taxrate.replace(',','.');
	taxrate = taxrate.replace('-','');
	taxrate = taxrate.replace('$','');
	taxrate = taxrate.replace('%','');
		if ($("tax_rate").value != '' && !isNaN(taxrate)) {
			$("tax_rate").value = taxrate;
		}	
		
	var interest = $("interest").value;
	interest = interest.replace('%','');
	interest = interest.replace(',','.');
	interest = interest.replace('-','');
	if ($("interest").value != '' && !isNaN(interest)) {
			$("interest").value = interest;
		}
	if (interest==0){
		interest = interest + 0.0000001;
	}
	interest = interest / 100 / 12;
	if (price !='' && price != parseInt(price)){
		if (language == 'S'){
			showCalculatorError("El precio del vehiculo debe ser un numero.");
		}else{
			showCalculatorError("Vehicle price must be a number.");
		}
		$("price").blur();
		$("price").focus();
		blankpayment();
		return false;
	}
	if (downpayment !='' && downpayment != parseInt(downpayment)){
		if (language == 'S'){
			showCalculatorError("El pago de enganche o vehículo para intercambiar debe ser un numero.");
		}else{
			showCalculatorError("Down Payment or Trade-in value must be a number.");
		}
		$("down_payment").blur();
		$("down_payment").focus();
		blankpayment();
		return false;
	}
	if (taxrate !='' && isNaN(taxrate)){
	//if (taxrate !='' && taxrate != parseInt(taxrate)){
		if (language == 'S'){
			showCalculatorError("El valor de los impuestos debe ser un numero.");
		}else{
			showCalculatorError("Tax rate value must be a number.");
		}
		$("tax_rate").blur();
		$("tax_rate").focus();
		blankpayment();
		return false;
	}
	
	if (taxrate >100){
		if (language == 'S'){
			showCalculatorError("Los impuestos de venta deben entre 0% and 100%");
		}else{
			showCalculatorError("Tax rate value must be between 0% and 100%.");
		}
		$("tax_rate").blur();
		$("tax_rate").focus();
		blankpayment();
		return false;
	}
	
	if (parseInt(downpayment)>=parseInt(price)) {
		if (language == 'S'){
			showCalculatorError("El pago de enganche o vehículo para intercambiar no puede ser mayor que el precio del vehiculo.");
		}else{
			showCalculatorError("Down Payment or Trade In value cannot be greater than the vehicle price.");
		}
		$("down_payment").blur();
		$("down_payment").focus();
		blankpayment();
		return false;
		
	}
	if (taxrate!='' && taxrate<1 && taxrate !=0) {
		if (language == 'S'){
			showCalculatorError("Por favor introduce el valor de los impuestos locales en numeros enteros. Ejemplo: 8 en vez de 8%.");
		}else{
			showCalculatorError("Please Enter your Local Tax Rate in whole numbers. \r\r Example: 8 for 8%.");
		}
		$("tax_rate").value='';
		$("tax_rate").blur();
		$("tax_rate").focus();
		blankpayment();
		$("tax_amount").value='';
		return false;
	}
	if ($("interest").value=='' || $("interest").value<0 || $("interest").value>100 || isNaN($("interest").value)) {
		if (language == 'S'){
			showCalculatorError("El APR debe estar entre 0% y 100%.");
		}else{
			showCalculatorError("Interest rate must be between 0% and 100%.");
		}
		$("interest").blur();
		$("interest").focus();
		blankpayment();
		return false;
	}
	if ($("interest").value!='' && $("interest").value<0) {
		if (language == 'S'){
			showCalculatorError("El valor de los intereses debe ser mayor de 0.");
		}else{
			showCalculatorError("Interest rate must be greater than Zero.");
		}
		$("interest").blur();
		$("interest").focus();
		blankpayment();
		return false;
	}
	
	var taxamount = taxrate*(price)*(.01);
	var principal = (price-downpayment-tradein)+taxamount;
    var payments1 = 24
	var payments2 = 36
	var payments3 = 48
	var payments4 = 60
	
	if (price !=''){
    var x1 = Math.pow(1 + interest, payments1);
	var x2 = Math.pow(1 + interest, payments2);
	var x3 = Math.pow(1 + interest, payments3);
	var x4 = Math.pow(1 + interest, payments4);
    var monthly1 = (principal*x1*interest)/(x1-1);
	var monthly2 = (principal*x2*interest)/(x2-1);
	var monthly3 = (principal*x3*interest)/(x3-1);
	var monthly4 = (principal*x4*interest)/(x4-1);
    if (!isNaN(monthly1) && 
        (monthly1 != Number.POSITIVE_INFINITY) &&
        (monthly1 != Number.NEGATIVE_INFINITY) &&
        (monthly1 >= 0)) {

        if (monthly1>1){
			$("payment1").value =  round(monthly1);
		} else {
			$("payment1").value =  Math.round(monthly1*100)/100;
		}
		if (monthly2>1){
			$("payment2").value =  round(monthly2);
		} else {
			$("payment2").value =  Math.round(monthly2*100)/100;
		}
		if (monthly3>1){
			$("payment3").value =  round(monthly3);
		} else {
			$("payment3").value =  Math.round(monthly3*100)/100;
		}
		if (monthly4>1){
			$("payment4").value =  round(monthly4);
		} else {
			$("payment4").value =  Math.round(monthly4*100)/100;
		}
		if ($("principal").value != '') {
			$("principal").value = round(principal);
		} else {
			$("principal").value = principal;
		}
		if ($("tax_amount").value !=''){
			$("tax_amount").value = round(taxamount);
		} else {
			$("tax_amount").value = taxamount;
		}
    }
    else {
        blankpayment();
    }
	}
}
function round(x,p) {
	return x.toFixed(0)
}

function resetcalculator() {
	$("price").value = "";
	$("down_payment").value = "";
	$("tax_rate").value = "";
	$("tax_amount").value = "";
	$("principal").value = "";
	$("interest").value = "";
	$("trade_in").value = "";
	blankpayment();
	$("price").blur();
	$("price").focus();
}

function resetcalculatorD() {
	$("price").value = getQueryVariable('price');
	//$("price").value = "";
	$("down_payment").value = "";
	$("tax_rate").value = "";
	$("tax_amount").value = "";
	$("principal").value = "";
	$("interest").value = "";
	$("trade_in").value = "";
	blankpayment();
	$("price").blur();
	$("price").focus();
	setApr();
	calculate();
}


function checkprice() {
	if ($("price").value=='') {
		if (language == 'S'){
			showCalculatorError("Por favor introduce el precio de un vehiculo.");	
		}else{
			showCalculatorError("Please enter a vehicle price.");
			//alert("Please enter a vehicle price.");
		}
		$("price").blur();
		$("price").focus();
	}else{
	calculate();	
	}
}

function blankpayment() {
	$("payment1").value = "";
	$("payment2").value = "";
	$("payment3").value = "";
	$("payment4").value = "";
	$("principal").value = "";
}

function setApr(tier) {
	if(tier!='' && tier!=null){
		if (tier==1){$("interest").value = "7.50";}
		if (tier==2){$("interest").value = "8.70";}
		if (tier==3){$("interest").value = "9.90";}
		if (tier==4){$("interest").value = "11.80";}
		if (tier==5){$("interest").value = "13.80";}
		if (tier==6){$("interest").value = "15.60";}
		if (tier==7){$("interest").value = "18.60";}
		if (tier==8){$("interest").value = "22.80";}
	calculate();
	}
}
function showCalculatorError(message){
	$('calculator_error').innerHTML=message;
}
function hideCalculatorError(message){
	$('calculator_error').innerHTML='';
}
