protected void SuccessfulTransferGridView_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.ToUpper().Equals("ADD"))
            {
                // add new row from footer to db
                TransferDataHolder NewTransferDataHolder = new TransferDataHolder();

                GridViewRow row = SuccessfulTransferGridView.FooterRow;

                NewTransferDataHolder.Amount = Utilities.ConvertMoneyStringToDecimal(((TextBox)row.FindControl("NewAmountTextBox")).Text);
                NewTransferDataHolder.K = Convert.ToInt32(((TextBox)row.FindControl("NewTransferKTextBox")).Text);
				NewTransferDataHolder.ReferenceNumber = ((TextBox)row.FindControl("NewReferenceNumberTextBox")).Text;

                TransferDataHolderList.Add(NewTransferDataHolder);

                ViewState["TransferDataHolderList"] = TransferDataHolderList;

                TransfersBindData();
            }
        }
        protected void SaveButton_Click(object sender, EventArgs e)
        {
			Page.Validate("");
			if (Page.IsValid)
			{
				this.ErrorLabel.Visible = false;
				this.ErrorLabel.Text = "";
				
				for (int i=0; i< this.TransferDataHolderList.Count; i++)
				{
					try
					{
						if (!this.CompletedTransferKList.Contains(TransferDataHolderList[i].K))
						{
							Transfer transfer = new Transfer(TransferDataHolderList[i].K);
							if (transfer.Amount != TransferDataHolderList[i].Amount)
							{
								this.ErrorLabel.Text += "ERROR: Transfer #" + transfer.K.ToString() + " has amount " + transfer.Amount.ToString("c")
														+ "\n. You've entered " + TransferDataHolderList[i].Amount.ToString("c") + ". Please resolve.\n";
								this.ErrorLabel.Visible = true;
							}
							else if (!transfer.Status.Equals(Transfer.StatusEnum.Pending))
							{
								this.ErrorLabel.Text += "ERROR: Transfer #" + transfer.K.ToString() + " has status " + transfer.Status.ToString()
														+ "\n. Only Pending transfers allowed to be made successful.\n";
								this.ErrorLabel.Visible = true;
							}
							else
							{
								transfer.Status = Transfer.StatusEnum.Success;
								transfer.DateTimeComplete = DateTime.Now;
								transfer = TransferDataHolderList[i].SetReferenceNumber(transfer);	
								transfer.Update();
								transfer.UpdateAffectedInvoices();
								Utilities.EmailTransfer(transfer, false, true);
								TransferDataHolderList[i] = new TransferDataHolder(transfer);
								this.CompletedTransferKList.Add(transfer.K);
							}
						}
						else
						{
							this.ErrorLabel.Text += "ERROR: Transfer #" + TransferDataHolderList[i].K.ToString() + " has already been successfully updated.\n";
							this.ErrorLabel.Visible = true;
						}
					}
					catch (Exception ex)
					{
						// Display error message
						this.ErrorLabel.Text += ex.Message + "\n";
						this.ErrorLabel.Visible = true;
					}
					
				}
				this.Completed = true;
				ShowResults();
			}
        }