private void calculate_Click(object sender, EventArgs e)
        {
            frmDebt d = new frmDebt();

            d.ShowDialog();
            if (d.Value == DialogResult.OK)
            {
                Debt debt = new Debt(d.DebtName, d.Balance, d.IntrestRate, d.Payment, d.FirstPaymentDate);
                debtList.Debts.Add(debt);

                DebtList.Save(debtList, path);

                RefreshData();
            }

            /*
             * double rate = Convert.ToDouble(txtRate.Text);
             * double payment = Convert.ToDouble(txtPayment.Text);
             * double balance = Convert.ToDouble(txtBalance.Text);
             * string name = txtName.Text;
             * if (name.Trim() == "")
             * {
             *  name = "Debt " + (debtList.Debts.Count + 1).ToString();
             * }
             *
             * Debt debt = new Debt(name, balance, rate, payment);
             * debtList.Debts.Add(debt);
             *
             * DebtList.Save(debtList, path);
             *
             * RefreshData();
             */
        }
        private void btnDebtDown_Click(object sender, EventArgs e)
        {
            int        index    = -1;
            List <int> toSelect = new List <int>();

            foreach (DataGridViewRow r in gvDebts.Rows)
            {
                index++;
                if (r.Selected && index < gvDebts.Rows.Count - 1)
                {
                    Debt dummy = debtList.Debts[index];
                    debtList.Debts[index]     = debtList.Debts[index + 1];
                    debtList.Debts[index + 1] = dummy;
                    toSelect.Add(index + 1);

                    DebtList.Save(debtList, path);
                }
            }

            RefreshData();

            foreach (int s in toSelect)
            {
                gvDebts.Rows[s].Selected = true;
            }
        }
        private void btnCalculatePlan_Click(object sender, EventArgs e)
        {
            debtList.InitialSnowball      = Convert.ToDouble(txtExtraPayment.Text);
            debtList.InitialSnowballStart = dateTimePicker1.Value;
            DebtList.Save(debtList, path);

            RefreshData();
        }
        private void dgvExtraPayments_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 4)
            {
                bool check = Convert.ToBoolean(dgvExtraPayments.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
                debtList.ExtraPayments[e.RowIndex].Enabled = check;

                DebtList.Save(debtList, path);

                RefreshData();
            }
        }
        private void gvDebts_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            frmDebt d = new frmDebt(debtList.Debts[e.RowIndex]);

            d.ShowDialog();
            if (d.Value == DialogResult.OK)
            {
                Debt debt = new Debt(d.DebtName, d.Balance, d.IntrestRate, d.Payment, d.FirstPaymentDate);
                debtList.Debts[e.RowIndex] = debt;

                DebtList.Save(debtList, path);

                RefreshData();
            }
        }
        private void btnDebtDelete_Click(object sender, EventArgs e)
        {
            int index = -1;

            foreach (DataGridViewRow r in gvDebts.Rows)
            {
                index++;
                if (r.Selected && index > -1)
                {
                    DialogResult dr = MessageBox.Show("Are you sure you want to delete the \"" + debtList.Debts[index].Name + "\" debt?", "Delete?", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (dr == DialogResult.Yes)
                    {
                        debtList.Debts.RemoveAt(index);
                        DebtList.Save(debtList, path);
                    }
                }
            }

            RefreshData();
        }
        private void dgvExtraPayments_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            frmExtraPayment f = new frmExtraPayment(debtList.ExtraPayments[e.RowIndex]);

            f.ShowDialog();
            if (f.Value == DialogResult.OK)
            {
                ExtraPayment ep = new ExtraPayment();
                ep.Name               = f.ExtraPaymentName;
                ep.Amount             = f.Amount;
                ep.Recurring          = f.Recurring;
                ep.StartDate          = f.StartDate;
                ep.StopDate           = f.StopDate;
                ep.IndefiniteStopDate = f.IndefiniteStopDate;

                debtList.ExtraPayments[e.RowIndex] = ep;

                DebtList.Save(debtList, path);

                RefreshData();
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            frmExtraPayment f = new frmExtraPayment();

            f.ShowDialog();
            if (f.Value == DialogResult.OK)
            {
                ExtraPayment ep = new ExtraPayment();
                ep.Name               = f.ExtraPaymentName;
                ep.Amount             = f.Amount;
                ep.Recurring          = f.Recurring;
                ep.StartDate          = f.StartDate;
                ep.StopDate           = f.StopDate;
                ep.IndefiniteStopDate = f.IndefiniteStopDate;

                debtList.ExtraPayments.Add(ep);

                DebtList.Save(debtList, path);

                RefreshData();
            }
        }