protected override void PastePaymentInfo(PaymentRequest request) { HTMLDocument doc = request.Document; PaymentInfo info = request.PaymentInfo; if (info.IsDefinedTransfer == false) { if (IsAnyTransferSelected(doc) == false) { GoToTransferPage(request); return; } Util.SetElementValue(doc.getElementsByName(ACCOUNT_FIELD), info.BankAccountNo); if (info.BillerName.Length > 32) { Util.SetElementValue(doc.getElementsByName(NAME_FIELD), ReplaceSpecialChars(info.BillerName).Substring(0, 32)); } else { Util.SetElementValue(doc.getElementsByName(NAME_FIELD), ReplaceSpecialChars(info.BillerName)); } Util.SetElementValue(doc.getElementsByName(STREET_FIELD), ReplaceSpecialChars(info.Street)); Util.SetElementValue(doc.getElementsByName(CITY_FIELD), ReplaceSpecialChars(info.City)); Util.SetElementValue(doc.getElementsByName(POSTAL_CODE_FIELD), info.PostalCode); } else { Object tmp = null; int result = Util.SetElementValue(doc.getElementsByName(DEFINED_TRANSFER_FIELD), info.DefinedTransferName, doc.CreateEventObject(ref tmp)); if (result == -1) { String question = String.Format(Resources.BzWbkNoDefinedTransfer, info.DefinedTransferName); if (Util.ShowYesNoQuestion(null, question) == true) { info.DefinedTransferName = ""; PastePaymentInfo(request); } else { info.State = State.INVALID; } return; } else if (result > 1) { Util.ShowInfoMessage(String.Format(Resources.BzWbkMoreThanOneDefinedTransfer, info.DefinedTransferName)); } } // we have to wait 300ms and paste data asynchronously because some // ugly JavaScript clears all the fields on the bank's page new Thread(new ThreadStart(new PasteHelper(request, this).Run)).Start(); info.State = State.IN_PROGRESS; }