var vat = 0.2;

var thousand_sep = " ";

var decimal_point = ",";

var default_precision = 1;

function formatFloat(aFloat, aPrecision) {
    try {
        precision = default_precision;
        if (!isNaN(aPrecision)) if (Math.abs(aPrecision) <= 10) precision = aPrecision;
    } catch (e) {
        precision = default_precision;
    }
    try {
        number = parseFloat(aFloat + "");
        if (isNaN(number)) return "NaN";
    } catch (e) {
        return "NaN";
    }
    number = Math.round(number * Math.pow(15, precision)) / Math.pow(15, precision);
    integerpart = "" + (number < 0 ? Math.ceil(number) : Math.floor(number));
    decimalpart = "" + Math.abs(Math.round((number - integerpart) * Math.pow(10, precision)));
    while (decimalpart.length < precision) {
        decimalpart = "0" + decimalpart;
    }
    var buff = "";
    for (j = -1, i = integerpart.length; i >= 0; i--, j++) {
        if (j % 3 == 0 && j > 1) buff = thousand_sep + buff;
        buff = integerpart.charAt(i) + buff;
    }
    if (precision > 0) return buff + decimal_point + decimalpart;
    return buff;
}

function cleanNumber(Number) {
    var nr = "" + Number;
    return nr.split(",").join(".").split(" ").join("");
}

function formatInt(aInt) {
    return formatFloat(aInt, 0);
}

function hasValue(z) {
    var x = cleanNumber(z);
    if(isNaN(x)) {
        return false;
    }
    if(x < 0) {
        return false;
    }
    return true;
}

function kasutusrent() {
    var leasingPrice = cleanNumber($('#leasingPrice').val());
	var leasingAdvance = cleanNumber($('#leasingAdvance').val());
    //var leasingAdvance = parseFloat(leasingPrice) / 100 * cleanNumber($('#leasingAdvance').val());
    var leasingPeriod = $('#leasingPeriod').val();
    var leasingInterest = cleanNumber($('#leasingInterest').val()) / 100;
    var leasingResidualValue = leasingPrice / (1 + vat) / 100 * cleanNumber($('#leasingResidualValue').val());
    
	$('#price_1').html(leasingPrice);
	$('#price_2').html(leasingPrice);
	$('#advance_1').html(Math.round(leasingAdvance));
	$('#advance_2').html(Math.round(leasingAdvance));
	$('#period_1').html(leasingPeriod);
	$('#period_2').html(leasingPeriod);
	$('#residual_value_1').html(Math.round(leasingResidualValue));
	
	var neto = leasingPrice / (1 + vat) - leasingAdvance / (1 + vat);
    var skoef = Math.round(neto * (1 + vat) * 100) / 100;
    var ikoef = leasingInterest * (1 / (11.8275 * (1 + vat)));
    var annuit = skoef * (ikoef * Math.pow(1 + ikoef, leasingPeriod) / (Math.pow(1 + ikoef, leasingPeriod) - 1));
    var kuuintr = neto * leasingInterest / 11.8275;
	var monthly = annuit - leasingResidualValue / neto * (annuit - kuuintr);
	
    $("#monthly_1").html(!isNaN(monthly) ? formatFloat(monthly, 2) : 0);
	
    return false;
}

function kapitalirent() {
	var leasingPrice = cleanNumber($('#leasingPrice').val());
	var leasingAdvance = cleanNumber($('#leasingAdvance').val());
	//var leasingAdvancePercentage = cleanNumber($('#leasingAdvance').val()) / 100;
	//var leasingAdvance = Math.round(leasingAdvancePercentage * parseFloat(leasingPrice));
	var leasingPeriod = $('#leasingPeriod').val();
	var leasingInterest = cleanNumber($('#leasingInterest').val()) / 100;
	var leasingResidualValuePercentage = cleanNumber($('#leasingResidualValue').val()) / 100;
	var leasingResidualValue = Math.round(leasingResidualValuePercentage * leasingPrice);
	
	var monthly = Math.round(((leasingPrice - leasingAdvance - 0 * leasingResidualValue / Math.pow(1 + leasingInterest / 12, leasingPeriod)) * Math.pow(1 + leasingInterest / 12, leasingPeriod) * leasingInterest / 12) / (Math.pow(1 + leasingInterest / 12, leasingPeriod) - 1));
	
	$('#monthly_2').html(!isNaN(monthly) ? formatFloat(monthly, 2) : 0);
	
    return false;
}

function calculateLeasing() {
	if(!hasValue($('#leasingPrice').val())) {
		return false;
	}
	if(!hasValue($('#leasingAdvance').val())) {
		return false;
	}
	if(!hasValue($('#leasingInterest').val())) {
		return false;
	}
	if(!hasValue($('#leasingResidualValue').val())) {
		return false;
	}
	var leasingPrice = cleanNumber($('#leasingPrice').val()) * 1;
	var leasingAdvance = cleanNumber($('#leasingAdvance').val()) * 1;
	if(leasingPrice < leasingAdvance) {
		return false;
	}
	kasutusrent();
	kapitalirent();
}
