// Penghasilan Bulanan

function Step1() {
	this.gaji_pribadi,
	this.gaji_pasangan,
	this.bisnis_pribadi,
	this.bisnis_pasangan,
	this.total;
}

Step1.prototype.getValues = function() {
	this.gaji_pribadi = GetValueById("txtGajiPribadi");
	this.gaji_pasangan = GetValueById("txtGajiPasangan");
	this.bisnis_pribadi = GetValueById("txtBisnisPribadi");
	this.bisnis_pasangan = GetValueById("txtBisnisPasangan");
}

Step1.prototype.getTotal = function() {
	this.getValues();
	
	this.total = this.gaji_pribadi + this.gaji_pasangan + this.bisnis_pribadi + this.bisnis_pasangan;
	
	SetDocText("totPenghasilanBulanan", DecimalAsString(DecimalValue(this.total))) ;
	SetDocText("totPendapatan", DecimalAsString(DecimalValue(this.total))) ;
}

// Tabungan

function Step2() {
	this.tabungan,
	this.tabungan_haji,
	this.tabungan_lain,
	this.tabungan_reksadana,
	this.tabungan_unitlink,
	this.total;
}

Step2.prototype.getValues = function() {
	this.tabungan = GetValueById("txtTabungan");
	this.tabungan_haji = GetValueById("txtTabunganHaji");
	this.tabungan_lain = GetValueById("txtTabunganLain");
	this.tabungan_reksadana = GetValueById("txtTabunganReksadana");
	this.tabungan_unitlink = GetValueById("txtTabunganUnitLink");
}

Step2.prototype.getTotal = function() {
	this.getValues();
	
	this.total = this.tabungan 
					+ this.tabungan_haji 
					+ this.tabungan_lain 
					+ this.tabungan_reksadana 
					+ this.tabungan_unitlink;
	
	SetDocText("totTabungan", DecimalAsString(DecimalValue(this.total))) ;
	SetDocText("totTabungan2", DecimalAsString(DecimalValue(this.total))) ;
}

// Asuransi

function Step3() {
	this.asuransi_jiwa,
	this.asuransi_kesehatan,
	this.asuransi_rumah,
	this.asuransi_pendidikan,
	this.asuransi_lain,
	this.total;
}

Step3.prototype.getValues = function() {

	this.asuransi_jiwa = GetValueById("txtAsuransiJiwa");
	this.asuransi_kesehatan = GetValueById("txtAsuransiKesehatan");
	this.asuransi_rumah = GetValueById("txtAsuransiRumah");
	this.asuransi_pendidikan = GetValueById("txtAsuransiPendidikan");
	this.asuransi_lain = GetValueById("txtAsuransiLain");
}

Step3.prototype.getTotal = function() {
	this.getValues();
	
	this.total = this.asuransi_jiwa 
					+ this.asuransi_kesehatan 
					+ this.asuransi_rumah
					+ this.asuransi_pendidikan 
					+ this.asuransi_lain;
	
	SetDocText("totAsuransi", DecimalAsString(DecimalValue(this.total))) ;
	SetDocText("totAsuransi2", DecimalAsString(DecimalValue(this.total))) ;
}

// Rumah Tangga

function Step4() {
	this.rumah_tangga = new Array(11);
}

Step4.prototype.getTotal = function() {
	
	this.total = 0;
	
	for (x=0; x < 9; x++)
	{
		this.total += parseInt(GetValueById("txtRumahTangga[" + x + "]"));
	}
	
	SetDocText("totRumahTangga", DecimalAsString(DecimalValue(this.total))) ;
	SetDocText("totRumahTangga2", DecimalAsString(DecimalValue(this.total))) ;
}

// Transportasi

function Step5() {
	this.num = 6;
	this.transportasi = new Array(this.num);
	this.name = "Transportasi";	
}

Step5.prototype.getTotal = function() {
	
	this.total = 0;
	
	for (x=0; x < this.num; x++)
	{
		this.total += parseInt(GetValueById("txt" + this.name + "[" + x + "]"));
	}
	
	SetDocText("tot" + this.name, DecimalAsString(DecimalValue(this.total))) ;
	SetDocText("tot" + this.name + "2", DecimalAsString(DecimalValue(this.total))) ;
}

// Anak

