function SliderControl(data, config) { var defaultConf = { snap: true, changedCB: null, defaultValue: null }; defaultConf.ctrls = { background_bar: '.background-bar', bar: '.background-bar .bar', button: '.background-bar .bar .button', } if (config) { if (config.parent) { SliderControl.addParentElement(config.parent, defaultConf.ctrls); } } var settings = (typeof config === 'object' ? $.extend(true, {}, defaultConf, config) : defaultConf); var button_clicked = false; var movetimeout = 20; var lastmousemove = null; var currentIndex = null; var data_bar_mapping = calcDataBarMapping(data); var percentage_values = Object.keys(data_bar_mapping).sort(function (a, b) { return parseFloat(a) - parseFloat(b); }); if (settings.defaultValue && settings.defaultValue != '') { setBarPos(findPercByValue(settings.defaultValue)); } settings.ctrls.background_bar.on('mousedown', function (event) { if (event.target == settings.ctrls.background_bar[0] || event.target == settings.ctrls.bar[0]) { setBarPos(calcBarPos(event)); } event.preventDefault(); }); settings.ctrls.button.on('mousedown', function (event) { button_clicked = true; }); $(window).on('mouseup', function (event) { button_clicked = false; }); settings.ctrls.button.on('dragstart', function (e) { e.preventDefault(); }); $(window).on('mousemove', function (event) { if (!lastmousemove) { lastmousemove = event.timeStamp; } if (button_clicked && (lastmousemove + movetimeout) < event.timeStamp) { lastmousemove = event.timeStamp; var bar = settings.ctrls.background_bar; var perc = calcBarPos(bar.width(), event.clientX - $(bar).offset().left); setBarPos(perc); } }); function setBarPos(perc) { if (!perc) { return; } var nearestKey = findNearestKey(perc); if (settings.changedCB && nearestKey != currentIndex) { settings.changedCB(perc, nearestKey, data_bar_mapping[nearestKey]); } currentIndex = nearestKey; if (settings.snap) { settings.ctrls.bar.css('width', nearestKey + '%'); } else { settings.ctrls.bar.css('width', perc + '%'); } } function calcBarPos(barwidth, offset) { if (barwidth.offsetX || barwidth.target) { offset = barwidth.offsetX || barwidth.originalEvent.layerX || 0; barwidth = settings.ctrls.background_bar.width(); } return Math.min(1, Math.max(0, (offset / barwidth))) * 100; } function calcDataBarMapping(data) { var data_bar_mapping = { }; var stepWidth = 100 / (data.length - 1); var s = 0; for (var i in data) { data_bar_mapping[s] = data[i]; s += stepWidth; } return data_bar_mapping; } function findNearestKey(perc) { perc = parseFloat(perc); var indices = percentage_values; var prevI = indices[0]; if (perc >= indices[indices.length - 1]) { return indices[indices.length - 1]; } for (var i = 0; i < indices.length; i++) { var currentI = indices[i]; if (currentI > perc) { var dist1 = Math.abs(prevI-perc); var dist2 = Math.abs(currentI-perc); return (dist1 < dist2) ? prevI : currentI; } prevI = currentI; }; } function findPercByValue(value) { for (var k in data_bar_mapping) { var v = data_bar_mapping[k]; if (v == value) { return k; } } } SliderControl.prototype.getValue = function (index) { if (!index) { return data_bar_mapping[currentIndex]; } else { return data_bar_mapping[findNearestKey(index)]; } } SliderControl.prototype.getDataBarMapping = function () { return data_bar_mapping; } SliderControl.prototype.getPercAtValue = function (value) { return findPercByValue(value); } } SliderControl.addParentElement = function (parent, object) { for (var k in object) { var item = object[k]; if (item) { if (typeof item == 'object') { SliderControl.addParentElement(parent, object[k]); } else { if (!parent) { object[k] = $(item); } else { object[k] = $(parent + " " + item); } } } } } function ClientzoneExtensionSlider(extensions_array, config) { //----config---- var defaultConf = { unfinished_name: 'extension-term', default_term: "", max_term: extensions_array[extensions_array.length -1]['extension-term'], min_term: extensions_array[0]['extension-term'], max_price: extensions_array[extensions_array.length -1]['extension-price'], min_price: extensions_array[0]['extension-price'], price_symbol: " €" }; defaultConf.ctrls = { term_input: '#extension_term', price_input: '#extension_price', max_term: '.max_term', min_term: '.min_term', current_term: '.current_term', max_price: '.max_price', min_price: '.min_price', current_price: '.current_price', value_marks: '.value_marks' }; if (config) { if (config.parent) { SliderControl.addParentElement(config.parent, defaultConf.ctrls); } } var settings = (typeof config === 'object' ? $.extend(true, {}, defaultConf, config) : defaultConf); console.log("init extension_slider", settings); //----init---- var slider_values = extensions_array.map(function (elem) { return elem['extension-term']; }); var term_extension_mapping = { }; for (var i = 0; i < extensions_array.length; i++) { var e = extensions_array[i]; term_extension_mapping[e['extension-term']] = e; }; var unfinishedUpdater = new UnfinishedUpdater("/unfinished"); settings.ctrls.max_term.text(settings.max_term); settings.ctrls.min_term.text(settings.min_term); settings.ctrls.max_price.text(settings.max_price + " " + settings.price_symbol); settings.ctrls.min_price.text(settings.min_price + " " + settings.price_symbol); settings.ctrls.current_price.text(term_extension_mapping[settings.default_term] + " " + settings.price_symbol); settings.ctrls.current_term.text(settings.default_term); settings.ctrls.term_input.val(settings.default_term); var slidercontrol = new SliderControl(slider_values, { parent: settings.parent, defaultValue: settings.default_term, snap: true, changedCB: function (total_perc, perc, term) { var extension = term_extension_mapping[term]; settings.ctrls.term_input.val(term); settings.ctrls.price_input.val(extension['extension-price']); settings.ctrls.current_price.text(extension['extension-price'] + " " + settings.price_symbol); settings.ctrls.current_term.text(extension['extension-term']); setValueMarksActive(perc); } }); createValueMarks(); setValueMarksActive(slidercontrol.getPercAtValue(settings.default_term)); unfinishedListen(); //----private functions---- function unfinishedListen() { var lastUnfinishedValue = null; setInterval(function () { var sliderVal = slidercontrol.getValue(); if (sliderVal != lastUnfinishedValue) { unfinishedUpdater.update(settings.unfinished_name, sliderVal); lastUnfinishedValue = sliderVal; } }, 600); } function createValueMarks() { for (var p in slidercontrol.getDataBarMapping()) { var m = $('
').css('left', p + "%"); settings.ctrls.value_marks.append(m); } } function setValueMarksActive(perc) { settings.ctrls.value_marks.children('.mark').each(function () { var l = parseInt($(this)[0].style.left.replace('%', '')); perc = parseInt(perc); if (l == perc) { $(this).addClass('current'); } else if (parseInt(l) < parseInt(perc)) { $(this).addClass('active'); $(this).removeClass('current'); } else { $(this).removeClass('active'); $(this).removeClass('current'); } }); } } function creditlineStartdates () { var matches = [ 1, 5, 10, 15, 20, 25 ]; var start = new Date(); start.setHours(0, 0, 0, 0); var canStart = 0; var values = []; for (var i = 0; i < 30; i++) { canStart++; var month = start.getMonth() < 9 ? '0' + (start.getMonth() + 1).toString() : (start.getMonth() + 1).toString(); var day = start.getDate() < 10 ? '0' + start.getDate().toString() : start.getDate().toString(); if (canStart > 4 && matches.indexOf(start.getDate()) !== -1) { values.push({ id: start.getFullYear() + '-' + month + '-' + day, text: day + '.' + month + '.' + start.getFullYear() }) } start.setDate(start.getDate() + 1); } return values; } function LoanSliderControl(config) { function nearestIndex(array, goal) { var closest = null; var index = -1; $.each(array, function(k, v){ if (closest == null || Math.abs(v - goal) < Math.abs(closest - goal)) { closest = v; index = k; } }); return index; } function treatAsUTC(date) { var result = new Date(date); result.setMinutes(result.getMinutes() - result.getTimezoneOffset()); return result; } function daysBetween(startDate, endDate) { var millisecondsPerDay = 24 * 60 * 60 * 1000; return (treatAsUTC(endDate) - treatAsUTC(startDate)) / millisecondsPerDay; } function dateNotInDefinition(validDates, checkDate) { return validDates.every(function(currentDate) { return (toDate(currentDate).getDate() !== toDate(checkDate).getDate() || toDate(currentDate).getMonth() !== toDate(checkDate).getMonth() || toDate(currentDate).getFullYear() !== toDate(checkDate).getFullYear()); }); }; var defaultConf = { default_amount: window.default_amount, default_term: window.default_term, default_extterm: window.default_extterm, default_product: window.default_product, default_inst_duedate: window.default_inst_duedate, default_startdate: window.default_startdate, use_unfinished_data: window.use_unfinished_data, parent: '', show_visible_limits: window.show_visible_limits || false, instext: false, //Instant extension cz instextterm: 0, instextpromolimit: 0, unfinished_suffix: '', bag: window.bag, pricelist: window.global_pricelist, usePikaday: true, datepicker_active: false, show_installment_info_text: true, dual_slider_breakpoint: '50', installment_step_width: '0.8', use_switch_slider: true, installment_rpmn: false, info_text: false, formatDate: formatDateDefault , getLimitTextBase: null , overrideAPR: function (bag, product) { return false; } , hide_terms_if_one_term_given: false, use_available_product_array: false, available_products: {}, use_amounts_type: null, //can be available or visible pikaday_minrange: 15, pikaday_maxrange: 45, serverPricelistInstallmentValidDates: ["2024-04-27","2024-04-28","2024-04-29","2024-04-30","2024-05-01","2024-05-02","2024-05-03","2024-05-04","2024-05-05","2024-05-06","2024-05-07","2024-05-08","2024-05-09","2024-05-10","2024-05-11","2024-05-12","2024-05-13","2024-05-14","2024-05-15","2024-05-16","2024-05-17","2024-05-18","2024-05-19","2024-05-20","2024-05-21","2024-05-22","2024-05-23","2024-05-24","2024-05-25","2024-05-26","2024-05-27","2024-05-28","2024-05-29","2024-05-30","2024-05-31","2024-06-01","2024-06-02","2024-06-03","2024-06-04","2024-06-05","2024-06-06","2024-06-07","2024-06-08","2024-06-09","2024-06-10","2024-06-11","2024-06-12","2024-06-13","2024-06-14","2024-06-15"], serverPricelistCreditlineValidDates: ["2024-04-27","2024-04-28","2024-04-29","2024-04-30","2024-05-01","2024-05-02","2024-05-03","2024-05-04","2024-05-05","2024-05-06","2024-05-07","2024-05-08","2024-05-09","2024-05-10","2024-05-11","2024-05-12","2024-05-13","2024-05-14","2024-05-15","2024-05-16","2024-05-17","2024-05-18","2024-05-19","2024-05-20","2024-05-21","2024-05-22","2024-05-23","2024-05-24","2024-05-25","2024-05-26","2024-05-27","2024-05-28","2024-05-29","2024-05-30","2024-05-31","2024-06-01","2024-06-02","2024-06-03","2024-06-04","2024-06-05","2024-06-06","2024-06-07","2024-06-08","2024-06-09","2024-06-10","2024-06-11","2024-06-12","2024-06-13","2024-06-14","2024-06-15"], use_dk_installment_slider: false, override_config: null, amount_decimals: 0, info_text_footer_function: null , es_creditline_repayment_table: false, decimals: 2, }; defaultConf.ctrls = { main: { saved: '.summary div.saved', summary: '.summary' }, minimum_amount: '#amount .minimum', maximum_amount: '#amount .maximum', amount: '.summary span.amount', fee: '.summary span.fee', preparation_fee: '.summary span.preparation_fee', crl_real_fee: '.summary span.crl_real_fee', total: '.summary span.total', saved: '.summary span.saved', repay: '.summary .repay', CRL_startdate: '.summary .CRL-startdate', rpmn: '.summary span.rpmn', interest: '.summary span.interest', annual_interest: '.summary span.annual_interest', startdate: '#creditline-startdate', term: '.summary span.term', original: '.summary span.original', original_preparation: '.summary span.original_preparation', termextension: '.summary span.termextension', monthlyrepay: '.summary span.monthlyrepay', extension: { amount: '.summary span.extension_amount', duedate: '.summary span.extension_duedate', total: '.summary span.extension_total' }, creditline_table: '.creditline_table table tbody:not(.static)', endless_creditline_table: '.endless_creditline_table table tbody:not(.static)', credit_remaining: '#cl_remaining', credit_total: '#cl_total', ext_7_day: '.summary div.extfee_calculator span.7_day_ext', ext_14_day: '.summary div.extfee_calculator span.14_day_ext', ext_30_day: '.summary div.extfee_calculator span.30_day_ext', instext_info_text: '.summary #info_text', installment_repayment_table: '.inst_graph_popup:not(.endless_creditline_table) table tbody:not(.static)', feesum: '.summary span.feesum', percentages: { interest: '.box_text .interest_fee', fixed: '.box_text .fixed_fee', rpmn: '.box_text .rpmn' }, installment_summary: '.summary-installment', installment_amount: '.summary span.installment_amount', installment_amountv: '.summary div.installment_amountv', second_installment_amount: '.summary span.second_installment_amount', installment_duedate: { container: ".installment-duedate-container", input_container: '.installment-duedate-container .input-container', input: '.installment-duedate-container input[name=inst-duedate]', datepicker_icon: '.installment-duedate-container .datepicker-icon', summary: '.summary span.first_repayment_date', }, installment_logincontainer: '.installment-logincontainer', totalv: '.summary div.totalv', feev: '.summary div.feev', creditline_first_repayment: '.summary .creditline_first_repayment', creditline_first_repaymentv: '.summary .creditline_first_repaymentv', creditline_duedate: { container: ".creditline-duedate-container", input_container: '.creditline-duedate-container .input-container', input: '.creditline-duedate-container input[name=crl-duedate]', datepicker_icon: '.creditline-duedate-container .datepicker-icon', summary: '.summary span.CRL-startdate', }, summary_tabs: { firstloan: "#firstloan", consecutive: "#consecutive-loan" } }; defaultConf.amount = { input: '#amount input', bar: '#amount .button',//.parent(, masterbar: '#amount div.bar', img: '#amount .button', minus: '#amount .left', plus: '#amount .right', parent: '#amount', }; defaultConf.term = { input: '#term input', day: '#term .day', bar: '#term .button',//.parent(, days_masterbar: '#term .payday-bar', days_bar: '#term .active-payday-bar', months_bar: '#term .installment-bar', masterbar: '#term div.bar', img: '#term .button', minus: '#term .left', plus: '#term .right', parent: '#term', }; defaultConf.extension = { input: '#extension_term input', day: '#extension_term .day', bar: '#extension_term .button',//.parent(, masterbar: '#extension_term div.bar', img: '#extension_term .button', minus: '#extension_term .left', plus: '#extension_term .right' }; defaultConf.additional_elements = { payday_button: 'a#payday-loan-select', creditline_button: 'a#creditline-loan-select', installment_button: 'a#installment-loan-select', summary_payday: '#summary-payday', summary_creditline: '#summary-creditline', summary_installment: '#summary-installment', creditline_additional_info: '#crdl_additional_info', s_message: '#s_message', selected_product: '#selected-product-type', force_product: '#force_product', slider_loan_infotext: '#post_text', slider_pic: '.slider_pic', subsequent_monthly_crl_payment: '.subsequent_monthly_crl_payment', endless_fee: '.endless_fee', endless_startdate: '.endless_startdate', discount_percentage: '.summary span.discount_percentage', mx_detailed_graphic_table: '#mx_graph table tbody:not(.static)', dk_installment_term_field: '#dk-inst-term', }; var par = (config && config.parent) ? config.parent : null; SliderControl.addParentElement(par, defaultConf.ctrls); SliderControl.addParentElement(par, defaultConf.amount); SliderControl.addParentElement(par, defaultConf.term); SliderControl.addParentElement(par, defaultConf.extension); SliderControl.addParentElement(par, defaultConf.additional_elements); defaultConf.snap_months = (defaultConf.term.masterbar.attr('snap-months') === 'true') ? true : false; var settings = (typeof config === 'object' ? $.extend(true, {}, defaultConf, config) : defaultConf); if (settings.override_config) { settings = $.extend(true, {}, settings, settings.override_config); } console.log("slider loaded with ", settings); var ctrls = settings.ctrls; var amount = settings.amount; var term = settings.term; var extension = settings.extension; var all_buttons = $().add(amount.img).add(term.img).add(extension.img); var default_amount = settings.default_amount; var default_term = settings.default_term; var default_extterm = settings.default_extterm; var default_product = settings.default_product; var default_inst_duedate = settings.default_inst_duedate; var snap_months = settings.snap_months; var default_creditline_startdate = settings.default_startdate; //Creditline startdate (default) var datepicker_active = settings.datepicker_active; var show_installment_info_text = settings.show_installment_info_text; var use_unfinished_data = settings.use_unfinished_data; var pikaday_minrange = settings.pikaday_minrange; var pikaday_maxrange = settings.pikaday_maxrange; //USED TO MANUALLY SET PRODUCTS FOR SLIDER var use_available_product_array = settings.use_available_product_array; var available_products = settings.available_products; var current_inst_duedate = null; var current_crl_duedate = null; var show_visible_limits = settings.show_visible_limits; var instext = settings.instext; var instextterm = settings.instextterm; var instextpromolimit = settings.instextpromolimit; var bag = settings.bag; var global_pricelist = settings.pricelist; var img = null; var bar = null; var fullbar = null; var offset = null; var firstRun = true; var dual_slider_breakpoint = settings.dual_slider_breakpoint == 'auto' ? settings.dual_slider_breakpoint : parseInt(settings.dual_slider_breakpoint); var installment_step_width = settings.installment_step_width == 'auto' ? settings.installment_step_width : parseFloat(settings.installment_step_width); var use_switch_slider = settings.use_switch_slider; var use_dk_installment_slider = settings.use_dk_installment_slider; var es_creditline_repayment_table = settings.es_creditline_repayment_table; var summary_tabs = settings.summary_tabs || false; var that = this; var formatTerm = function (term, name, product) { if (product == 2 || product == 3) { return ' mēn.'; } if (name == 'month') { if (term > 1) { return ' mēneši'; } return ' mēnesis'; } if (term == 11) { return ' dienas'; } if (term % 10 == 1) { return ' diena'; } return ' dienas'; }; var formatDate = settings.formatDate; if (ctrls.installment_duedate.input && ctrls.installment_duedate.input.length > 0 && $('#datepicker-container').length > 0 && settings.usePikaday) { //weve to set a default date for the first repayment var d = null; if (window.Pikaday && settings.usePikaday) { $('.pika-single crediton-theme').remove(); var mindate = new Date(); var maxdate = new Date(); if (pikaday_minrange instanceof Date) { mindate = pikaday_minrange; } else { mindate.setDate(mindate.getDate() + pikaday_minrange); } if (pikaday_maxrange instanceof Date) { maxdate = pikaday_maxrange; } else { maxdate.setDate(maxdate.getDate() + pikaday_maxrange); } var disableDayFn; try { var pricelistInstallmentValidDates = settings.serverPricelistInstallmentValidDates || global_pricelist.installment.dateValidationDefinition.getValidDates(bag, null, null); if (pricelistInstallmentValidDates && pricelistInstallmentValidDates.length) { if (default_inst_duedate && default_inst_duedate != '') { var defaultDateNotFound = dateNotInDefinition(pricelistInstallmentValidDates, default_inst_duedate); } else { var defaultDateNotFound = true; } if (defaultDateNotFound) { tempDate = new Date(); tempDate.setMonth(tempDate.getMonth() + 1); if (dateNotInDefinition(pricelistInstallmentValidDates, tempDate)) { d = toDate(pricelistInstallmentValidDates[0]); } else { d = tempDate; } } else { d = toDate(default_inst_duedate); } mindate = null; maxdate = null; disableDayFn = function (date) { var enabled_dates = pricelistInstallmentValidDates; // dates that should be enabled. var d = new Date(date); date = [d.getFullYear(), ('0' + (d.getMonth() + 1)).slice(-2), ('0' + d.getDate()).slice(-2)].join('-'); if ($.inArray(date, enabled_dates) === -1) { return date; } }; } } catch (e) { console.log('Failed to fetch installment DateValidationDefinitions from backend'); } that.datePicker = new Pikaday( { field: ctrls.installment_duedate.input[0], theme: 'crediton-theme ' + Date.now(), minDate: mindate, maxDate: maxdate, showDaysInNextAndPreviousMonths: true, disableDayFn: disableDayFn, firstDay: 1, bound: false, container: $('#datepicker-container')[0], onSelect: function() { var aDate = this.getDate(); var formatted = formatDate(aDate); current_inst_duedate = aDate; ctrls.installment_duedate.summary.text(formatted); ctrls.installment_duedate.input.val(formatted); this.hide(); that.setVal(true); if (settings.dateChangedCB) { settings.dateChangedCB(formatDate(aDate)); } }, i18n: {"previousMonth":"iepriekšējais mēnesis","nextMonth":"nākošais mēnesis","months":["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],"weekdays":["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"],"weekdaysShort":["sv","pr","ot","tr","ce","pk","se"]} }); that.datePicker.hide(); $(document).click(function (event) { if (settings.ctrls.installment_duedate.input_container.has(event.target).length) { if (that.datePicker.isVisible()) { that.datePicker.hide(); } else { that.datePicker.show(); } event.preventDefault(); } else { that.datePicker.hide(); } }); //that.datePicker.hide(); that.datePicker.setDate(d, true); //datePicker.show(); } ctrls.installment_duedate.summary.text(formatDate(d)); ctrls.installment_duedate.input.val(formatDate(d)); current_inst_duedate = d; } if (ctrls.creditline_duedate.input && ctrls.creditline_duedate.input.length > 0 && settings.usePikaday) { //weve to set a default date for the first repayment var d = null; if (window.Pikaday && settings.usePikaday) { $('.pika-single crediton-theme').remove(); var mindate = new Date(); var maxdate = new Date(); if (pikaday_minrange instanceof Date) { mindate = pikaday_minrange; } else { mindate.setDate(mindate.getDate() + pikaday_minrange); } if (pikaday_maxrange instanceof Date) { maxdate = pikaday_maxrange; } else { maxdate.setDate(maxdate.getDate() + pikaday_maxrange); } var disableCrlDayFn; try { var pricelistCreditlineValidDates = settings.serverPricelistCreditlineValidDates || global_pricelist.creditline.dateValidationDefinition.getValidDates(bag, null, null); if (pricelistCreditlineValidDates && pricelistCreditlineValidDates.length) { if (default_creditline_startdate && default_creditline_startdate != '') { var defaultDateNotFound = dateNotInDefinition(pricelistCreditlineValidDates, default_creditline_startdate); } else { var defaultDateNotFound = true; } if (defaultDateNotFound) { tempDate = new Date(); tempDate.setMonth(tempDate.getMonth() + 1); if (dateNotInDefinition(pricelistCreditlineValidDates, tempDate)) { d = toDate(pricelistCreditlineValidDates[0]); } else { d = tempDate; } } else { d = toDate(default_creditline_startdate); } mindate = null; maxdate = null; disableCrlDayFn = function (date) { var enabled_dates = pricelistCreditlineValidDates; // dates that should be enabled. var d = new Date(date); date = [d.getFullYear(), ('0' + (d.getMonth() + 1)).slice(-2), ('0' + d.getDate()).slice(-2)].join('-'); if ($.inArray(date, enabled_dates) === -1) { return date; } }; } } catch (e) { console.log('Failed to fetch creditline DateValidationDefinitions from backend', e); } that.crl_datePicker = new Pikaday( { field: ctrls.creditline_duedate.input[0], theme: 'crediton-theme ' + Date.now(), minDate: mindate, maxDate: maxdate, showDaysInNextAndPreviousMonths: true, firstDay: 1, disableDayFn: disableCrlDayFn, bound: false, container: $('#datepicker-container-crl')[0], onSelect: function() { var aDate = this.getDate(); current_crl_duedate = aDate; ctrls.creditline_duedate.summary.text(formatDate(aDate)); ctrls.creditline_duedate.input.val(formatDate(aDate)); this.hide(); that.setVal(true); if (settings.dateChangedCB) { settings.dateChangedCB(); } }, i18n: {"previousMonth":"iepriekšējais mēnesis","nextMonth":"nākošais mēnesis","months":["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],"weekdays":["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"],"weekdaysShort":["sv","pr","ot","tr","ce","pk","se"]} }); that.crl_datePicker.hide(); $(document).click(function (event) { if (settings.ctrls.creditline_duedate.input_container.has(event.target).length) { if (that.crl_datePicker.isVisible()) { that.crl_datePicker.hide(); } else { that.crl_datePicker.show(); } event.preventDefault(); } else { that.crl_datePicker.hide(); } }); //that.datePicker.hide(); that.crl_datePicker.setDate(d, true); //datePicker.show(); } ctrls.creditline_duedate.summary.text(formatDate(d)); ctrls.creditline_duedate.input.val(formatDate(d)); current_crl_duedate = d; } else if (default_creditline_startdate && default_creditline_startdate != '') { try { var pricelistCreditlineValidDates = settings.serverPricelistCreditlineValidDates || global_pricelist.creditline.dateValidationDefinition.getValidDates(bag, null, null); if (pricelistCreditlineValidDates && pricelistCreditlineValidDates.length) { var defaultDateNotFound = dateNotInDefinition(pricelistCreditlineValidDates, default_creditline_startdate); if (defaultDateNotFound) { tempDate = new Date(); tempDate.setMonth(tempDate.getMonth() + 1); if (dateNotInDefinition(pricelistCreditlineValidDates, tempDate)) { current_crl_duedate = toDate(pricelistCreditlineValidDates[0]); } else { current_crl_duedate = tempDate; } } else { current_crl_duedate = toDate(default_creditline_startdate); } default_creditline_startdate = formatDate(current_crl_duedate); } } catch (e) { console.log('Failed to fetch creditline DateValidationDefinitions from backend'); } } amount.input.keyup(function (e) { switch (e.keyCode) { case 38: // up curamount = Math.min(maxamount, curamount + 1); sliderupdate(); that.setVal(true); return; case 40: // down curamount = Math.min(maxamount, curamount - 1); sliderupdate(); that.setVal(true); return; } var target = parseFloat(amount.input.val()); if (!isNaN(target)) { target = nearestIndex(amounts, target); curamount = target; sliderupdate(); that.setVal(); } }); term.input.keyup(function (e) { var target = parseFloat(term.input.val()); if (!isNaN(target)) { //ugly fix for an ugly bug if (productSelect) { if (productSelect == 3) { curterm = terms.length - 1; } else if (productSelect == 2) { curterm = limit_py.terms.length + nearestIndex(limit_in.terms, target); } else { curterm = nearestIndex(terms, target); } } else { target = nearestIndex(terms, target); curterm = target; } sliderupdate(); that.setVal(); } }); extension.input.keyup(function (e) { switch (e.keyCode) { case 38: // up curextterm = Math.min(maxextterm, curextterm + 1); sliderupdate(); that.setVal(true); return; case 40: // down curextterm = Math.min(maxextterm, curextterm - 1); sliderupdate(); that.setVal(true); return; } var target = parseFloat(extension.input.val()); if (!isNaN(target)) { target = nearestIndex(extterms, target); curextterm = target; sliderupdate(); that.setVal(); } }); $(amount.minus).mousedown(function (e) { if (e.which != 1) { return; } fmouse = true; mousepressed(function () { if (curamount > 0) { curamount--; } /*if (curamount <= paydayMaxLimit && productSelect == 3){ curterm = limit_py.terms.length - 1;; switchPayday(); } */ that.setVal(); }); }); $(term.minus).mousedown(function (e) { if (e.which != 1) { return; } fmouse = true; mousepressed(function () { if (curterm > 0) { curterm--; } that.setVal(); }); }); $(extension.minus).mousedown(function (e) { if (e.which != 1) { return; } fmouse = true; mousepressed(function () { if (curextterm > 0) { curextterm--; } that.setVal(); }); }); $(amount.plus).mousedown(function (e) { if (e.which != 1) { return; } fmouse = true; mousepressed(function () { if (curamount < maxamount) { curamount++; } /*if (curamount > paydayMaxLimit && productSelect == 1){ curterm = fullterms.length - 1; switchCreditline(); } */ that.setVal(); }); }); $(term.plus).mousedown(function (e) { if (e.which != 1) { return; } fmouse = true; mousepressed(function () { if (curterm < maxterm) { curterm++; } that.setVal(); }); }); $(extension.plus).mousedown(function (e) { if (e.which != 1) { return; } fmouse = true; mousepressed(function () { if (curextterm < maxextterm) { curextterm++; } that.setVal(); }); }); all_buttons.on((window.navigator.msPointerEnabled ? 'MSPointerDown' : 'touchstart'), function (e) { img = $(this); bar = img.parent(); fullbar = bar.parent(); var touch = e.originalEvent.targetTouches ? e.originalEvent.targetTouches[0] : e.originalEvent; offset = { left: touch.pageX - img.offset().left - img.width() / 2, top: touch.pageY - img.offset().top }; e.stopImmediatePropagation(); e.preventDefault(); }); all_buttons.on((window.navigator.msPointerEnabled ? 'MSPointerMove' : 'touchmove'), function (e) { if (img) { var touch = e.originalEvent.targetTouches ? e.originalEvent.targetTouches[0] : e.originalEvent; var total = fullbar.width(); var width = touch.pageX - bar.offset().left - offset.left; var move = Math.min(1, Math.max(0, (width / total))); var ni = null; if (img.is(term.img) && snap_months) { snapobj = snap(move, term_percentage_mapping); ni = snapobj.ni; if ((move * 100) > snapThreshold) { move = snapobj.move; } renderTermBars(move); } bar.css('width', (move * 100) + '%'); sliderchange(img, move, ni); } e.stopImmediatePropagation(); e.preventDefault(); }); all_buttons.on((window.navigator.msPointerEnabled ? 'MSPointerUp' : 'touchend'), function (e) { img = null; e.stopImmediatePropagation(); e.preventDefault(); }); $(amount.masterbar).on('mousedown', function (e) { var fullbar = amount.masterbar; var bar = amount.bar; var img = amount.img; if (e.target == fullbar[0] || e.target == bar[0]) { var total = fullbar.width(); var width = e.offsetX || e.originalEvent.layerX || 0; var move = Math.min(1, Math.max(0, (width / total))); bar.css('width', (move * 100) + '%'); sliderchange(img, move); } }); $(term.masterbar).on('mousedown', function (e) { var fullbar = term.masterbar; var bar = term.bar; var img = term.img; if (!$(e.target).is(img)) { var offsetLeft = e.pageX - fullbar.offset().left; var move = Math.min(1, Math.max(0, (offsetLeft / fullbar.width()))); var ni = null; if (snap_months) { snapobj = snap(move, term_percentage_mapping); ni = snapobj.ni; if ((move * 100) > snapThreshold) { move = snapobj.move; } renderTermBars(move); } bar.css('width', (move * 100) + '%'); sliderchange(img, move, ni); } }); $(extension.masterbar).on('mousedown', function (e) { var fullbar = extension.masterbar; var bar = extension.bar; var img = extension.img; if (e.target == fullbar[0] || e.target == bar[0]) { var total = fullbar.width(); var width = e.offsetX || e.originalEvent.layerX || 0; var move = Math.min(1, Math.max(0, (width / total))); bar.css('width', (move * 100) + '%'); sliderchange(img, move); } }); $(window).on('mouseup', function () { fmouse = false; time = 100; }); settings.ctrls.startdate.change(function () { that.setVal(true); uploadSliderValues(); }); $('#dateswitch').click(function () { that.setVal(true); uploadSliderValues(); }); var time = 100; function mousepressed(callback) { if (fmouse) { callback(); setTimeout(function() { mousepressed(callback); }, time); time = Math.max(1, time - 1); sliderupdate(); } else { time = 100; } } var sliderupdate = function (slider) { var move = Math.min(1, Math.max(0, (curamount / maxamount))); amount.bar.css('width', (move * 100) + '%') move = Math.min(1, Math.max(0, (curterm / maxterm))); if (snap_months) { move = term_percentage_mapping[curterm] / 100; } renderTermBars(move); term.bar.css('width', (move * 100) + '%') move = Math.min(1, Math.max(0, (curextterm / maxextterm))); extension.bar.css('width', (move * 100) + '%') }; var sliderchange = function (slider, percent, overrule) { if (slider.is(amount.img)) { curamount = Math.round(percent * maxamount); } if (slider.is(term.img)) { if (overrule) { curterm = overrule; } else { curterm = Math.round(percent * maxterm); } } if (slider.is(extension.img)) { curextterm = Math.round(percent * maxextterm); } that.setVal(); } all_buttons .on('mousedown', function (e) { img = $(this); bar = img.parent(); fullbar = bar.parent(); offset = { left: (e.offsetX || e.originalEvent.layerX || 0) - img.width() / 2, top: (e.offsetY || e.originalEvent.layerY || 0) }; e.preventDefault(); }); all_buttons .on('dragstart', function (e) { e.preventDefault(); }); //$(settings.parent + ' #extension_selection').select2(); //CODE FROM SLIDER.HTML settings.term.input.change(function (e) { if (isNaN(forcedProduct)) { that.setVal(); } }); settings.additional_elements.payday_button.click(function (e) { /*curterm = limit_py.terms.length - 1;*/ switchPayday(); settings.additional_elements.payday_button.trigger('change'); e.preventDefault(); }); settings.additional_elements.installment_button.click(function (e) { //curterm = fullterms.length - 1; // curterm = (limit_py.terms.length + limit_in.terms.length) - 1; switchInstallment(); settings.additional_elements.installment_button.trigger('change'); e.preventDefault(); }); settings.additional_elements.creditline_button.click(function (e) { /*curterm = fullterms.length - 1;*/ switchCreditline(); settings.additional_elements.creditline_button.trigger('change'); e.preventDefault(); }); //END function switchCreditline() { if (productSelect != 3) { productSelect = 3; setNewProduct = true; //Move slider adjustTerms(); that.setVal(true); } } function switchInstallment() { if (productSelect != 2) { productSelect = 2; setNewProduct = true; //Move slider adjustTerms(); that.setVal(true); } } function switchPayday() { if (productSelect != 1){ productSelect = 1; setNewProduct = true; adjustTerms(); //Move slider that.setVal(true); } } $(window) .mousemove( function (e) { if (img) { var total = fullbar.width(); var width = e.pageX - bar.offset().left - offset.left; var move = Math.min(1, Math.max(0, (width / total))); var ni = null; if (img.is(term.img) && snap_months) { snapobj = snap(move, term_percentage_mapping); ni = snapobj.ni; if ((move * 100) > snapThreshold) { move = snapobj.move; } renderTermBars(move); } bar.css('width', (move * 100) + '%'); sliderchange(img, move, ni); } } ) .on('mouseup', function (e) { img = null; } ); $(window) .on('touchmove', function (e) { if (img) { var total = fullbar.width(); var width = e.pageX - bar.offset().left - offset.left; var move = Math.min(1, Math.max(0, (width / total))); var ni = null; if (img.is(term.img) && snap_months) { snapobj = snap(move, term_percentage_mapping); ni = snapobj.ni; if ((move * 100) > snapThreshold) { move = snapobj.move; } renderTermBars(move); } bar.css('width', (move * 100) + '%'); sliderchange(img, move, ni); } } ) .on('touchend', function (e) { img = null; } ); var lastAmountIndex = -1; var lastTermIndex = -1; var lastExtTermIndex = -1; var forcedProduct = settings.additional_elements.force_product.val(); var product_map = { 1: 'payday', 2: 'installment', 3: 'creditline', } var data, limit, fullterms = [], names = [], fullamounts= [], paydayMaxLimit, creditlineMinLimit, term_percentage_mapping = [], snapThreshold; function fulltermsConcat(limit) { if (limit.terms.length == 0) { throw new Error('Visible Terms array is empty!!!'); } if(show_visible_limits){ fullterms = fullterms.concat(limit.terms); } else { fullterms = fullterms.concat(limit.terms_available.length == 0 ? limit.terms : limit.terms_available); } } //Check to see if product array is to be used (default: no) if(!use_available_product_array) { var visible_products = [1, 2, 3]; // CREATE DATASET FOR SLIDER BASED ON CACHED PRICELIST () if ('payday' in global_pricelist && (isNaN(forcedProduct) || forcedProduct == 1)) { var data_py = global_pricelist.payday; var limit_py = data_py.evaluateLimit(bag); if (limit_py.amounts_visible.length == 0) { settings.additional_elements.payday_button.hide(); visible_products.splice(visible_products.indexOf(1), 1); } else { fulltermsConcat(limit_py); names = names.concat(Array.apply(null, new Array(fullterms.length)).map(function() { return 'day' })); } } else { settings.additional_elements.payday_button.hide(); visible_products.splice(visible_products.indexOf(1), 1); } if ('installment' in global_pricelist && (isNaN(forcedProduct) || forcedProduct == 2)) { var data_in = global_pricelist.installment; var limit_in = data_in.evaluateLimit(bag); if (limit_in.amounts_visible.length == 0) { /*productSelect = 1; forcedProduct = 1;*/ settings.additional_elements.installment_button.hide(); visible_products.splice(visible_products.indexOf(2), 1); term.parent.removeClass('steps-term'); snap_months = false; } else { if (use_dk_installment_slider) { limit_in.terms = limit_in.terms.reverse(); limit_in.terms_available = limit_in.terms_available.reverse(); } fulltermsConcat(limit_in); names = names.concat(Array.apply(null, new Array(show_visible_limits ? limit_in.terms.length : limit_in.terms_available.length)).map(function() { return 'month' })); } //fullterms = fullterms.concat(Array.apply(null, new Array(fullterms.length || 1)).map(function() { return limit_in.terms; })); } else { settings.additional_elements.installment_button.hide(); visible_products.splice(visible_products.indexOf(2), 1); } if ('creditline' in global_pricelist && (isNaN(forcedProduct) || forcedProduct == 3)) { var data_cl = global_pricelist.creditline; var limit_cl = data_cl.evaluateLimit(bag); //fullterms = fullterms.concat(limit_cl.terms); if (limit_cl.amounts_visible.length == 0) { settings.additional_elements.creditline_button.hide(); visible_products.splice(visible_products.indexOf(3), 1); } } else { settings.additional_elements.creditline_button.hide(); visible_products.splice(visible_products.indexOf(3), 1); } if (default_product && visible_products.indexOf(default_product) < 0) { default_product = visible_products[0] } } else { // CREATE DATASET BASED ON AVAILABLE PRODUCTS ARRAY (NEW CODE) if ('payday' in available_products && 'payday' in global_pricelist) { var data_py = global_pricelist.payday; var limit_py = data_py.evaluateLimit(bag); fulltermsConcat(limit_py); names = names.concat(Array.apply(null, new Array(fullterms.length)).map(function() { return 'day' })); } else { settings.additional_elements.payday_button.hide(); } if ('installment' in available_products && 'installment' in global_pricelist) { var data_in = global_pricelist.installment; var limit_in = data_in.evaluateLimit(bag); if (use_dk_installment_slider) { limit_in.terms = limit_in.terms.reverse(); limit_in.terms_available = limit_in.terms_available.reverse(); } fulltermsConcat(limit_in); names = names.concat(Array.apply(null, new Array(limit_in.terms.length)).map(function() { return 'month' })); } else { settings.additional_elements.installment_button.hide(); } if ('creditline' in available_products && 'creditline' in global_pricelist) { var data_cl = global_pricelist.creditline; var limit_cl = data_cl.evaluateLimit(bag); } else { settings.additional_elements.creditline_button.hide(); } } //SELECT DEFAULT VALUES FOR SLIDER FROM PRICELIST / LOAN LIMIT STAGING IF THERE'S NO DATA IN UNFINISHED YET if (!use_unfinished_data) { if (limit_py && limit_py.slider_default) { if (limit_py.slider_default.default_product == 1) { if (limit_py.amounts_available.indexOf(limit_py.slider_default.amount) > -1) { default_amount = parseFloat(limit_py.slider_default.amount).toFixed(0); } if (limit_py.terms_available.indexOf(limit_py.slider_default.term) > -1) { default_term = parseFloat(limit_py.slider_default.term).toFixed(0); } default_product = limit_py.slider_default.default_product; } } if (limit_in && limit_in.slider_default) { if (limit_in.slider_default.default_product == 2) { if (limit_in.amounts_available.indexOf(limit_in.slider_default.amount) > -1) { default_amount = parseFloat(limit_in.slider_default.amount).toFixed(0); } if (limit_in.terms_available.indexOf(limit_in.slider_default.term) > -1) { default_term = parseFloat(limit_in.slider_default.term).toFixed(0); } default_product = limit_in.slider_default.default_product; } } if (limit_cl && limit_cl.slider_default) { if (limit_cl.slider_default.default_product == 3) { if (limit_cl.amounts_available.indexOf(limit_cl.slider_default.amount) > -1) { default_amount = parseFloat(limit_cl.slider_default.amount).toFixed(0); } if (limit_cl.terms_available.indexOf(limit_cl.slider_default.term) > -1) { default_term = parseFloat(limit_cl.slider_default.term).toFixed(0); } default_product = limit_cl.slider_default.default_product; } } } if (!isNaN(forcedProduct)) { var productSelect = forcedProduct; } else { var productSelect = default_product; } //check if select product (maybe saved from unfinished) is available for this slider if (use_available_product_array && productSelect) { if (!(product_map[productSelect] in available_products)) { for (pi in product_map) { if (product_map[pi] in available_products) { productSelect = pi; break; } } } } function adjustTerms() { if (!use_switch_slider) { if (productSelect == 1) { dual_slider_breakpoint = 100; } else if (productSelect == 2) { dual_slider_breakpoint = 0; } } else { dual_slider_breakpoint = settings.dual_slider_breakpoint; if (dual_slider_breakpoint == 'auto') { var days = names.filter(function (name) {return name == "day";}).length; var months = names.filter(function (name) {return name == "month";}).length; dual_slider_breakpoint = Math.max(Math.min(0.9, (days / names.length * 0.78)), 0.1) * 100; if (days == 1) { dual_slider_breakpoint = 10; } if (months == 1) { dual_slider_breakpoint = 90; } } } if (isNaN(forcedProduct) && !use_available_product_array && ('installment' in global_pricelist)) { calcbarObj = calcBarPercentages(names, { day: dual_slider_breakpoint, month: (100 - dual_slider_breakpoint) }); snapThreshold = dual_slider_breakpoint; term_percentage_mapping = calcbarObj.resultArray; initTermBars(); } else { dual_slider_breakpoint = 0; snapThreshold = dual_slider_breakpoint; term_percentage_mapping = calcBarPercentages(names); initTermBars(); } } adjustTerms(); if (productSelect == 1) { data = data_py; limit = limit_py; } else if (productSelect == 2) { data = data_in; limit = limit_in; } else if (productSelect == 3) { data = data_cl; limit = limit_cl; } if (!isNaN(forcedProduct) && limit.terms.length < 2 && settings.hide_terms_if_one_term_given) { settings.term.parent.css("display", "none"); settings.term.parent.hide(); settings.term.parent.parent().find('#no-term-text').css('display', ''); } var amounts = limit.amounts_visible; var terms = fullterms; var extterms = []; function selectCorrectAmounts() { amounts = limit.amounts_visible; terms = (show_visible_limits) ? limit.terms : limit.terms_available; if (settings.use_amounts_type) { switch (settings.use_amounts_type) { case 'visible': amounts = limit.amounts_visible; break; case 'available': amounts = limit.amounts_available; break; default: throw new Error('Unknown use_amounts_type type given'); break; } } else { for (var id in data.pricelists) { if (data.pricelists[id].type == 'extension-fee-cl') { extterms = data.pricelists[id].terms; } if (data.pricelists[id].type == 'principal') { if (!show_visible_limits) { amounts = limit.amounts_available; } } } if (limit.amounts_visible.length == 0) { amounts = limit.amounts_available; } } } selectCorrectAmounts(); if (default_amount == null) { default_amount = amounts[amounts.length - 1]; } var maxamount = amounts.length - 1; var maxterm = terms.length - 1; var maxextterm = extterms.length - 1; var curamount = nearestIndex(amounts, default_amount); var curterm = -1; if (productSelect == 3) { curterm = limit_cl.terms.length - 1; } else if (productSelect == 2) { if (forcedProduct == 2 || !limit_py) { curterm = nearestIndex(fullterms, default_term); } else { curterm = limit_py.terms.length + nearestIndex(limit_in.terms, default_term); } } else { curterm = nearestIndex(fullterms, default_term); } var curextterm = nearestIndex(extterms, default_extterm); var setNewProduct = true; sliderupdate(); function switchToProduct(product) { switch (product) { case 1: switchPayday(); settings.additional_elements.payday_button.click(); break; case 2: switchInstallment(); settings.additional_elements.installment_button.click(); break; case 3: switchCreditline(); settings.additional_elements.creditline_button.click(); break; } } function handleProductSwitch() { //FIXED NaN Bug (Makes slider work correctly when switching product) if ('payday' in global_pricelist && (('creditline' in global_pricelist && curterm >= limit_py.terms.length && !('installment' in global_pricelist)) || ('installment' in global_pricelist && !use_switch_slider && 'creditline' in global_pricelist && curterm >= ((show_visible_limits ? limit_py.terms.length : limit_py.terms_available.length) + (show_visible_limits ? limit_in.terms.length : limit_in.terms_available.length))))) { switchToProduct(3); } else if ((('installment' in global_pricelist && 'payday' in global_pricelist && curterm >= limit_py.terms.length ) || ('installment' in global_pricelist && !('payday' in global_pricelist))) && productSelect != 3 && use_switch_slider) { switchToProduct(2); } else if (productSelect != 3 && use_switch_slider) { switchToProduct(1); } } this.setVal = function (force, force_amount, force_term, _setNewProduct) { if (lastAmountIndex == curamount && lastTermIndex == curterm && curextterm == lastExtTermIndex && !force) { return; } if (curamount == -1 || curterm == -1) { return; } if (_setNewProduct !== undefined) { setNewProduct = _setNewProduct; } if (force_amount) { curamount = nearestIndex(amounts, force_amount); sliderupdate(); } if (force_term) { if (productSelect == 3) { curterm = fullterms.length - 1; } else if (productSelect == 2) { if (!limit_py || !limit_in) { curterm = nearestIndex(fullterms, force_term); } else { curterm = limit_py.terms.length + nearestIndex(limit_in.terms, force_term); } } else { curterm = nearestIndex(fullterms, force_term); } sliderupdate(); } // OLD SWITCH CODE (WITHOUT PRODUCT ARRAY) if (isNaN(forcedProduct) && !setNewProduct) { if (!use_available_product_array) { handleProductSwitch(); } else { if ('creditline' in available_products) { if ('installment' in available_products) { if ('payday' in available_products) { if (curterm >= (limit_py.terms.length + limit_in.terms.length)) { switchToProduct(3); } } else if ('payday' in available_products) { if (curterm >= (limit_in.terms.length)) { switchToProduct(3); } } } else if ('payday' in available_products) { if (curterm >= (limit_py.terms.length)) { switchToProduct(3); } } } else if ('installment' in available_products && productSelect != 3) { if ('payday' in available_products) { if (curterm >= limit_py.terms.length && use_switch_slider) { switchToProduct(2); } } } else if (productSelect != 3 && use_switch_slider) { switchToProduct(1); } } if (!use_switch_slider && limit_py) { if (productSelect == 1 && curterm >= limit_py.terms.length) { curterm = limit_py.terms.length-1; } if (productSelect == 2 && curterm < limit_py.terms.length) { curterm = limit_py.terms.length; } } } else { //ADAPT TERM if NEW PRODUCT is set (via buttons). if (setNewProduct && !firstRun) { curterm = 0; if (productSelect == 1) { curterm = limit_py.terms.length - 1; } else if (productSelect == 2) { if(limit_py) { curterm += limit_py.terms.length; } curterm += limit_in.terms.length - 1; } else if (productSelect == 3) { //iam not shure what it does, but it breaks ge slider, Kitzi //curterm = limit_cl.terms[0] - 1; //so changed to this curterm = limit_cl.terms.length - 1; } } } var _amount = parseFloat(amounts[curamount]); if (settings.changedCB) { settings.changedCB(); } /* ############################################################## CHANGE SLIDER SETUP/APPEARANCE BASED ON SELECTED PRODUCT SET NEW PRODUCT SETTINGS ############################################################## */ if (productSelect == 3 && setNewProduct == true) { //SET SETTINGS FOR CREDITLINE PRODUCT settings.additional_elements.creditline_button.addClass('active').trigger('classChange'); settings.additional_elements.summary_creditline.removeClass('inactive'); settings.additional_elements.creditline_additional_info.removeClass('inactive'); //settings.additional_elements.slider_pic.removeClass('inactive'); settings.additional_elements.payday_button.removeClass('active'); settings.additional_elements.summary_payday.addClass('inactive'); settings.additional_elements.s_message.css('display', 'none'); settings.additional_elements.installment_button.removeClass('active'); ctrls.installment_summary.addClass('inactive'); $('#term').hide(); $('#creditline-info-text').css('display', 'block'); $('.logincontainer').removeClass('show'); data = global_pricelist.creditline; limit = data.evaluateLimit(bag); selectCorrectAmounts(); terms = limit_cl.terms; maxamount = amounts.length - 1; maxterm = fullterms[fullterms.length-1]; maxextterm = extterms.length - 1; curamount = Math.min(nearestIndex(amounts, _amount), maxamount); force = true; ctrls.creditline_duedate.container.show(); ctrls.installment_duedate.container.hide(); setNewProduct = false; sliderupdate(); } else if (productSelect == 2 && setNewProduct == true) { // INSTALLMENTS settings.additional_elements.installment_button.addClass('active').trigger('classChange'); ctrls.installment_summary.removeClass('inactive'); //$('#crdl_table').hide(); settings.additional_elements.payday_button.removeClass('active'); settings.additional_elements.summary_payday.addClass('inactive'); settings.additional_elements.s_message.css('display', 'none'); settings.additional_elements.creditline_button.removeClass('active'); settings.additional_elements.summary_creditline.addClass('inactive'); settings.additional_elements.creditline_additional_info.addClass('inactive'); //settings.additional_elements.slider_pic.addClass('inactive'); $('#term').show(); $('#creditline-info-text').css('display', 'none'); $('#crdl_table').hide(); if (!use_switch_slider && limit_in.terms.length > 0) { if (!settings.hide_terms_if_one_term_given && limit_in.terms.length > 1) { settings.term.parent.show(); } else if (settings.hide_terms_if_one_term_given && limit_in.terms.length == 1) { settings.term.parent.hide(); } else { settings.term.parent.show(); } } else if (use_available_product_array && limit_in.terms.length == 1) { settings.term.parent.hide(); } data = global_pricelist.installment; limit = data.evaluateLimit(bag); selectCorrectAmounts(); terms = fullterms; maxamount = amounts.length - 1; maxterm = terms.length - 1; maxextterm = extterms.length - 1; curamount = Math.min(nearestIndex(amounts, _amount), maxamount); force = true; ctrls.installment_duedate.container.show(); ctrls.creditline_duedate.container.hide(); setNewProduct = false; sliderupdate(); } else if (productSelect == 1 && setNewProduct == true) { //SET SETTINGS FOR PAYDAY PRODUCT settings.additional_elements.payday_button.addClass('active').trigger('classChange'); settings.additional_elements.summary_payday.removeClass('inactive'); settings.additional_elements.s_message.removeAttr("style"); //$('#crdl_table').hide(); settings.additional_elements.creditline_button.removeClass('active'); settings.additional_elements.summary_creditline.addClass('inactive'); settings.additional_elements.creditline_additional_info.addClass('inactive'); settings.additional_elements.installment_button.removeClass('active'); ctrls.installment_summary.addClass('inactive'); //settings.additional_elements.slider_pic.addClass('inactive'); if (limit_py.terms.length > 0) { if (!settings.hide_terms_if_one_term_given && limit_py.terms.length > 1) { settings.term.parent.show(); } else if (settings.hide_terms_if_one_term_given && limit_py.terms.length == 1) { settings.term.parent.hide(); } else { settings.term.parent.show(); } } $('#creditline-info-text').css('display', 'none'); $('#crdl_table').hide(); data = global_pricelist.payday; limit = data.evaluateLimit(bag); selectCorrectAmounts(); terms = fullterms; maxamount = amounts.length - 1; maxterm = terms.length - 1; maxextterm = extterms.length - 1; curamount = Math.min(nearestIndex(amounts, _amount), maxamount); force = true; ctrls.installment_duedate.container.hide(); ctrls.creditline_duedate.container.hide(); setNewProduct = false; sliderupdate(); } settings.additional_elements.selected_product.val(productSelect); if (settings.additional_elements.selected_product.get(0)) { var e = document.createEvent("HTMLEvents"); e.initEvent("change", true, true); settings.additional_elements.selected_product.get(0).dispatchEvent(e); } if ($('#product').attr('update') != 'no') { $('#product').val(productSelect); } lastAmountIndex = curamount; lastTermIndex = curterm; lastExtTermIndex = curextterm; //SET CURRENT TERM AND AMOUNT FOR FOLLOWING CALCULATIONS var _amount = parseFloat(amounts[curamount]); var _term = parseFloat(fullterms[curterm]); if(productSelect == 3) { _term = parseFloat(limit_cl.terms[0]); } ctrls.ext_7_day.text((_amount * 0.014).toFixed(2) + " €"); ctrls.ext_14_day.text((_amount * 0.028).toFixed(2) + " €"); ctrls.ext_30_day.text((_amount * 0.06).toFixed(2) + " €"); bag['-3'] = _amount; bag['-2'] = _term; bag['-1'] = undefined; var _fee_without_tax = 0; var _final_without_tax = 0; var _first_repayment_without_tax = 0; var monthly_repayment = 0; //SELECT DATA FOR PRODUCT TYPE if (productSelect == 1) { var _prices = data.evaluate(bag); var _fl_extfee = parseFloat(_prices.details.original['extension-fee']); var _repay = parseFloat(_prices['loan-repay-amount']); var _fee = parseFloat(_prices['loan-fees']); var _original = parseFloat(_prices['loan-original-fees']); var _saved = _original - _fee; var _extfee = 0; if(_prices['loan-additional-fees']){ var _additional = parseFloat(_prices['loan-additional-fees']); }else { var _additional = 0; } // Handle preparation fees - start if(_prices['loan-preparation-fees']){ var _preparation = parseFloat(_prices['loan-preparation-fees']); }else { var _preparation = 0; } if(_prices['loan-original-preparation-fees']){ var _original_preparation = parseFloat(_prices['loan-original-preparation-fees']); }else { var _original_preparation = 0; } var _preparation_saved = _original_preparation - _preparation; // Handle preparation fees - end var _first_repayment = 0; if (instext) { extdata = global_pricelist.payday; bag['-3'] = _amount; bag['-2'] = _term; bag['-1'] = instextterm; var _extprices = extdata.evaluateExtension(bag); _extfee = parseFloat(_extprices.details.final['extension-fee']); var _final = _repay + _fee + _extfee + _additional + _preparation; } else { var _final = _repay + _fee + _additional + _preparation; } var _crl_fallback = 0; var _crl_principal = 0; var _crl_interest = 0; var _crl_fixed = 0; var inst_ext_fulldate; var monthlydate; var monthly_repayment; if (instext) { var _interest = parseFloat(((((_extfee + _fee) / _amount) * (360 / (_term + instextterm)))*100).toFixed(settings.decimals)); var d = new Date(); d.setDate(d.getDate() + _term + instextterm); inst_ext_fulldate = d; monthlydate = new Date(inst_ext_fulldate.getFullYear(), inst_ext_fulldate.getMonth(), inst_ext_fulldate.getDate() - instextterm); } else { var _interest = parseFloat((Math.round((_fee / _amount) * (365 / _term) * 10000) / 100).toFixed(settings.decimals)); var _original_interest = parseFloat((Math.round((_original / _amount) * (365 / _term) * 10000) / 100).toFixed(settings.decimals)); var d = new Date(); d.setDate(d.getDate() + _term); } var annualInterest = parseFloat((Math.round((_fee / _amount) * (366 / _term) * 10000) / 100).toFixed(0)); if (_prices['fee-rates'] && _prices['fee-rates']['loan-fee-rate']) { annualInterest = parseFloat(_prices['fee-rates']['loan-fee-rate']).toFixed(1); } var _rpmn = parseFloat(_prices['loan-apr']); if (settings.overrideAPR && settings.overrideAPR(bag, productSelect)) { _rpmn = settings.overrideAPR(bag, productSelect); } var _rpmn_original = parseFloat(_prices['loan-apr-original']); _rpmn = _rpmn.toFixed(0); _rpmn_original = _rpmn_original.toFixed(0); if (_rpmn > 1000000) { var _rpmn_for_slider = ">1000000"; } else { var _rpmn_for_slider = _rpmn; } var _day = d.getDate(); var _month = d.getMonth() + 1; // Months are zero based var _year = d.getFullYear(); var _original_final = _repay + _original + _additional; } else if (productSelect == 2) { var firstInstallment; if (current_inst_duedate) { bag['first-installment-date'] = new Date(current_inst_duedate); } if (ctrls.installment_duedate.input.length >= 1) { bag['first-installment-date'] = new Date(toDate(ctrls.installment_duedate.input.val())); } if ('first-installment-date' in bag) { bag['first-installment-date'].setHours(0, 0, 0); } var _prices = data.evaluate(bag); var _repay = parseFloat(_prices['loan-repay-amount']); var _fee = parseFloat(_prices['loan-fees']); var _original = parseFloat(_prices['loan-original-fees']); var _final = parseFloat(_prices['loan-total']); var _rpmn = parseFloat(_prices['loan-apr']) if (settings.overrideAPR && settings.overrideAPR(bag, productSelect)) { _rpmn = settings.overrideAPR(bag, productSelect) } _rpmn = _rpmn.toFixed(0); var _rpmn_for_slider = _rpmn; var _interest = parseFloat(_prices['loan-interest-fees']); var _saved = 0; var _additional = 0; var _extfee = 0; var _last_date = _prices.installments[_prices.installments.length - 1].date; var _day = _last_date.getDate(); var _month = _last_date.getMonth() + 1; var _year = _last_date.getFullYear(); var _first_repayment = _prices.installments[0].payment; var _second_repayment = _prices.installments[1].payment; if (_prices['loan-additional-fees']) { _additional = parseFloat(_prices['loan-additional-fees']); } else { _additional = 0; } if(_prices['loan-preparation-fees']){ var _preparation = parseFloat(_prices['loan-preparation-fees']); }else { var _preparation = 0; } if (ctrls.installment_duedate.input.length < 1) { ctrls.installment_duedate.summary.text(formatDate(_prices.installments[0].date)); } var _loan_fee = parseFloat(_prices['loan-original-fees']); if (summary_tabs) { var cl_bag = Object.create(bag); cl_bag['799'] = 1; var cl_prices = data.evaluate(cl_bag); var cl_rpmn = parseFloat(cl_prices['loan-apr']) if (settings.overrideAPR && settings.overrideAPR(cl_bag, productSelect)) { cl_rpmn = settings.overrideAPR(cl_bag, productSelect) } cl_rpmn = cl_rpmn.toFixed(0); var mocked_term = cl_prices.installments.length; var mocked_fee = cl_prices['loan-interest-fees']; var mocked_loan_detail = { amount: cl_prices['loan-amount'], installment_amount: cl_prices.installments[0].payment, total: cl_prices['loan-total'], interest: parseFloat(cl_prices['installment-interest-rate']).toFixed(settings.decimals), apr: cl_rpmn }; var cl_values = { repay: parseFloat(cl_prices['loan-repay-amount']), fee: parseFloat(cl_prices['loan-fees']), original: parseFloat(cl_prices['loan-original-fees']), final: _repay + _original + _additional, rpmn: cl_rpmn, interest: parseFloat(cl_prices['loan-interest-fees']), first_repayment: cl_prices.installments[0].payment, second_repayment: cl_prices.installments[1].payment }; } } else if (productSelect == 3) { var firstInstallment; firstInstallment = new Date(); firstInstallment.setMonth(firstInstallment.getMonth() + 1); // first payment in a month bag['first-installment-date'] = firstInstallment; if (current_crl_duedate) { bag['first-installment-date'] = new Date(current_crl_duedate); } if (ctrls.creditline_duedate.input.length >= 1) { bag['first-installment-date'] = new Date(toDate(ctrls.creditline_duedate.input.val())); } if ('first-installment-date' in bag) { bag['first-installment-date'].setHours(0, 0, 0); } var _prices = data.evaluate(bag); var _first_repayment = 0; var _repay = 0; var _fee = 0; var _original = 0; var _final = 0; var _saved = 0; var _additional = 0; var _preparation = 0; var _extfee = 0; var monthly_repayment; var inst_ext_fulldate; var monthlydate; var _crl_fallback = parseFloat(_prices['creditline-percent-creditline-fallback-month']); var _crl_principal = parseFloat(_prices['creditline-percent-principal-repay-month']); var _crl_interest = parseFloat(_prices['creditline-percent-principal-month']); var _crl_fixed = parseFloat(_prices['creditline-percent-creditline-month']); var _crl_min_amount = parseFloat(_prices['creditline-min-monthly-payment']); var _remaining = parseFloat(_prices['creditline-remaining-principal']); try { var _interest_discount_percent = _prices.details.discount['interest-fee'] / _prices.details.original['interest-fee']; } catch(err) { } var _interest = parseFloat((Math.round((_fee / _amount) * (365 / _term) * 10000) / 100).toFixed(settings.decimals)); var _rpm = _crl_interest * 100; if (_interest_discount_percent) { _rpm = _rpm * _interest_discount_percent; } var _rpy = _rpm * 12; var _rpd = Math.round(_rpy / 365 * 100)/100; var _rpmn = parseFloat(_prices['loan-apr']) if (settings.overrideAPR && settings.overrideAPR(bag, productSelect)) { _rpmn = settings.overrideAPR(bag, productSelect) } _rpmn = _rpmn.toFixed(0); var _rpmn_for_slider = _rpmn; var duedate = d = _prices.installments[_prices.installments.length - 1].date; var _day = duedate.getDate(); var _month = duedate.getMonth() + 1; // Months are zero based var _year = duedate.getFullYear(); var crl_installments = _prices.installments; var crl_installments_without_tax = _prices.installments_without_tax; } that['loan_detail'] = { amount: _amount, term: _term, prices: _prices, repay: _repay, fee: _fee, original: _original, additional: _additional, preparation_fee: _preparation, total: _final, rpmn: _rpmn, rpmn_for_slider: _rpmn_for_slider, rpmn_original: _rpmn_original, rpd: _rpd, rpm: _rpm, rpy: _rpy, interest: _interest, annual_interest: annualInterest, duedate: _year + '-' + _month + '-' + _day, installment_amount: _first_repayment, instant_extension_monthly_date: monthlydate, instant_extension_monthly_amount: monthly_repayment, instant_extension_fulldate: inst_ext_fulldate, instant_extension_repayable: _final, instant_extension_fee: _extfee, crl_fixed: _crl_fixed, crl_principal: _crl_principal, crl_interest: _crl_interest, crl_fallback: _crl_fallback, total_crl_interest: 0, total_crl_fixed: 0, total_crl_payment: 0, remaining_amount: 0, crl_limit: amounts[maxamount], table: {}, product: productSelect, CRL_startdate: current_crl_duedate, limits: limit, }; // Update Extension calc if (extterms && extterms.length > 0) { var _extterm = parseFloat(extterms[curextterm]); bag['-3'] = _amount; bag['-2'] = _extterm; var _extprices = data.evaluate(bag); var _extfee = parseFloat(_extprices.details.final['extension-fee-cl']); var _extoriginal = _extprices.details.original['extension-fee-cl']; var _exttotal = _final + _extfee; d.setDate(d.getDate() + _extterm); var _extduedate = d.getDate() + '.' + (d.getMonth() + 1) + '.' + d.getFullYear(); that['loan_detail'].extension = { term: _extterm, fee: _extfee, original: _extoriginal, total: _exttotal, duedate: _extduedate }; if (!extension.input.is(':focus') || force) { extension.input.val(_extterm.toFixed(0)); } ctrls.extension.amount.text("" + _extfee.toFixed(2) + " €"); ctrls.extension.duedate.text(_extduedate); ctrls.extension.total.text("" + _exttotal.toFixed(2) + " €"); if (_extterm == 0) { $('#apply_with_extension').attr('disabled', 'disabled'); } else { $('#apply_with_extension').removeAttr('disabled'); } } if (!amount.input.is(':focus') || force) { var oldVal = amount.input.val(); var newVal = _amount.toFixed(settings.amount_decimals); amount.input.val(newVal); if (oldVal !== newVal) { amount.input.trigger('change'); } } if (!term.input.is(':focus') || force) { var oldVal = term.input.val(); //show first repayment amount instead of term for dk installment loan if (use_dk_installment_slider && productSelect == 2) { $('#term_text').html("frontend.slider.installment_term_text *"); term.input.val(Math.ceil(_second_repayment.toFixed(settings.decimals) / 10) * 10); term.input.parent().addClass('dk_installment_slider'); term.day.text(" €"); settings.additional_elements.dk_installment_term_field.val(_term.toFixed(0)); } else { if (use_dk_installment_slider) { $('#term_text').html("Uz kādu termiņu Tu vēlies saņemt aizdevumu?"); term.input.parent().removeClass('dk_installment_slider'); } term.input.val(_term.toFixed(0)); term.day.text(formatTerm(_term, names[curterm])); term.input.css('width', ''); } if (oldVal !== _term.toFixed(0)) { term.input.trigger('change'); } } // Update UI Boxes ctrls.amount.text("" + _amount.toFixed(settings.amount_decimals) + " €"); var amountLimitSource = show_visible_limits ? limit.amounts_visible : limit.amounts_available; ctrls.minimum_amount.text("" + parseFloat(amountLimitSource[0]).toFixed(settings.decimals) + " €"); ctrls.maximum_amount.text("" + parseFloat(amountLimitSource[amountLimitSource.length - 1]).toFixed(settings.decimals) + " €"); if (!summary_tabs || ctrls.summary_tabs.firstloan.hasClass('active')) { if(ctrls.preparation_fee.length > 0){ ctrls.preparation_fee.text("" + _preparation.toFixed(2) + " €"); var fee = _fee +_additional; }else{ var fee = _fee +_additional + _preparation; } ctrls.fee.text("" + fee.toFixed(2) + " €"); ctrls.total.text("" + _final.toFixed(2) + " €"); } else { if (productSelect == 1) { ctrls.fee.text("" + _original.toFixed(2) + " €"); ctrls.total.text("" + _original_final.toFixed(2) + " €"); } } if ((!summary_tabs || ctrls.summary_tabs.firstloan.hasClass('active')) && _saved) { ctrls.saved.text("" + _saved.toFixed(2) + " €"); } else { ctrls.saved.text(''); } ctrls.repay.text(formatDate(new Date(_year, _month-1, _day))); //comment: maybe fix the name "repay" line to something else, it's confusing, shows date in ES for payday if (!summary_tabs || ctrls.summary_tabs.firstloan.hasClass('active')) { ctrls.rpmn.text(_rpmn_for_slider + ' %'); } else { if (productSelect == 1) { ctrls.rpmn.text(_rpmn_original + ' %') } if (productSelect == 2) { ctrls.rpmn.text(cl_values.rpmn + ' %') } } if (!summary_tabs || ctrls.summary_tabs.firstloan.hasClass('active')) { ctrls.installment_amount.text("" + _first_repayment.toFixed(2) + " €"); if (_second_repayment) { ctrls.second_installment_amount.text("" + _second_repayment.toFixed(2) + " €") } } else { if (productSelect == 2) { ctrls.installment_amount.text("" + cl_values.first_repayment.toFixed(2) + " €"); if (_second_repayment) { ctrls.second_installment_amount.text("" + cl_values.second_repayment.toFixed(2) + " €") } } } if (!summary_tabs || ctrls.summary_tabs.firstloan.hasClass('active')) { ctrls.interest.text(_interest + ' %'); } else { ctrls.interest.text(_original_interest + ' %'); } ctrls.annual_interest.text(annualInterest + '%'); ctrls.term.text(_term + ((productSelect == 2) ? '' : " " + formatTerm(_term, names[curterm]))); ctrls.original.text("" + _original.toFixed(2) + " €"); if(!isNaN(_original_preparation) && ctrls.original_preparation.length > 0){ ctrls.original_preparation.text("" + _original_preparation.toFixed(2) + " €"); } ctrls.monthlyrepay.text("" + monthly_repayment.toFixed(2) + " €"); ctrls.feesum.text("" + (_fee + _interest).toFixed(2) + " €"); if($("#dateswitch").hasClass('on') && settings.ctrls.startdate.val()) { d = new Date(settings.ctrls.startdate.val()); } if (settings.additional_elements.slider_loan_infotext.length > 0) { frontend.slider.post_text // _amount, _term, _fee, _final, _rpmn settings.additional_elements.slider_loan_infotext.html(post_text( that['loan_detail'])); } if (settings.info_text || instext) { frontend.slider.info_text ctrls.instext_info_text.text(info_text(that['loan_detail'])); if (summary_tabs && productSelect == 2 && ctrls.summary_tabs.consecutive.hasClass('active') ) { ctrls.instext_info_text.text(info_text(mocked_loan_detail)); } } if (settings.info_text_footer_function && settings.info_text_footer_function instanceof Function) { var info_text_footer = settings.info_text_footer_function(that.loan_detail, bag, data_py, data_in, data_cl); $(info_text_footer.selector).html(info_text_footer.content); } //creditline UI graphic calculation if (productSelect == 3) { var values = crl_installments; var values_without_tax = crl_installments_without_tax; var lastPaymentDate = new Date(); var paymentDate; if (settings.usePikaday) { if (current_crl_duedate) { paymentDate = new Date(current_crl_duedate); } else { paymentDate = new Date(); paymentDate.setMonth(paymentDate.getMonth() + 1); } } //out parameter for evaluate loan promotions if (global_pricelist.creditline.evaluateLoanPromotions) { promotions = { discounts_per: {}, discounts_amn: {}, extensions: {}, total_extension_term: 0, }; global_pricelist.creditline.evaluateLoanPromotions(new Date().getTime(), bag, promotions); } var payoutDate = new Date(); payoutDate.setMinutes(0); payoutDate.setHours(0); payoutDate.setSeconds(0); var payments = [ -_amount ]; var dates = [ payoutDate ]; for (var i = 0; i < values.length; i++) { payments.push(values[i].payment); dates.push(values[i].date); } d = values[values.length - 1].date; ctrls.repay.text(formatDate(new Date(d.getFullYear(), d.getMonth(), d.getDate()))); //final repayment date d = values[0].date; if (ctrls.creditline_duedate.input.length < 1) { ctrls.creditline_duedate.summary.text(formatDate(values[0].date)); } //settings.ctrls.CRL_startdate.text(d.getDate() + '.' + (d.getMonth()+1) + '.' + d.getFullYear()); $('#creditline-payout-date').val(d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate()); var totalPayment = 0; var fixedSum = 0; var interestSum = 0; //GET VALUES for (var i = 0; i < values.length; i++) { var saved = values[i].original.interest - values[i].interest; totalPayment += values[i].payment; fixedSum += values[i].principal; interestSum += values[i].interest; values[i].saved = saved; } that['loan_detail'].table = values; that['loan_detail'].total_crl_fixed = fixedSum; that['loan_detail'].total_crl_interest = interestSum; that['loan_detail'].total_crl_payment = totalPayment; ctrls.creditline_table.empty(); var total_saved = 0; // GRAPHICS RENDERING if (!es_creditline_repayment_table) { for (var i = 0; i < values.length; i++) { var v = values[i]; var row = $(''); var num = $('').text(i + 1); var date = $('').text(v.date.getDate() + '.' + (v.date.getMonth() + 1) + '.' + v.date.getFullYear()); var repay = $('').text(v.payment.toFixed(2)); if (v.commission == 0) { var interest = $('').text(v.interest.toFixed(2)); var fixed = $('').text(v.principal.toFixed(2)); } else { var interest = $(''); var fixed = $('').text(v.commission.toFixed(2)); } var payment = $('').text(v.payment.toFixed(2)); row.append(num).append(date).append(payment); if (v.saved > 0) { total_saved += v.saved; var saved = $('').text(v.saved.toFixed(2)); row.append(saved); } ctrls.creditline_table.append(row); } } else { for (var i = 0; i < values.length; i++) { var v = values[i]; var row = $(''); var date = $('').text(v.date.getDate() + '.' + (v.date.getMonth() + 1) + '.' + v.date.getFullYear()); var repay = $('').text(v.payment.toFixed(2)); var principal = $('').text(v.principal.toFixed(2)); var interest = $('').text(v.interest.toFixed(2)); var payment = $('').text(v.payment.toFixed(2)); row.append(date).append(principal).append(interest).append(payment); ctrls.creditline_table.append(row); } } _saved = values[0].saved; $('#crdl_table .saved_tf').text(total_saved.toFixed(2)) if (total_saved > 0 && productSelect == 3) { ctrls.main.saved.show(); $('.saved_th').show(); $('.saved_tf').show(); $('.clientzone #crdl_table').css('top', '197px'); //ctrls.main.summary.css('top', '0px'); } else { ctrls.main.saved.hide(); $('.saved_th').hide(); $('.saved_tf').hide(); $('.clientzone #crdl_table').css('top', '165px'); //ctrls.main.summary.css('top', '40px'); } ctrls.fee.text("" + values[0].payment.toFixed(2) + " €"); ctrls.credit_total.text((totalPayment).toFixed("" + 2) + " €"); ctrls.saved.text(_saved.toFixed("" + 2) + " €"); if (interestSum) {  ctrls.crl_real_fee.text(interestSum.toFixed("" + 2) + " €"); } var _interest = (Math.round(((totalPayment - _amount) / _amount) * (365 / (_term * (365 / 12))) * 10000) / 100).toFixed(settings.decimals); ctrls.rpmn.text(_rpmn_for_slider + ' %'); ctrls.interest.text(_interest + ' %'); ctrls.percentages.interest.text((_crl_interest * 100).toFixed(settings.decimals) + ' %'); ctrls.percentages.fixed.text((_crl_fixed * 100).toFixed(settings.decimals) + ' %'); ctrls.percentages.rpmn.text(_rpmn + ' %'); that['loan_detail'].rpmn = _rpmn; that['loan_detail'].crl_interest = _crl_interest; that['loan_detail'].crl_fixed = _crl_fixed; } if (productSelect == 1) { if (_saved > 0) { ctrls.original.show(); } else { ctrls.original.hide(); } if(_preparation_saved > 0 && ctrls.original_preparation.length > 0) { ctrls.original_preparation.show(); } else { ctrls.original_preparation.hide(); } } if (productSelect == 2) { if (summary_tabs && $(ctrls.summary_tabs.consecutive).hasClass('active')) { var repaysched = cl_prices.installments; } else { var repaysched = _prices.installments; } ctrls.installment_repayment_table.empty(); for (var i = 0; i < repaysched.length; i++) { var v = repaysched[i]; var row = $(''); var num = $('').text(i + 1); var date = $('').text(formatDate(v.date.getDate(), (v.date.getMonth() + 1), v.date.getFullYear())); var value1 = $('').text(" " + v.principal.toFixed(2) + " €"); var value2 = $('').text(" " + (v.interest + v.commission).toFixed(2) + " €"); var value3 = $('').text(" " + v.payment.toFixed(2) + " €"); row.append(date).append(value1).append(value2).append(value3); ctrls.installment_repayment_table.append(row); } if (_amount < _final) { $('.freecharge').removeClass('show'); } else { $('.freecharge').addClass('show'); } if (global_pricelist.installment.evaluateLoanPromotions) { promotions = { discounts_per: {}, discounts_amn: {}, extensions: {}, total_extension_term: 0, }; global_pricelist.installment.evaluateLoanPromotions(new Date().getTime(), bag, promotions); } settings.additional_elements.mx_detailed_graphic_table.empty(); } if (Object.keys(_prices.details['percent-discounts']).length > 0) { if (!settings.additional_elements.discount_percentage.is(":visible") ) { settings.additional_elements.discount_percentage.parent().show(); $('#crdl_table').css('top', '158px'); } for (var feekey in _prices.details['percent-discounts']) { var fullpercentage = 0; var sumofdiscountspercentage = 0; var resultpercentage = 0; sumofdiscountspercentage += _prices.details['percent-discounts'][feekey][0].amount; fullpercentage += 100; resultpercentage = (sumofdiscountspercentage*(1/fullpercentage)) * 100; } settings.additional_elements.discount_percentage.text((resultpercentage) + " %"); } else { if (settings.additional_elements.discount_percentage.is(":visible")) { settings.additional_elements.discount_percentage.parent().hide(); } } //calculate days between now and end date var dateToday = new Date(); dateToday.setMinutes(0); dateToday.setHours(0); dateToday.setSeconds(0); var datePay = new Date(_year, _month-1, _day); var daysInTerm = daysBetween(dateToday, datePay); that['loan_detail'].term_days = daysInTerm; try { if ('sliderChanged' in window) { window.sliderChanged(); } } catch (e) { } if ((document.getElementById('extension_selection') || document.getElementById('ext_preview_single')) && !$('#summary-payday').hasClass( "inactive" )) { var extensionTerms = []; if (productSelect == 1) { for (var price_id in data.pricelists) { if (data.pricelists[price_id].type == 'extension-fee') { extensionTerms = data.pricelists[price_id].terms; break; } } var pricing = []; if (extensionTerms) { for (var i = 0; i < extensionTerms.length; i++) { bag['-3'] = _amount; bag['-2'] = _term; bag['-1'] = extensionTerms[i]; var _extprices = data.evaluateExtension(bag); pricing.push({ term: extensionTerms[i], price: _extprices.details.final['extension-fee'], pricing: _extprices }); } if (document.getElementById('extension_selection')) { var extensionSelection = document.getElementById('extension_selection'); var index = extensionSelection.selectedIndex; extensionSelection.options.length = 0; for (var i = 0; i < pricing.length; i++) { var ext = pricing[i]; extensionSelection.options[i] = new Option(ext.term + formatTerm(ext.term) + ' - ' + ext.price + ' €'); } if (firstRun) { firstRun = false; index = extensionTerms.indexOf('30'); } extensionSelection.selectedIndex = index; $(extensionSelection).select2({ minimumResultsForSearch: Infinity }); } else if (document.getElementById('ext_preview_single') && pricing.length > 0) { var extension_term_preview = document.getElementById('ext_preview_single').childNodes[1]; var extension_cost_preview = document.getElementById('ext_preview_single').childNodes[2]; var ext = pricing[pricing.length-1]; extension_term_preview.innerHTML = ext.term + ' dienas'; extension_cost_preview.innerHTML = parseFloat(ext.price).toFixed(2) + ' €'; } } } } if (settings.getLimitTextBase !== null) { $('.limit_text_base').html(settings.getLimitTextBase(limit['pricelist-amount-limit'])); } if ( productSelect == 2 && ( ( show_installment_info_text || (limit['pricelist-amount-limit'] && _amount > limit['pricelist-amount-limit']) || (limit['pricelist-amount-hard-limit'] && _amount > limit['pricelist-amount-hard-limit']) ) || (limit['pricelist-day-limit'] && _term > limit['pricelist-day-limit']) ) ) { ctrls.installment_logincontainer.addClass('show'); $('.logincontainer').removeClass('show'); $('.registrationcontainer').css('height', '0'); $('.incomeverify-container').removeClass('show'); } else { if ((limit['pricelist-amount-limit'] == null || _amount <= limit['pricelist-amount-limit']) && (limit['pricelist-amount-hard-limit'] == null || _amount <= limit['pricelist-amount-hard-limit'])) { $('.logincontainer').removeClass('show'); $('.registrationcontainer').css('height', $('.registrationcontainer').attr('data-height') || '88px'); ctrls.installment_logincontainer.removeClass('show'); $('.incomeverify-container').removeClass('show'); } else { var lc = $('.logincontainer'); lc.addClass('show'); if (lc.attr('text')) { lc.html(lc.attr('text').replace('{0}', limit)); } ctrls.installment_logincontainer.removeClass('show'); $('.registrationcontainer').css('height', '0'); if (limit['pricelist-income-verify-limit'] && _amount >= limit['pricelist-income-verify-limit']) { $('.incomeverify-container').addClass('show'); } } } if (instext && _amount > instextpromolimit) { $('.freecharge').removeClass('show'); } else if (instext && _amount <= instextpromolimit) { $('.freecharge').addClass('show'); } try { var template = $('.info').attr('template'); template = template.replace(/\{amount\}/g, _amount.toFixed(2)); template = template.replace(/\{term\}/g, _term.toFixed(0)); template = template.replace(/\{fee\}/g, _fee.toFixed(2)); template = template.replace(/\{extterm\}/g, _extterm.toFixed(0)); template = template.replace(/\{extfee\}/g, _extfee.toFixed(2)); $('.info').html(template); } catch (e) { } firstRun = false; window['loan_detail'] = that['loan_detail']; } this.setVal(); var last_uploaded_t; var last_uploaded_a; var last_uploaded_e; var last_uploaded_inst_duedate; var last_uploaded_prod; var last_uploaded_startd; var last_uploaded_crl_duedate; function uploadSliderValues(force) { var a = (amounts.hasOwnProperty(curamount)) ? parseFloat(amounts[curamount]) : 0; var t = (terms.hasOwnProperty(curterm)) ? parseFloat(terms[curterm]) : 0; var e = (extterms.hasOwnProperty(curextterm)) ? parseFloat(extterms[curextterm]) : 0; var inst_duedate = ctrls.installment_duedate.input.val(); var crl_duedate = ctrls.creditline_duedate.input.val(); if (a != last_uploaded_a || (!isNaN(t) && t != last_uploaded_t) || (!isNaN(e) && e != last_uploaded_e) || inst_duedate != last_uploaded_inst_duedate || last_uploaded_prod != productSelect || last_uploaded_startd != current_crl_duedate || crl_duedate != last_uploaded_crl_duedate || force) { var unf_suff = settings.unfinished_suffix; var payload = { }; payload['loan-amount' + unf_suff] = a; payload['loan-amount-max' + unf_suff] = amounts[amounts.length - 1]; payload['loan-term' + unf_suff] = t; payload['loan-term-max' + unf_suff] = terms[terms.length - 1]; payload['loan-extension-term' + unf_suff] = e; payload['product' + unf_suff] = productSelect; payload['inst-duedate' + unf_suff] = inst_duedate; //payload['crl-duedate' + unf_suff] = crl_duedate; if (!crl_duedate && !current_crl_duedate || current_crl_duedate === '' && crl_duedate === '') { payload['creditline-payout-date' + unf_suff] = ''; } else { if (crl_duedate && crl_duedate != '') { payload['creditline-payout-date' + unf_suff] = crl_duedate; } else { payload['creditline-payout-date' + unf_suff] = formatDate(toDate(current_crl_duedate)); } } payload['datepicker_active' + unf_suff] = datepicker_active; if (last_uploaded_prod != productSelect) { $(document).trigger('slider:changed-product', { product: productSelect, }); } $.ajax({ url: (typeof unfinishedURL === 'undefined') ? "/unfinished" : unfinishedURL , contentType: "application/json", method: 'post', data: JSON.stringify({ data: payload }), success: function () { last_uploaded_t = t; last_uploaded_a = a; last_uploaded_e = e; last_uploaded_inst_duedate = inst_duedate; last_uploaded_crl_duedate = crl_duedate; last_uploaded_prod = productSelect; last_uploaded_startd = current_crl_duedate; }, error: function () { } }).always(function () { setTimeout(function () { uploadSliderValues(); }, 1000); }); if ('parseTemplate' in window) { parseTemplate(); } if (that.loan_detail && that.loan_detail.prices) { $(document).trigger('slider:updated-summary', { product: productSelect, prices: that.loan_detail.prices }); } } else { setTimeout(function () { uploadSliderValues(); }, 1000); } } function setMaxValues () { $(".minAmount span").append(amounts[0]); $(".minTerm span").append(terms[0]); $(".maxAmount span").append(amounts[amounts.length - 1]); $(".maxTerm span").append(terms[terms.length - 1]); } function formatDateDefault(_day, _month, _year) { if (_day instanceof Date) { var aDate = _day; return ('0' + aDate.getDate()).slice(-2) + '.' + ('0' + (aDate.getMonth()+1)).slice(-2) + '.' + aDate.getFullYear(); } else { return _day + '.' + _month + '.' + _year; } } function toDate(date) { if (date instanceof Date) { return date; } var d = new Date(); if (date.indexOf('-') != -1) { var s = date.split('-'); d.setDate(parseInt(s[2])); d.setMonth(parseInt(s[1]) - 1); d.setYear(parseInt(s[0])); } else if (date.indexOf('/') != -1) { var s = date.split('/'); d.setDate(parseInt(s[0])); d.setMonth(parseInt(s[1]) - 1); d.setYear(parseInt(s[2])); } else { var s = date.split('.'); d.setDate(parseInt(s[0])); d.setMonth(parseInt(s[1]) - 1); d.setYear(parseInt(s[2])); } return d; } function calcPromotionDiscount(feeObj, currentInstallmentIndex, promotions) { var feeTypeId = feeObj.typeId; var feeAmount = feeObj.amount; var totalReduc = 0; if (promotions.discounts_per[feeTypeId]) { var promos = promotions.discounts_per[feeTypeId]; for (var i = 0; i < promos.length; i++) { var p = promos[i]; var a = (p.amount / 100) * feeAmount; if (p.installment_index - 1 === currentInstallmentIndex) { totalReduc += a; } else if (p.installment_index === undefined) { totalReduc += a; } }; } if (promotions.discounts_amn[feeTypeId]) { var promos = promotions.discounts_amn[feeTypeId]; for (var z = 0; z < promos.length; z++) { var p = promos[z]; if (p.installment_index - 1 === currentInstallmentIndex) { totalReduc += p.amount; } else if (p.installment_index === undefined) { totalReduc += p.amount; } }; } return Math.max(0, (feeAmount - totalReduc)); } //ratio = { day: 50 month: 50 } //data = [ day, day, day, month, month] function calcBarPercentages(data, ratio) { if (ratio) { var res = []; var resObj = []; var s = 0; for (var r in ratio) { var c = 0; for (var r2 in data) { if (r == data[r2]) { c++; } } ratio[r] = { perc: ratio[r], count: c }; } var isFirstIteration = true; for (var r3 in ratio) { if (isFirstIteration) { var count = (ratio[r3].count) -1; } else { var count = (ratio[r3].count); } var stepWidth = ratio[r3].perc / count; if (ratio[r3].count === 1) { s += ratio[r3].perc; res.push(s); resObj.push({perc: s, value: data[0]}); isFirstIteration = false; continue; } for (var i in data) { if (data[i] == r3) { s += stepWidth; if (isFirstIteration) { s = 0; } res.push(s); resObj.push({perc: s, value: data[i]}); if (!use_switch_slider) { isFirstIteration = false; } } else if (!use_switch_slider) { isFirstIteration = true; } if (use_switch_slider) { isFirstIteration = false; } } } return { resultArray: res, resultObject: resObj }; } else { var res = []; var stepWidth = 100 / (data.length - 1); var s = 0; for (var i in data) { res.push(s); s += stepWidth; } return res; } } function snap(move, percent_mapping) { var ni = nearestIndex(percent_mapping, (move * 100)); move = percent_mapping[ni] / 100; return { move: move, ni: ni}; } function renderTermBars(move) { var m = 0; if ((move - 1) < 0.001) { m = move * 100; } if (m < dual_slider_breakpoint) { settings.term.days_bar.css('width', m + '%'); settings.term.months_bar.children('.month-marker').removeClass('active'); } else { settings.term.days_bar.css('width', dual_slider_breakpoint + '%'); settings.term.months_bar.children('.month-marker').each(function () { var l = parseFloat($(this)[0].style.left.replace('%', '')); if (parseFloat(l.toFixed(4)) < parseFloat(m.toFixed(4))) { $(this).addClass('active'); } else { $(this).removeClass('active'); } }); } } function initTermBars() { settings.term.days_masterbar.css('width', dual_slider_breakpoint + '%'); var monthsCount = 0; for (var y = 0; y < names.length; y++) { var n = names[y]; if (n == 'month') { monthsCount++; } } if (installment_step_width == 'auto') { installment_step_width = Math.max(Math.min((dual_slider_breakpoint / 85), 0.85), 0.6); } var widthperc = ((100 - dual_slider_breakpoint) / monthsCount) * installment_step_width; settings.term.months_bar.empty(); for (var i = 0; i < names.length; i++) { var n = names[i]; if (n == 'month') { var perc = term_percentage_mapping[i]; var monthdiv = $('
'); monthdiv.addClass('month-marker'); monthdiv.css('left', (perc - widthperc) + '%'); monthdiv.css('width', widthperc + '%'); settings.term.months_bar.append(monthdiv); } }; } setMaxValues(); uploadSliderValues(); LoanSliderControl.prototype.setVal = function(force, force_amount, force_term, setNewProduct) { that.setVal(force, force_amount, force_term, setNewProduct); } LoanSliderControl.prototype.updateUseSwitchSlider = function(use) { use_switch_slider = use; adjustTerms(); sliderupdate(); that.setVal(true, null, null, true); } LoanSliderControl.prototype.setInstDueDate = function (date) { current_inst_duedate = date; var formatted = formatDate(date); ctrls.installment_duedate.summary.text(formatted); ctrls.installment_duedate.input.val(formatted); } LoanSliderControl.prototype.formatDate = function (date) { return formatDate(date); } LoanSliderControl.prototype.setBag = function(newBag) { bag = newBag; } LoanSliderControl.prototype.updateUseDKInstallmentSlider = function(use) { settings.use_dk_installment_slider = use; adjustTerms(); sliderupdate(); that.setVal(true); } LoanSliderControl.prototype.reloadSummaryValues = function (tab) { if (tab.hasClass('active')) { that.setVal(true); } } } LoanSliderControl.prototype.destroy = function () { if (this.datePicker) { this.datePicker.destroy(); } }