/* generated from /var/www/production/zenmoney/html//a/templates/savings/js//js.list */
/* file: savings.js*/
// Подбор вкладов
Savings = {};
Savings.auth = undefined;
Savings.dom = {
list: {}, // Страница списка депозитов
view: {} // Страница депозита
};
Savings.hashchange = function(){
var hash = window.location.hash;
var view = false;
var arr_hash = String(hash).split('?');
if(typeof arr_hash[1] != 'undefined'){
Savings.view.id( arr_hash[1] );
}else{
Savings.list.show();
}
}
/*
*
* Страница депозита
*
*/
Savings.view = {};
Savings.view.fill = function(res){
var view = Savings.dom.view;
var dep_id = res.id;
$('.tpl-name', view.parent).text(res.name);
$('.tpl-bank_www', view.parent).attr({href: 'http://'+res.bank.www});
$('.tpl-bank_url', view.parent).attr({href: res.url});
var bank_id = $('.tpl-bank_deposits', view.parent).attr('rel');
if( bank_id != res.bank.id ){
$('.tpl-bank_deposits', view.parent).attr({'rel':res.bank.id}).html('');
$.ajax({
url: '/api/v1/company/'+res.bank.id+'/savings/',
dataType: 'json',
success: function(res){
var output = '';
for( var i = 0; i < res.length; i++ ){
if( dep_id == res[i].id ){
output += '
'+String(res[i].name).safeText()+'';
}else{
output += ''+String(res[i].name).safeText()+'';
}
}
$('.tpl-bank_deposits', view.parent).html(output);
}
});
}else{
$('.tpl-bank_deposits', view.parent).find('li').removeClass('current');
$('.tpl-bank_deposits', view.parent).find('li[rel="'+dep_id+'"]').addClass('current');
}
var pay = {
AHEAD: 'в начале срока',
MONTHLY: 'ежемесячно',
END_OF_CALENDAR_MONTH: 'в конце месяца',
QUARTERLY: 'ежеквартально',
SEMIANNUALY: 'раз в полгода',
ANNUALY: 'ежегодно',
AT_THE_END: 'в конце срока'
}
var pay_o = pay[res['payment-of-interest']];
if( typeof pay_o == 'undefined' ) pay_o = '';
$('.tpl-payment-of-interest', view.parent).html(pay_o);
var params = '';
if( res['capitalization'] == 'YES' ) params += 'Капитализируемые проценты
';
if( res['replenishment'] ) params += 'Возможность пополнения
';
if( res['partial-withdrawal'] ) params += 'Возможность частичного снятия
';
$('.tpl-main_params', view.parent).html(params);
var insurance = '';
if( res.bank.is_insurance ) insurance = '';
$('.tpl-insurance', view.parent).html(insurance);
$('.tpl-bank_site', view.parent).attr({href:'http://'+res.bank.www}).html(res.bank.www);
$('.tpl-bank_name', view.parent).text(res.bank.title);
/* rates */
var left_tbl = $('#depositTableWrapLeft .depositTable');
var right_tbl = $('#depositTableMoveWrap .depositTable');
/*
Рубль |
10 000—249 999 |
*/
/* Сортировка */
var sort_period = [];
var sort_sum = [];
var sort_cur = [];
/* Сортировка */
var left_data = [];
var right_data = [];
var instruments = {
2: 'Рубль',
1: 'Доллар',
3: 'Евро'
};
var inst = undefined;
var inst_title = undefined;
var sum = '';
var period = '';
var col = -1;
var row = -1;
var gen_sum_title = function(rate){
if( rate['min-sum'] != null ){
var min = String(String(rate['min-sum']).split(',')[0]).parseNumber('float');
}else{
var min = false;
}
if( rate['max-sum'] != null ){
var max = String(String(rate['max-sum']).split(',')[0]).parseNumber('float');
}else{
var max = false;
}
if( min && max ){
var output = min+'—'+max;
var output = {
min: min,
max: max,
text: min.toCost()+'—'+max.toCost()
}
}else{
if( !min ){
var output = {
min: 0,
max: max,
text: 'до '+max.toCost()
}
}else{
var output = {
min: min,
max: +Infinity,
text: 'от '+min.toCost()
}
}
}
if( output.min.toCost() == output.max.toCost() ){
output.text = min.toCost();
}
return output;
}
var gen_period_title = function(rate){
if( rate['min-period'] != null ){
var min = String(rate['min-period']).parseNumber('float');
}else{
var min = false;
}
if( rate['max-period'] != null ){
var max = String(rate['max-period']).parseNumber('float');
}else{
var max = false;
}
if( min && max ){
var output = {
min: min,
max: max,
text: min+'—'+max
}
}else{
if( !min ){
var output = {
min: 0,
max: max,
text: 'до '+max
};
}else{
var output = {
min: min,
max: Infinity,
text: 'от '+min
}
}
}
if( output.min == output.max ){
output.text = output.min;
}
return output;
}
var parseRateValue = function(rate){
var value = String(String(rate['rate-value']).split(',')[0]).parseNumber('float');
return value;
}
var sort_obj = {};
var sort = {
instrument: [],
period: [],
period_min: [],
sum: {},
sum_min: {}
};
var search_min = function(arr){
var index = -1;
var value = Infinity;
for( var i = 0; i < arr.length; i++ ){
if(arr[i] < value){
value = arr[i];
index = index;
}
}
return value;
}
var search_max = function(arr){
var index = -1;
var value = -Infinity;
for( var i = 0; i < arr.length; i++ ){
if(arr[i] > value){
value = arr[i];
index = index;
}
}
return value;
}
var sortPush = function(text_arr, num_arr, push){
var flag = false;
for( var i = 0; i < num_arr.length; i++ ){
if( num_arr[i] == push.min ) flag = true;
}
if( !flag ){
text_arr.push( push.text );
num_arr.push( push.min );
var i = 0;
var tmp = undefined;
while( i < num_arr.length-1 ){
if( num_arr[i] > num_arr[i+1] ){
tmp = num_arr[i];
num_arr[i] = num_arr[i+1];
num_arr[i+1] = tmp;
tmp = text_arr[i];
text_arr[i] = text_arr[i+1];
text_arr[i+1] = tmp;
i -= 1;
if( i < 0 ) i = 0;
}else{
i++;
}
}
}
}
for( var i = 0; i < res.rates.length; i++ ){
if( inst != res.rates[i].instrument ){
var flag = false;
for( var m = 0; m < sort.instrument.length; m++ ){
if( sort.instrument[m] == res.rates[i].instrument ) flag = true;
}
inst = res.rates[i].instrument;
if( !flag ){
sort_obj[ inst ] = {};
sort.instrument.push(inst);
if( typeof sort.sum[inst] == 'undefined' ){
sort.sum[inst] = [];
sort.sum_min[inst] = [];
}
}
}
var n_sum = gen_sum_title(res.rates[i]);
if( typeof sort_obj[ res.rates[i].instrument ][ n_sum.text ] == 'undefined' ){
sort_obj[ inst ][ n_sum.text ] = {};
}
var n_period = gen_period_title(res.rates[i]);
sort_obj[ inst ][ n_sum.text ][ n_period.text ] = parseRateValue( res.rates[i] );
sortPush(sort.sum[ inst ], sort.sum_min[ inst ], n_sum);
sortPush(sort.period, sort.period_min, n_period);
}
//
/* Левая часть таблицы */
var output = '';
for( var i = 0; i < sort.instrument.length; i++ ){
var inst = sort.instrument[i];
output += ''+instruments[inst]+' |
';
for( var j = 0; j < sort.sum[inst].length; j++ ){
output += ''+sort.sum[inst][j]+' |
';
}
}
$(left_tbl).html( 'Сумма вклада |
---|
|
'+output+'' );
/* Правая часть таблицы */
var out_rates = '';
var out_periods = '';
out_periods += '';
for( var j = 0; j < sort.period.length; j++ ){
out_periods += ''+sort.period[j]+' | ';
}
out_periods += '
';
for( var i = 0; i < sort.instrument.length; i++ ){
var inst = sort.instrument[i];
out_rates += '';
for( var j = 0; j < sort.period.length; j++ ){
out_rates += ' | ';
}
out_rates += '
';
for( var j = 0; j < sort.sum[inst].length; j++ ){
var sum = sort.sum[inst][j];
out_rates += '';
for( var k = 0; k < sort.period.length; k++ ){
var per = sort.period[k];
var rate = Number(sort_obj[inst][sum][per]).toCost(2, true);
out_rates += ''+rate+'% | ';
}
out_rates += '
';
}
}
$(right_tbl).html( 'Срок размещения, дней |
---|
'+out_periods+'
'+out_rates+'' );
/* rates */
setTimeout('$(window).resize();', 100);
}
Savings.view.id = function(id){
if( id ){
$.ajax({
url: '/api/s1/saving/'+id+'/',
dataType: 'json',
success: function(res){
Savings.view.fill(res);
Savings.dom.list.parent.hide();
Savings.dom.view.parent.show();
},
error: function(){
alert('Ошибка загрузки');
}
});
}
}
/*
*
* Список депозитов
*
*/
Savings.list = {};
Savings.list.start = '0.0';
Savings.list.limit = 20;
Savings.list.state = false;
Savings.list.more = function(){
$('#savings-search-more').find('.more').addClass('loading');
Savings.list.load(Savings.list.start, Savings.list.limit);
}
Savings.instrument = {
1: {
symbol: "$",
title_short: 'USD'
},
2: {
symbol: "руб.",
title_short: 'RUB'
},
3: {
symbol: "€",
title_short: 'EUR'
}
}
Savings.list.onload = function(res){
var input = Savings.dom.list.input;
var sum = String( input.filter('[name="sum"]').val() ).parseNumber();
var curs = {
USD: '$',
EUR: '€',
RUB: 'руб.'
}
var currency = curs[ input.filter('[name="currency"]').val() ];
var tpl = '';
tpl += '';
tpl += '
';
tpl += '
';
tpl += '
{title} {sponsored}
{from-bank}';
tpl += '
';
tpl += ' ';
tpl += '
';
tpl += '
';
tpl += '
{percent}%
';
tpl += '
';
tpl += '
';
tpl += '
{total} {currency}
';
tpl += '
';
tpl += ' Доход — {income} {currency}';
tpl += '
';
tpl += '
';
tpl += '
';
tpl += '
';
Savings.list.start = res.next;
if( typeof res.next == 'undefined' ){
// Убираем "еще"
$('#savings-search-more').addClass('hidden').find('.more').removeClass('loading');
}else{
// Показываем "еще"
$('#savings-search-more').removeClass('hidden').find('.more').removeClass('loading');
}
var output = '';
for( var i = 0; i < res.result.length; i++ ){
var sav = res.result[i];
var t_tpl = tpl.replace(/{id}/g, sav.saving);
t_tpl = t_tpl.replace(/{title}/g, String(sav.saving_title).safeText());
t_tpl = t_tpl.replace(/{favicon}/g, 'http://'+sav.bank_www+'/favicon.ico');
t_tpl = t_tpl.replace(/{from-bank}/g, String(sav.bank_title).safeText());
var pay = {
AHEAD: 'в начале срока',
MONTHLY: 'ежемесячно',
END_OF_CALENDAR_MONTH: 'в конце месяца',
QUARTERLY: 'ежеквартально',
SEMIANNUALY: 'раз в полгода',
ANNUALY: 'ежегодно',
AT_THE_END: 'в конце срока'
}
var payments = [ ''+pay[sav['payment-of-interest']]+'' ];
if( sav.is_capitalization == true ){
payments.push( 'проценты капитализируются' );
}
if( sav.is_updatable == true ){
payments.push( 'возможно пополнение вклада' );
}
if( sav.is_partial == true ){
payments.push( 'возможно частичное снятие' );
}
t_tpl = t_tpl.replace(/{payments}/g, payments.join(', '));
t_tpl = t_tpl.replace(/{percent}/g, String(sav.percent).parseNumber('float').toCost(2));
var total = String(sav.total).parseNumber();
t_tpl = t_tpl.replace(/{total}/g, total.toCost());
t_tpl = t_tpl.replace(/{income}/g, Number( total-sum ).toCost());
t_tpl = t_tpl.replace(/{currency}/g, currency);
if( sav.sponsor_flag == true ){
t_tpl = t_tpl.replace(/{sponsored}/g, '');
}else{
t_tpl = t_tpl.replace(/{sponsored}/g, '');
}
output += t_tpl;
}
if( Savings.list.state ){
// Догрузка
$('#savings-search-result').append(''+output);
}else{
// Первоначальная загрузка
Savings.list.state = true;
$('#savings-search-result').html(output);
}
}
Savings.list.onerror = function(xhr){
$('#savings-search-result').html('Нет вкладов удовлетворяющих условиям поиска.');
$('#savings-search-more').addClass('hidden').find('.more').removeClass('loading');
}
Savings.list.load = function(start, limit){
var filter = {};
var input = Savings.dom.list.input;
filter.sum = input.filter('[name="sum"]').val();
filter.currency = input.filter('[name="currency"]').val();
filter.period = input.filter('[name="period"]').val();
filter.region = input.filter('[name="region"]').val();
if( input.filter('[name="payment-of-interest"]').val() != '-1' ){
filter['payment-of-interest'] = input.filter('[name="payment-of-interest"]').val();
}
if( input.filter('[name="capitalization"]:checked').val() == '1' ){
filter.capitalization = true;
}
if( input.filter('[name="replenishment"]:checked').val() == '1' ){
filter.replenishment = true;
}
if( input.filter('[name="capitalization"]:checked').val() == '1' ){
filter.capitalization = true;
}
if( input.filter('[name="partial-withdrawal"]:checked').val() == '1' ){
filter['partial-withdrawal'] = true;
}
if( ( typeof start != 'undefined' ) && ( typeof limit != 'undefined' ) ){
// Догружаем
filter.skip = start;
filter.limit = limit;
$.ajax({
url: '/api/a1/saving/',
type: 'get',
dataType: 'json',
data: filter,
success: Savings.list.onload,
error: Savings.list.onerror
});
}else{
// Начальная загрузка
Savings.list.state = false;
Savings.list.skip = '0.0';
Savings.list.limit = 20;
filter.start = Savings.list.start;
filter.limit = Savings.list.limit;
$.ajax({
url: '/api/a1/saving/',
type: 'get',
dataType: 'json',
data: filter,
success: Savings.list.onload,
error: Savings.list.onerror
});
}
}
Savings.list.show = function(){
if( !Savings.list.state ){
Savings.list.load();
}
Savings.dom.list.parent.show();
Savings.dom.view.parent.hide();
}
Savings.init_auth = function(){
// Инициализация если пользователь авторизован
Savings.auth = true;
var input = Savings.dom.list.input;
/* Город по умолчанию */
var select = $('#cityChangeWrap select[name="region"]');
$(select).val(zm.profile.user.city);
var city = $(select).find('option[value="'+zm.profile.user.city+'"]').html();
$('#cityChangeWrap h2>.link').html(city);
/* Город по умолчанию */
/* Валюта по умолчанию */
if( typeof Savings.instrument[ zm.profile.user.currency ] != 'undefined' ){
var title_short = Savings.instrument[ zm.profile.user.currency ].title_short;
input.filter('[name="currency"]').val(title_short);
}
/* Валюта по умолчанию */
/* Сумма вклада */
/* Сумма вклада */
zm.pbind('zenmoney_hashchange', Savings.hashchange);
Savings.hashchange();
}
Savings.init_not_auth = function(){
// Инициализация если пользователь НЕ авторизован
Savings.auth = false;
var input = Savings.dom.list.input;
/* Город по умолчанию */
var select = $('#cityChangeWrap select[name="region"]');
$(select).val(1);
var city = $(select).find('option[value="1"]').html();
$('#cityChangeWrap h2>.link').html(city);
/* Город по умолчанию */
/* Валюта по умолчанию */
input.filter('[name="currency"]').val('RUB');
/* Валюта по умолчанию */
/* Сумма вклада */
/* Сумма вклада */
$(window).bind('hashchange', Savings.hashchange);
Savings.hashchange();
}
Savings.init = function(auth){
var list = Savings.dom.list;
list.parent = $('#savings_list');
list.form = $('#saving-filter', list.parent);
list.result = $('#savings-search-result', list.parent);
list.input = $('input[type="text"],select,input[type="radio"]', list.form);
$('#savings-search-more').find('.more').click(Savings.list.more);
var view = Savings.dom.view;
view.parent = $('#savings_view');
list.form.bind('submit', function(e){
e.preventDefault();
Savings.list.load();
});
if( typeof zm.profile != 'undefined' ){
Savings.init_auth();
}else{
Savings.init_not_auth();
}
$('#cityChangeWrap').click(function(){
return false;
});
$('#cityChangeWrap h2>.link').click(function(){
return false;
});
$('#cityChangeWrap select[name="region"]').change(function(){
var value = $(this).val();
$('#cityChangeWrap h2>.link').text( $('option[value="'+value+'"]', this).text() );
setTimeout(function(){ $('#cityChangeWrap').parents('form:first').submit(); }, 100);
});
$('#cityChangeWrap .select').css({'opacity':0});
}
/* file: main.js*/
zm.loader.page.load = function(){
document.title = 'Подбор вкладов';
Savings.init(true);
};
zm.loader.page.destroy = function(){
delete Savings
};
zm.loader.page.load();