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(); } );