interface Templates {
	deposit: Template;
}

var qrValue;
var $qrContainer;
function showQrCode(){
	if (!qrValue || !$qrContainer) {
		return;
	}
	$qrContainer.html('');
	$qrContainer.qrcode({
		size: 200,
		text: qrValue,
		quiet: 1
	});
}

Template.deposit.helpers({
	address: function(){
		var address = Banking.Bitcoin.Address.db.findOne({}, {sort: {time: -1}});
		if (!address) {
			Banking.Bitcoin.AddressClient.createFirst();
		}
		else {
			qrValue = address.address;
			showQrCode();
		}
		return address;
	},
	deposits: function(){
		var method = Banking.Methods.BitcoinMethodClient.db.findOne();
		var wallet = Banking.WalletClient.db.findOne({currency: 'BTC'});
		if (!method || !wallet) {
			return;
		}
		return Banking.Transaction.db.find({
			wallet: wallet,
			'reference.id': method._id,
			referenceType: Banking.TransactionType.DEPOSIT
		}, {sort: {createTime: -1}});
	}
});

Template.deposit.events({

//	'touchstart .deposit-address': function() {
//		$('.deposit-address').select();
//	}
});

Template.deposit.rendered = function() {
	$qrContainer = $('.qrCode');
	showQrCode();
};

Template.deposit.created = function() {
	this.subscribe('Banking.Method');
	this.autorun(() => {
		var method = Banking.Methods.BitcoinMethodClient.db.findOne();
		var wallet = Banking.WalletClient.db.findOne({currency: 'BTC'});
		if (!method || !wallet) {
			return;
		}
		this._txSub = Meteor.subscribe('Banking/userTransactions', {
			wallet: wallet._id,
			'reference.id': method._id,
			referenceType: Banking.TransactionType.DEPOSIT
		}, {sort: {createTime: -1}});
	});
};

Template.deposit.destroyed = function() {
	if (this._txSub) {
		this._txSub.stop();
	}
};