function Step6() {
	this.num = 16;
	this.anak = new Array(this.num);
	this.name = "Anak";	
}

Step6.prototype.getTotal = function() {
	
	this.total = 0;
	
	for (x=0; x < this.num; x++)
	{
		this.total += parseInt(GetValueById("txt" + this.name + "[" + x + "]"));
	}
	
	SetDocText("tot" + this.name, DecimalAsString(DecimalValue(this.total))) ;
	SetDocText("tot" + this.name + "2", DecimalAsString(DecimalValue(this.total))) ;
}

// Keluarga

function Step7() {
	this.num = 7;
	this.anak = new Array(this.num);
	this.name = "Keluarga";	
}

Step7.prototype.getTotal = function() {
	
	this.total = 0;
	
	for (x=0; x < this.num; x++)
	{
		this.total += parseInt(GetValueById("txt" + this.name + "[" + x + "]"));
	}
	
	SetDocText("tot" + this.name, DecimalAsString(DecimalValue(this.total))) ;
	SetDocText("tot" + this.name + "2", DecimalAsString(DecimalValue(this.total))) ;
}

// Pekerja Rumah

function Step8() {
	this.num = 6;
	this.anak = new Array(this.num);
	this.name = "PekerjaRumah";	
}

Step8.prototype.getTotal = function() {
	
	this.total = 0;
	
	for (x=0; x < this.num; x++)
	{
		this.total += parseInt(GetValueById("txt" + this.name + "[" + x + "]"));
	}
	
	SetDocText("tot" + this.name, DecimalAsString(DecimalValue(this.total))) ;
	SetDocText("tot" + this.name + "2", DecimalAsString(DecimalValue(this.total))) ;
}

// Pribadi

function Step9() {
	this.num = 15
	this.anak = new Array(this.num);
	this.name = "Pribadi";	
}

Step9.prototype.getTotal = function() {
	
	this.total = 0;
	
	for (x=0; x < this.num; x++)
	{
		this.total += parseInt(GetValueById("txt" + this.name + "[" + x + "]"));
	}
	
	SetDocText("tot" + this.name, DecimalAsString(DecimalValue(this.total))) ;
	SetDocText("tot" + this.name + "2", DecimalAsString(DecimalValue(this.total))) ;
}

// Sub Total Bulanan

function StepSubTotalBulanan() {
	this.name = "SubTotalBulanan";
}

StepSubTotalBulanan.prototype.getTotal = function() {
	Step_2.getTotal();
	Step_3.getTotal();
	Step_4.getTotal();
	Step_5.getTotal();
	Step_6.getTotal();
	Step_7.getTotal();
	Step_8.getTotal();
	Step_9.getTotal();
	
	this.total = 0;
	
	this.total = Step_2.total + Step_3.total + Step_4.total + Step_5.total + Step_6.total + Step_7.total + Step_8.total + Step_9.total;
		
	SetDocText("tot" + this.name, DecimalAsString(DecimalValue(this.total))) ;
}

// Cicilan

function Step10() {
	this.num = 5;
	this.anak = new Array(this.num);
	this.name = "Cicilan";	
}

Step10.prototype.getTotal = function() {
	
	this.total = 0;
	
	for (x=0; x < this.num; x++)
	{
		this.total += parseInt(GetValueById("txt" + this.name + "[" + x + "]"));
	}
	
	SetDocText("tot" + this.name, DecimalAsString(DecimalValue(this.total))) ;
	SetDocText("tot" + this.name + "2", DecimalAsString(DecimalValue(this.total))) ;
}

// Total Bulanan

function StepTotalBulanan() {
	this.name = "TotalBulanan";
}

StepTotalBulanan.prototype.getTotal = function() {
	Step_SubTotalBulanan.getTotal();
	Step_10.getTotal();
	Step_1.getTotal();
	
	this.total = 0;
	
	this.total = Step_SubTotalBulanan.total + Step_10.total;
	this.saldo = Step_1.total - this.total;
		
	SetDocText("tot" + this.name, DecimalAsString(DecimalValue(this.total))) ;
	SetDocText("totPengeluaran", DecimalAsString(DecimalValue(this.total))) ;
	SetDocText("totSaldo", DecimalAsString(DecimalValue(this.saldo))) ;
}

