function round(a, b) {
b = b || 0;
return Math.round(a*Math.pow(10, b))/Math.pow(10, b);
}
function irs() {
var min_el = $('body').find('.irs-min');
var max_el = $('body').find('.irs-max');
$(min_el[0]).html('Сумма займа, руб.');
$(min_el[1]).html('Срок займа, дней');
$(max_el[0]).html(''+$("#calc_sum").val()+'');
$(max_el[1]).html(''+parseInt($("#calc_srok").val()) * 7+'');
}
//инстализация калькулятора по массиву: первый тариф со страхованием Оптима
var calcInit = calcInitFull[0].optima;
//расчет суммы займа с учетом страхования, ставка в день, период в неделях
//расчет аннуитетного платежа, срок в неделях, ставка в день, 365 дней в году, платеж раз в 2 недели
function credit (sum, srok, stavka, insur, insur_sum, codet) {
var srokz = srok;
var sum = parseFloat(sum, 10) || 70000;
var srok = parseInt(srok*7, 10) || 364;
var insur = parseFloat(insur, 10) || 0;
var insur_sum = insur_sum || false;
var itogo = {sum: sum, insur: insur_sum, srok: srok, stavka: stavka, insurStavka: insur, insurSumma: 0, sumNoInsur: sum};
if(insur>0) {
if(itogo.insur) {
itogo.insurSumma = round((sum*insur/100)*srok, 0);
itogo.sumNoInsur = itogo.sum;
itogo.sum = itogo.sum+itogo.insurSumma;
}else {
itogo.insurSumma = round((sum*insur/100)*srok, 0);
itogo.sumNoInsur = itogo.sum;
}
}
itogo.plat = round((itogo.sum*stavka/100*14)/((1-Math.pow(1+stavka/100*14, -(srok/14)))), 2);
$("#l-plat").text(itogo.plat);
$("#l-sum").text(itogo.sum);
$("#l-insur").text(itogo.insurSumma);
$('#calcSummValue').html($("#calc_sum").val());
$('#calcSrokValue').html(parseInt($("#calc_srok").val()) * 7);
return itogo;
}
//вспомагательная функция определения соответсвия в массиве
function steps(type, value, mas) {
for(i = 0; i < mas.length; i++) {
switch (type) {
case 'calcSum':
var temp = mas[i].summ.split("-");
var temp2 = mas[i].summ;
break;
case 'calcSrok':
var temp = mas[i].srok.split("-");
var temp2 = mas[i].srok;
break;
case 'stepSum':
var temp = mas[i].sum.split("-");
var temp2 = mas[i].sum;
break;
case 'stepSrok':
var temp = mas[i].srok.split("-");
var temp2 = mas[i].srok;
break;
}
if(temp.length > 1) {
for(z = parseInt(temp[0]); z <= parseInt(temp[1]); z++) {
if (z == value) {
return mas[i];
}
}
} else {
if (temp2 == value) {
return mas[i];
}
}
}
}
$(document).ready(function ()
{
var $rSumma = $("#calc_zaem"),
$rSrok = $("#calc_period"),
fromMaxSumma = 33,
sSumma,
sSrok;
$('select').niceSelect();
$('#paysistemType').val(calcStart.paysistem_type);
$('#regionType').val(calcStart.region_type);
$('#pacsType').val(calcStart.pacs_type);
$('#InsurType').val(calcStart.insur_type);
$('#TarifType').val(calcStart.tarif_type);
switch ($('#InsurType').val()) {
case '0':
calcInit = calcInitFull[$('#TarifType').val()].optima;
fromMaxSumma = 33;
break;
case '2':
calcInit = calcInitFull[$('#TarifType').val()].start;
fromMaxSumma = 35;
break;
case '3':
calcInit = calcInitFull[$('#TarifType').val()].pilot;
fromMaxSumma = 35;
break;
case '1':
calcInit = calcInitFull[$('#TarifType').val()].no;
fromMaxSumma = 35;
break;
}
$("#calc_srok").val(24);
$("#calc_sum").val(35000);
$('#calcSummValue').html($("#calc_sum").val());
$('#calcSrokValue').html(parseInt($("#calc_srok").val()) * 7);
$rSrok.val(calcStart.srok.from_value);
$rSumma.val(calcStart.summ.from_value);
var nocredit = true;
$rSrok.ionRangeSlider(
{
values: calcStart.srok.values,
from: 6,
from_min: calcStart.srok.from_min,
from_max: calcStart.srok.from_max,
from_shadow: true,
hide_from_to: true,
hide_min_max: false,
postfix: ' н.',
onStart: function (data) {
//$("#calc_srok").val(24);
irs();
},
onChange: function (data) {
$("#calc_srok").val(data.from_value);
data.tarifInit = steps('calcSum', $("#calc_sum").val(), calcInit);
data.tarif = steps('calcSrok', data.from_value, data.tarifInit.period);
data.credit = credit($("#calc_sum").val(), data.from_value, data.tarif.stavka, data.tarif.stavkaInsur, data.tarifInit.insurVSumme, data.tarif.codet);
irs();
},
onFinish: function (data) {
irs();
},
onUpdate: function (data) {
$("#calc_srok").val(data.from_value);
data.tarifInit = steps('calcSum', $("#calc_sum").val(), calcInit);
data.tarif = steps('calcSrok', data.from_value, data.tarifInit.period);
if(nocredit) {
data.credit = credit($("#calc_sum").val(), data.from_value, data.tarif.stavka, data.tarif.stavkaInsur, data.tarifInit.insurVSumme, data.tarif.codet);
}
irs();
},
}
);
sSrok = $rSrok.data("ionRangeSlider");
$rSumma.ionRangeSlider(
{
values: calcStart.summ.values,
hide_from_to: true,
hide_min_max: false,
from_shadow: true,
from: 22,
from_max: fromMaxSumma,
postfix: ' р.',
onStart: function (data) {
data.tarifInit = steps('calcSum', calcStart.summ.from_value, calcInit);
data.tarif = steps('calcSrok', calcStart.srok.from_value, data.tarifInit.period);
nocredit = false;
sSrok.update(
{
from_min: data.tarifInit.srok_from_min,
from_max: data.tarifInit.srok_from_max,
}
);
nocredit = true;
data.credit = credit(calcStart.summ.from_value, calcStart.srok.from_value, data.tarif.stavka, data.tarif.stavkaInsur, data.tarifInit.insurVSumme, data.tarif.codet);
irs();
},
onChange: function (data) {
$("#calc_sum").val(data.from_value);
data.srok = $("#calc_srok").val();
data.tarifInit = steps('calcSum', data.from_value, calcInit);
nocredit = false;
sSrok.update(
{
from_min: data.tarifInit.srok_from_min,
from_max: data.tarifInit.srok_from_max,
}
);
nocredit = true;
data.srok = $("#calc_srok").val();
data.tarif = steps('calcSrok', data.srok, data.tarifInit.period);
data.credit = credit(data.from_value, data.srok, data.tarif.stavka, data.tarif.stavkaInsur, data.tarifInit.insurVSumme, data.tarif.codet);
irs();
},
onFinish: function (data) {
irs();
},
onUpdate: function (data) {
$("#calc_sum").val(data.from_value);
data.srok = $("#calc_srok").val();
data.tarifInit = steps('calcSum', data.from_value, calcInit);
nocredit = false;
sSrok.update(
{
from_min: data.tarifInit.srok_from_min,
from_max: data.tarifInit.srok_from_max,
}
);
nocredit = true;
data.srok = $("#calc_srok").val();
data.tarif = steps('calcSrok', data.srok, data.tarifInit.period);
data.credit = credit(data.from_value, data.srok, data.tarif.stavka, data.tarif.stavkaInsur, data.tarifInit.insurVSumme, data.tarif.codet);
irs();
},
}
);
sSumma = $rSumma.data("ionRangeSlider");
$('#InsurType').on('change', function (e)
{
var typeT = $('#InsurType').val();
switch (typeT) {
case '0':
calcInit = calcInitFull[$('#TarifType').val()].optima;
fromMaxSumma = 33;
break;
case '2':
calcInit = calcInitFull[$('#TarifType').val()].start;
fromMaxSumma = 35;
break;
case '3':
calcInit = calcInitFull[$('#TarifType').val()].pilot;
fromMaxSumma = 35;
break;
case '1':
calcInit = calcInitFull[$('#TarifType').val()].no;
fromMaxSumma = 35;
break;
}
sSumma.update(
{
from_max: fromMaxSumma,
}
);
irs()
}
);
sSumma.update(
{
}
);
irs();
}
);