﻿	
	var nalog = 0.91;
	
	// -- Calculate
	
	function activateCalculator(){
		// Выделение
		activateSelectingRows();
			
		// Слайдеры
		activateSliders();
			
		// Пенсионные расчеты
		// Накопленная сумма
		accumulated_amount	= get_accumulated_amount();
		activatePensionCalculations();
		
		// Графики
		activateCharts();
		
		$j("a#toCalculate").html('Расчитать таблицу взносов и выплат');
	}
	
	// Выделение
	function activateSelectingRows(){
		$j("#calculator table").bind('click', function(){
					$j("#calculator table").removeClass("curFocus");
					$j(this).addClass("curFocus");
			});
			$j("#calculator table:first").addClass("curFocus");
			$j("#amount").focus();
	}
	
	// Слайдеры
	function activateSliders(){
		// Изменение инпутов, взависимости от слайдера
		$j('#slider1').slider({ 
				stepping: 1, 
				change: function(e,ui) {			
					$j("#calculator table").removeClass("curFocus");
					$j(this).parent().parent().parent().parent().parent().addClass("curFocus");					
					
					var koeff;					
					if( ui.value >= 0 && ui.value <= 50 )
						koeff = 10;
					else if( ui.value > 50 && ui.value <= 75 )
						koeff = 13 + ( (ui.value-50)/5 )*2;					
					else if( ui.value > 75 && ui.value <= 100 )
						koeff = 20 + ( (ui.value-75)/5 )*8;						
					$j("#amount").val( Math.round( ui.value*koeff ) );
					//startCalculatePensionModel();	
					calculateCharts();
				} 
			});
			// Изменение слайдеров, взависимости от инпутов
			$j("#amount").bind('change', function(){
					calculateCharts();
			});
			
			// Изменение инпутов, взависимости от слайдера
			$j('#slider2').slider({ 
				stepping: 1,
				change: function(e,ui) {					
					$j("#calculator table").removeClass("curFocus");
					$j(this).parent().parent().parent().parent().parent().addClass("curFocus");
					
					var koeff;	
					if( ui.value >= 0 && ui.value <= 15 )
						$j("#yield_fund").val( ( ui.value*0.15+'' ).substring(0,3) );
					else if ( ui.value >= 15 && ui.value <= 50 )
						$j("#yield_fund").val( ( 1.5 + ( (ui.value-10)/10 )*0.5 ) );
					else if( ui.value > 50 && ui.value <= 100 )
						$j("#yield_fund").val( ( 1.5 + ( (ui.value-10)/10 )*0.5 ) );
					//startCalculatePensionModel();
					calculateCharts();
				}
			});
			// Изменение слайдеров, взависимости от инпутов
			$j("#yield_fund").bind('change', function(){
					calculateCharts();
			});
			
			period_accumulation_start	= 0;
			period_accumulation_end    = 15;
			// Изменение инпутов, взависимости от слайдера
			$j('#slider3').slider({ 
				stepping: 1, 
				range: true,
				change: function(e,ui) {
					$j("#calculator table").removeClass("curFocus");
					$j(this).parent().parent().parent().parent().parent().addClass("curFocus");
					
					if( ( ui.range/2 )>0.5 ){					
						if( $j(ui.handle).attr("id")=='period_accumulation_start' ){
							period_accumulation_start = (ui.value/2).toFixed(0);
						} else if( $j(ui.handle).attr("id")=='period_accumulation_end' ){
							period_accumulation_end = (ui.value/2).toFixed(0);
						}						
						$j("#period_accumulation").val( period_accumulation_end - period_accumulation_start );						
						//alert( period_accumulation_start + ' - ' + period_accumulation_end );
						calculateCharts();
					}					
				}				 
			});			
			// Изменение слайдеров, взависимости от инпутов
			$j("#period_accumulation").bind('change', function(){					
					// Заранее сохраняем значение нового интервала, так при обнулении value будет изменено
					var newRange = $j(this).val()*2;
					newRange--;
					$j('#slider3').slider("moveTo", "-=100", 1);
					$j('#slider3').slider("moveTo", "+="+newRange, 1);
					calculateCharts();
			});			
			
			period_payment_start		= 0;
			period_payment_end		= 10;
			// Изменение инпутов, взависимости от слайдера		
			$j('#slider4').slider({ 
				stepping: 1,
				range: true,
				change: function(e,ui) {
					$j("#calculator table").removeClass("curFocus");
					$j(this).parent().parent().parent().parent().parent().addClass("curFocus");
					
					if( ( ui.range )>0,5 ){					
						if( $j(ui.handle).attr("id")=='period_payment_start' ){
							period_payment_start = (ui.value);
						} else if( $j(ui.handle).attr("id")=='period_payment_end' ){
							period_payment_end = (ui.value);
						}						
						$j("#period_payment").val( (period_payment_end - period_payment_start).toFixed(0) );						
						//alert( period_payment_start + ' - ' + period_payment_end );
						calculateCharts()
					}
				} 
			});
			// Изменение слайдеров, взависимости от инпутов
			$j("#period_payment").bind('change', function(){					
					// Заранее сохраняем значение нового интервала, так при обнулении value будет изменено
					var newRange = $j(this).val();
					newRange--;
					$j('#slider4').slider("moveTo", "-=100", 1);
					$j('#slider4').slider("moveTo", "+="+newRange, 1);
					calculateCharts();
			});
			
			$j("#frequency_contribution, #frequency_payments").bind('change', calculateCharts);
		}
		
		// Пенсионные расчеты
		function activatePensionCalculations(){
			//$j("#formcalculator input, #formcalculator select").bind( 'change', startCalculatePensionModel );
			startCalculatePensionModel();
			$j("a#toCalculate").bind( 'click', startCalculatePensionModel );
		}
		
		// Pension model
		function startCalculatePensionModel(){					
			
				$j("#pension_payments_table").hide();
				
				// -- Пенсионные взносы --				
				// Общая сумма взносов
				var total_contributions	= get_total_contributions();
				$j("#total_contributions span").html( number_format( total_contributions.toFixed(2), 2, ',', ' ' ) );				
				// Накопленная сумма, повторно вычисляем, так как входные данные могут быть изменены
				accumulated_amount	= get_accumulated_amount();
				
				// -- Пенсионные выплаты --				
				// Общая сумма выплат = Общая сумма взносов + Накопленная сумма
				var total_amount_payment_minus_taxes = build_pension_payments_table( accumulated_amount );		
				$j("#total_payments span").html( number_format( total_amount_payment_minus_taxes, 2, ',', ' ' ) );				

				// Раскрас таблицы
				sortwithcolor(1);	
				
				$j("#pension_payments_table").slideToggle(500);
		}
		
		// Раскрас таблицы
		function sortwithcolor( column ) {
			$j("#ex1 > tbody > tr").heatcolor(
					function() { return $j("td:nth-child(" + column + ")", this).text(); }
			);
		};
		
		// Общая сумма взносов
		function get_total_contributions(){	
			return $j("#amount").val() * get_number_of_contributions();
		}		
		// Количество взносов
		function get_number_of_contributions(){
			switch( parseInt( $j("#frequency_contribution").val() ) ) {
			  case 0: return 1;
			  case 1: return $j("#period_accumulation").val()*12;
			  case 2: return $j("#period_accumulation").val()*4;
			  case 3: return $j("#period_accumulation").val();			  
			}
		}
		// Коэф. (сколько прошло месяцев, между взносами), от него будем наращивать сумму перед очередным взносом
		function get_interval_of_contribution(){
			switch( parseInt( $j("#frequency_contribution").val() ) ) {
			  case 0: return $j("#period_accumulation").val()*12;
			  case 1: return 1;
			  case 2: return 3;
			  case 3: return 12;			  
			}
		}
		// Накопленная сумма
		function get_accumulated_amount(){		
			var amount							= parseFloat( $j("#amount").val() );			
			var number_of_contributions	= get_number_of_contributions();			
			var yield_fund						= parseFloat( $j("#yield_fund").val() )/100;
			var koeff							= get_interval_of_contribution();
			
			var t_amount = amount;
			for( var i=0; i<( number_of_contributions-1 ); i++ ){
				// Формула сложного процента
				t_amount  = ( t_amount *  Math.pow( 1+yield_fund, koeff ) );
				t_amount = t_amount + amount;
			}		
			
			t_amount = ( t_amount *  Math.pow( 1+yield_fund, koeff ) );
			return t_amount.toFixed(2);		
		}
		
		// Количество выплат
		function get_number_of_payments(){
			switch( parseInt( $j("#frequency_payments").val() ) ) {
			  case 1: return $j("#period_payment").val()*12;
			  case 2: return $j("#period_payment").val()*4;
			  case 3: return $j("#period_payment").val();			  
			}
		}
		// Коэф. (сколько прошло месяцев, между выплатами)
		function get_koef_of_payments(){
			switch( parseInt( $j("#frequency_payments").val() ) ) {
			  case 1: return parseFloat( $j("#yield_fund").val() )/100;
			  case 2: return parseFloat( $j("#yield_fund").val() )/100 *4;
			  case 3: return parseFloat( $j("#yield_fund").val() )/100 *12;			  
			}
		}				
		// Пенсионные выплаты
		function build_pension_payments_table( balance_of_account ){			
			$j("#pension_payments_table table tbody").empty();
			
			var number_of_payments	= get_number_of_payments();			
			var koef_of_payments		= get_koef_of_payments();			
			var amount_of_payment 	= 0;			
			var total_payments		= 0; 
			var investment_income 	= 0;
			var tax 						= 0;
			var total_amount_of_tax = 0;
			var amount_payment_minus_taxes 			= 0;
			var total_amount_payment_minus_taxes	= 0;
			
			for( var i=1; i<=number_of_payments; i++ ){
				amount_of_payment		= balance_of_account / ( number_of_payments-i+1 );				
				total_payments			= total_payments + amount_of_payment; // Общая сумма выплат, без учета налога			
				investment_income		= (balance_of_account - amount_of_payment) * koef_of_payments;
				balance_of_account	= balance_of_account - amount_of_payment + investment_income;
				tax 						= amount_of_payment*(1-nalog);
				amount_payment_minus_taxes = amount_of_payment*nalog; 
				
				$j("#pension_payments_table table tbody").append('<tr align="center"><td>'+i+'</td><td>'+number_format( amount_of_payment.toFixed(2), 2, ',', ' ' )+'</td><td>'+number_format( investment_income.toFixed(2), 2, ',', ' ' )+'</td><td>'+number_format( balance_of_account.toFixed(2), 2, ',', ' ' )+'</td><td>'+number_format( tax.toFixed(2), 2, ',', ' ' )+'</td><td>'+number_format( amount_payment_minus_taxes.toFixed(2), 2, ',', ' ' )+'</td></tr>');				
				total_amount_of_tax	= total_amount_of_tax + tax;
				total_amount_payment_minus_taxes = total_amount_payment_minus_taxes + amount_payment_minus_taxes;				
			}
			
			$j("#pension_payments_table table tfoot").empty().append('<tr align="center"><td></td><td></td><td></td><td></td><td>'+number_format( total_amount_of_tax.toFixed(2), 2, ',', ' ' )+'</td><td>'+number_format( total_amount_payment_minus_taxes.toFixed(2), 2, ',', ' ' )+'</td></tr>');
			return total_amount_payment_minus_taxes.toFixed(2);
		}
		
		// Раскрас таблицы
		function sortwithcolor( column ) {
			$j("#ex1 > tbody > tr").heatcolor(
					function() { return $j("td:nth-child(" + column + ")", this).text(); }
			);
		};
		
		// Графики	
		
		function activateCharts(){
			calculateChart_1();
			$j("#chart1").slideToggle(500);
			
			calculateChart_2();
			$j("#chart2").slideToggle(500);
			
			calculateChart_3();
			$j("#chart3").slideToggle(500);
		}
		
		function calculateCharts(){
			
			$j('div#calculator_result').block({ message: null, overlayCSS: { backgroundColor:'#fff', opacity: '.5' } });
			
			// Повторно вычисляем, так как входные данные были изменены
			accumulated_amount	= get_accumulated_amount();			
			$j("#total_contributions span").html( number_format( calculateChart_1(), 2, ',', ' ' ) );
			calculateChart_2();
			$j("#total_payments span").html( number_format( calculateChart_3(), 2, ',', ' ' ) );
			
			 $j('div#calculator_result').unblock();
			 
			 $j("a#toCalculate").html('Обновить таблицу взносов и выплат');
		}		
		
		// -- Общая сумма взносов и общая накопленная сумма от времени -- 
		
		function calculateChart_1(){
			$j("#chart1").height(300);
				
				var xmin = ( new Date( 2010 + parseInt( period_accumulation_start ) + "/01/01" ) ).getTime();
				var xmax = ( new Date( 2010 + Math.round( parseInt( period_accumulation_end )*1.03 ) + "/01/01" ) ).getTime();
				var ymin = 0;
				var ymax = 1.5*accumulated_amount;
				total_contributions_date_chart1 = get_total_contributions_date_chart1();
					 
				$j.plot( $j("#chart1"),
					[ 
						{ data: total_contributions_date_chart1, label: "Общая сумма взносов", xaxis:2, lines: { show: true, fill: true }, points: { show: true } },
						{ data: get_accumulated_amount_date_chart1(), label: "Общая накопленная сумма", lines: { show: true, fill: true }, points: { show: true } } ],				
					{
						xaxis: { mode:'time', min:xmin, max:xmax },
						x2axis: { mode:'time', min:xmin, max:xmax, tickFormatter: function (v, axis) { d = new Date(v); return d.getYear()-110+1 } },
						yaxis: { min:ymin, max:ymax },
						legend: { position: 'nw' },
						grid: { hoverable: true, clickable: true } 
				});	
	
				var previousPoint = null;
				$j("#chart1").bind("plothover", function (event, pos, item) {
					$j("#x").text(pos.x.toFixed(2));
					$j("#y").text(pos.y.toFixed(2));				
						if (item) {
							if (previousPoint != item.datapoint) {
								previousPoint = item.datapoint;
									$j("#tooltip").remove();
									var x = item.datapoint[0]/*.toFixed(0)*/,
									y = item.datapoint[1].toFixed(2);									
									dt = new Date(x);
									showTooltip(item.pageX, item.pageY, item.series.label + " на " + ( parseInt( dt.getUTCMonth() )+1 ) + '/' + dt.getFullYear() + " = " + number_format(y, 2, ',', ' ' ) + ' грн.');
							}
						} else {
							$j("#tooltip").remove();
							previousPoint = null;            
						}
				});				

				return total_contributions_date_chart1[total_contributions_date_chart1.length-1][1];
		}
		
		function showTooltip(x, y, contents) {
				  $j('<div id="tooltip">' + contents + '</div>').css( {
							position: 'absolute',
							display: 'none',
							top: y + 5,
							left: x + 5,
							border: '1px solid #fdd',
							padding: '2px',
							'background-color': '#fee',
							opacity: 0.80
					  }).appendTo("body").fadeIn(200);
		}
		
		// Общая сумма взносов - данные для графика
		function get_total_contributions_date_chart1(){	
			var amount		= parseInt( $j("#amount").val() );
			var amount_t	= amount;
			var time_interval_of_contributions = get_interval_of_contribution();
			var total_contributions_date = [];
			
			dt = new Date( 2010+parseInt(period_accumulation_start)+"/01/01" );		
			total_contributions_date.push( [ dt.getTime(), amount_t] );			
			
			var number_of_contributions = get_number_of_contributions();
			if( number_of_contributions==1 ){
				// Разовый взнос ( тоже, что и Период накопления=1, Периодичность взносов=год )
				dt.setMonth( dt.getMonth() + time_interval_of_contributions );
				total_contributions_date.push([ dt.getTime(), amount_t ]);
			} else {
			
				for( var i=0; i<get_number_of_contributions()-1; i++ ){
					dt.setMonth( dt.getMonth() + time_interval_of_contributions );				
					amount_t = amount_t + amount;				
					total_contributions_date.push([ dt.getTime(), amount_t ]);
				}
			}
			
			return total_contributions_date;			
		}
		
		// Накопленная сумма - данные для графика
		function get_accumulated_amount_date_chart1(){
			
			var amount							= parseFloat( $j("#amount").val() );
			var t_amount						= amount;
			var yield_fund						= parseFloat( $j("#yield_fund").val() )/100;
			var koeff							= get_interval_of_contribution();
			var time_interval_of_contributions = get_interval_of_contribution();			
			var total_accumulated_amount_date = [];
			
			dt = new Date( 2010+parseInt(period_accumulation_start)+"/01/01" );			
			var number_of_contributions	= get_number_of_contributions();
			if( number_of_contributions==1 ){
				// Разовый взнос ( тоже, что и Период накопления=1, Периодичность взносов=год )
				dt.setMonth( dt.getMonth() + time_interval_of_contributions );
				t_amount  = t_amount + ( t_amount *  Math.pow( 1+yield_fund, koeff ) );
				total_accumulated_amount_date.push([ dt.getTime(), t_amount ]);
			
			} else {
				
				dt = new Date( 2010+parseInt(period_accumulation_start)+"/01/01" );
				dt.setMonth( dt.getMonth()-time_interval_of_contributions );
				
				for( var i=0; i<( number_of_contributions-1 ); i++ ){
					// Формула сложного процента
					t_amount  = ( t_amount *  Math.pow( 1+yield_fund, koeff ) );
					t_amount = t_amount + amount;					
					dt.setMonth( dt.getMonth() + time_interval_of_contributions );					
					total_accumulated_amount_date.push([ dt.getTime(), t_amount ]);
				}
				
				t_amount = ( t_amount *  Math.pow( 1+yield_fund, koeff ) );				
				dt.setMonth( dt.getMonth() + time_interval_of_contributions );					
				total_accumulated_amount_date.push([ dt.getTime(), t_amount ]);
			}
			
			return total_accumulated_amount_date;			
		}
		
		// -- Ежемесячные пенсионные выплаты от времени --
		
		function calculateChart_2(){
			$j("#chart2").height(300);
				
				var xmin = ( new Date( 2010 + parseInt( period_accumulation_end ) + parseInt( period_payment_start ) + "/01/01" ) ).getTime();
				var xmax = ( new Date( 2010 + parseInt( period_accumulation_end ) + Math.round( parseInt( period_payment_end )*1.03 ) + "/01/01" ) ).getTime();
				var ymin = 0;
				pension_payments_data = get_pension_payments_data_chart_2();
				var ymax = pension_payments_data[1]*1.03;
					 
				$j.plot( $j("#chart2"),
					[	
						{ data:pension_payments_data[0] , label: "Ежемесячные пенсионные выплаты", color: "#a0df82", lines: { show: true, fill: true }, points: { show: true } } ],					
					{
						xaxis: { mode:'time', min:xmin, max:xmax },
						x2axis: { mode:'time', min:xmin, max:xmax, tickFormatter: function (v, axis) { d = new Date(v); return d.getYear() - 100 - period_accumulation_end - parseInt( period_payment_end ); } },
						yaxis: { min:ymin, max:ymax },
						legend: { position: 'nw' },
						grid: { hoverable: true, clickable: true } 
				});	
	
				var previousPoint = null;
				$j("#chart2").bind("plothover", function (event, pos, item) {
					$j("#x").text(pos.x.toFixed(2));
					$j("#y").text(pos.y.toFixed(2));				
						if (item) {
							if (previousPoint != item.datapoint) {
								previousPoint = item.datapoint;
									$j("#tooltip").remove();
									var x = item.datapoint[0]/*.toFixed(0)*/,
									y = item.datapoint[1]/*.toFixed(2)*/;									
									dt = new Date(x);
									showTooltip(item.pageX, item.pageY, item.series.label + " на " + ( parseInt( dt.getUTCMonth() )+1 ) + '/' + dt.getFullYear() + " = " + number_format(y, 2, ',', ' ' ) + ' грн.');
							}
						} else {
							$j("#tooltip").remove();
							previousPoint = null;            
						}
				});
		}
		
		// Пенсионные выплаты - данные для графика
		function get_pension_payments_data_chart_2( balance_of_account ){
			
			var balance_of_account = accumulated_amount;
			var number_of_payments	= get_number_of_payments();			
			var koef_of_payments		= get_koef_of_payments();			
			var amount_of_payment 	= 0;			
			var total_payments		= 0; 
			var investment_income 	= 0;
			var total_amount_of_tax = 0;
			var amount_payment_minus_taxes 			= 0;
			
			var time_interval_of_payments = get_interval_of_payments(); 
			var pension_payments_date = [];			
			
			dt = new Date( 2010 + parseInt( period_accumulation_end ) + parseInt( period_payment_start )+"/01/01" );	
			dt.setMonth( dt.getMonth()-time_interval_of_payments );
			//pension_payments_date.push([ dt.getTime(), accumulated_amount ]);
			
			for( var i=1; i<=number_of_payments; i++ ){				
				amount_of_payment		= balance_of_account / ( number_of_payments-i+1 );				
				total_payments			= total_payments + amount_of_payment; // Общая сумма выплат, без учета налога			
				investment_income		= (balance_of_account - amount_of_payment) * koef_of_payments;
				balance_of_account	= balance_of_account - amount_of_payment + investment_income;
				amount_payment_minus_taxes = amount_of_payment*nalog;
				
				dt.setMonth( dt.getMonth() + time_interval_of_payments );
				pension_payments_date.push([ dt.getTime(), amount_payment_minus_taxes.toFixed(2) ]);
			}
				
			return new Array( pension_payments_date, amount_payment_minus_taxes.toFixed(2) );
		}
		
		// -- Ежемесячные пенсионные выплаты от времени --
		
		function calculateChart_3(){
			$j("#chart3").height(300);
				
				var xmin = ( new Date( 2010 + parseInt( period_accumulation_end ) + parseInt( period_payment_start ) + "/01/01" ) ).getTime();
				var xmax = ( new Date( 2010 + parseInt( period_accumulation_end ) + Math.round( parseInt( period_payment_end )*1.03 ) + "/01/01" ) ).getTime();
				var ymin = 0;
				pension_payments_data = get_pension_payments_data_chart_3();
				var ymax = pension_payments_data[1]*1.03;
					 
				$j.plot( $j("#chart3"),
					[	
						{ data:pension_payments_data[0] , label: "Ежемесячные пенсионные выплаты", color: "#777AA5", lines: { show: true, fill: true }, points: { show: true } } ],					
					{
						xaxis: { mode:'time', min:xmin, max:xmax },
						x2axis: { mode:'time', min:xmin, max:xmax, tickFormatter: function (v, axis) { d = new Date(v); return d.getYear() - 100 - period_accumulation_end - parseInt( period_payment_end ); } },
						yaxis: { min:ymin, max:ymax },
						legend: { position: 'nw' },
						grid: { hoverable: true, clickable: true } 
				});	
	
				var previousPoint = null;
				$j("#chart3").bind("plothover", function (event, pos, item) {
					$j("#x").text(pos.x.toFixed(2));
					$j("#y").text(pos.y.toFixed(2));				
						if (item) {
							if (previousPoint != item.datapoint) {
								previousPoint = item.datapoint;
									$j("#tooltip").remove();
									var x = item.datapoint[0],
									y = item.datapoint[1];									
									dt = new Date(x);
									showTooltip(item.pageX, item.pageY, item.series.label + " на " + ( parseInt( dt.getUTCMonth() )+1 ) + '/' + dt.getFullYear() + " = " + number_format(y, 2, ',', ' ' ) + ' грн.');
							}
						} else {
							$j("#tooltip").remove();
							previousPoint = null;            
						}
				});
				
				return pension_payments_data[0][pension_payments_data[0].length-1][1];
		}
		
		// Пенсионные выплаты - данные для графика
		function get_pension_payments_data_chart_3( balance_of_account ){
			
			var balance_of_account = accumulated_amount;
			var number_of_payments	= get_number_of_payments();			
			var koef_of_payments		= get_koef_of_payments();			
			var amount_of_payment 	= 0;			
			var total_payments		= 0; 
			var investment_income 	= 0;
			var total_amount_of_tax = 0;
			var amount_payment_minus_taxes 			= 0;
			var total_amount_payment_minus_taxes	= 0;
			
			var time_interval_of_payments = get_interval_of_payments(); 
			var pension_payments_date = [];			
			
			dt = new Date( 2010 + parseInt( period_accumulation_end ) + parseInt( period_payment_start )+"/01/01" );	
			dt.setMonth( dt.getMonth()-time_interval_of_payments );
			//pension_payments_date.push([ dt.getTime(), accumulated_amount ]);
			
			for( var i=1; i<=number_of_payments; i++ ){				
				amount_of_payment		= balance_of_account / ( number_of_payments-i+1 );				
				total_payments			= total_payments + amount_of_payment; // Общая сумма выплат, без учета налога			
				investment_income		= (balance_of_account - amount_of_payment) * koef_of_payments;
				balance_of_account	= balance_of_account - amount_of_payment + investment_income;
				amount_payment_minus_taxes = amount_of_payment*nalog;
				
				dt.setMonth( dt.getMonth() + time_interval_of_payments );
				total_amount_payment_minus_taxes = total_amount_payment_minus_taxes + amount_payment_minus_taxes;
				pension_payments_date.push([ dt.getTime(), total_amount_payment_minus_taxes.toFixed(2) ]);
			}
				
			return new Array( pension_payments_date, total_amount_payment_minus_taxes.toFixed(2) );
		}
		
		// Коэф. (сколько месяцев, между выплатами), от него будем наращивать сумму перед очередным взносом
		function get_interval_of_payments(){
			switch( parseInt( $j("#frequency_payments").val() ) ) {
			  case 0: return $j("#period_payment").val()*12;
			  case 1: return 1;
			  case 2: return 3;
			  case 3: return 12;			  
			}
		}