// The real calculation

var Step_1 = new Step1; // Penghasilan Bulanan
var Step_2 = new Step2; // Tabungan
var Step_3 = new Step3; // Premi Asuransi
var Step_4 = new Step4; // Rumah Tangga
var Step_5 = new Step5; // Transportasi
var Step_6 = new Step6; // Anak 
var Step_7 = new Step7; // Keluarga
var Step_8 = new Step8; // Pekerja Rumah
var Step_9 = new Step9; // Pribadi
var Step_SubTotalBulanan = new StepSubTotalBulanan;
var Step_10 = new Step10; // Cicilan
var Step_TotalBulanan = new StepTotalBulanan;

function CalculateStep(step) {
	if(step == 1)
		Step_1.getTotal();
		
	if(step == 2)
		Step_2.getTotal();
		
	if(step == 3)
		Step_3.getTotal();
		
	if(step == 4)
		Step_4.getTotal();
	
	if(step == 5)
		Step_5.getTotal();
		
	if(step == 6)
		Step_6.getTotal();
		
	if(step == 7)
		Step_7.getTotal();
		
	if(step == 8)
		Step_8.getTotal();
		
	if(step == 9)
		Step_9.getTotal();
		
	Step_SubTotalBulanan.getTotal();
	Step_TotalBulanan.getTotal();
}

function CalculateStep10() {
	Step_10.getTotal();
	Step_TotalBulanan.getTotal();
}

function CalculateRecap() {
	var sisaInvestasiN;
	var cicilanBulananN;
	var pengeluaranRutinN;
	var pengeluaranPribadiN;
	var cashflowN;
	
	var sisaInvestasi;
	var cicilanBulanan;
	var pengeluaranRutin;
	var pengeluaranPribadi;
	var cashflow;
	
	Step_2.getTotal();
	Step_3.getTotal();
	Step_4.getTotal();
	Step_5.getTotal();
	Step_6.getTotal();
	Step_7.getTotal();
	Step_8.getTotal();
	Step_9.getTotal();
	Step_10.getTotal();
	Step_TotalBulanan.getTotal();
	
	// Hitung Nominal
	
	sisaInvestasiN = Step_2.total + Step_TotalBulanan.saldo;
	SetDocText("capSisaInvestasiN", DecimalAsString(DecimalValue(sisaInvestasiN))) ;
	
	cicilanBulananN = Step_10.total;
	SetDocText("capCicilanBulananN", DecimalAsString(DecimalValue(cicilanBulananN))) ;
	
	pengeluaranRutinN = Step_3.total + Step_4.total + Step_5.total + Step_6.total + Step_7.total + Step_8.total;
	SetDocText("capPengeluaranRutinN", DecimalAsString(DecimalValue(pengeluaranRutinN))) ;
	
	pengeluaranPribadiN = Step_9.total;
	SetDocText("capPengeluaranPribadiN", DecimalAsString(DecimalValue(pengeluaranPribadiN))) ;
	
	cashflowN = sisaInvestasiN + cicilanBulananN + pengeluaranRutinN + pengeluaranPribadiN;
	SetDocText("capCashflowN", DecimalAsString(DecimalValue(cashflowN))) ;
	
	// Hitung Ratio
	
	sisaInvestasi = (sisaInvestasiN / cashflowN) * 100;
	SetDocText("capSisaInvestasi", DecimalAsString(DecimalValue(sisaInvestasi))) ;
	
	cicilanBulanan = (cicilanBulananN / cashflowN) * 100;
	SetDocText("capCicilanBulanan", DecimalAsString(DecimalValue(cicilanBulanan))) ;
	
	pengeluaranRutin = (pengeluaranRutinN / cashflowN) * 100;
	SetDocText("capPengeluaranRutin", DecimalAsString(DecimalValue(pengeluaranRutin))) ;
	
	pengeluaranPribadi = (pengeluaranPribadiN / cashflowN) * 100;
	SetDocText("capPengeluaranPribadi", DecimalAsString(DecimalValue(pengeluaranPribadi))) ;
	
	cashflow = sisaInvestasi + cicilanBulanan + pengeluaranRutin + pengeluaranPribadi;
	SetDocText("capCashflow", DecimalAsString(DecimalValue(cashflow))) ;
}