WalletModel::SendCoinsReturn WalletModel::sendCoins(WalletModelTransaction &transaction)
{
    QByteArray transaction_array; /* store serialized transaction */

    {
        LOCK2(cs_main, wallet->cs_wallet);
        CWalletTx *newTx = transaction.getTransaction();

        // Store PaymentRequests in wtx.vOrderForm in wallet.
        foreach(const SendCoinsRecipient &rcp, transaction.getRecipients())
        {
            if (rcp.paymentRequest.IsInitialized())
            {
                std::string key("PaymentRequest");
                std::string value;
                rcp.paymentRequest.SerializeToString(&value);
                newTx->vOrderForm.push_back(make_pair(key, value));
            }
            else if (!rcp.message.isEmpty()) // Message from normal feathercoin:URI (feathercoin:123...?message=example)
                newTx->vOrderForm.push_back(make_pair("Message", rcp.message.toStdString()));
        }

				//Run//QMessageBox::information(NULL, "Info2", "Click_sendCoins", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
        CReserveKey *keyChange = transaction.getPossibleKeyChange();
        LogPrintf("sendCoins: newTx= \n%s", newTx->ToString());
        
        if(!wallet->CommitTransaction(*newTx, *keyChange))
            return TransactionCommitFailed;
				//string strError =wallet->SendMoneyToDestination(rcp.label, transaction.GetValueOut(), *newTx);
				
        CTransaction* t = (CTransaction*)newTx;
        CDataStream ssTx(SER_NETWORK, PROTOCOL_VERSION);
        ssTx << *t;
        transaction_array.append(&(ssTx[0]), ssTx.size());
    }

    // Add addresses / update labels that we've sent to to the address book,
    // and emit coinsSent signal for each recipient
    //No Run//
    foreach(const SendCoinsRecipient &rcp, transaction.getRecipients())
    {
        // Don't touch the address book when we have a payment request
        if (!rcp.paymentRequest.IsInitialized())
        {
            std::string strAddress = rcp.address.toStdString();
            CTxDestination dest = CBitcoinAddress(strAddress).Get();
            std::string strLabel = rcp.label.toStdString();
            {
                LOCK(wallet->cs_wallet);

		            if (rcp.typeInd == AddressTableModel::AT_Stealth)
		            {
		                wallet->UpdateStealthAddress(strAddress, strLabel, true);
		            } else 
		            {
		                std::map<CTxDestination, CAddressBookData>::iterator mi = wallet->mapAddressBook.find(dest);
		                // Check if we have a new address or an updated label
		                if (mi == wallet->mapAddressBook.end())
		                {
		                    wallet->SetAddressBook(dest, strLabel, "send");
		                }
		                else if (mi->second.name != strLabel)
		                {
		                    wallet->SetAddressBook(dest, strLabel, ""); // "" means don't change purpose
		                }
		            }
          	}
        }
        emit coinsSent(wallet, rcp, transaction_array);
        LogPrintf("sendCoins: updateAddressBook. \n");
    }

    return SendCoinsReturn(OK);
}