Hedera.Confirm = new Class({
	Extends: Hedera.Form,

	open: function() {
		this.close();
		this.isOpen = true;

		Hedera.BasketChecker.check(this.conn,
			this.onBasketCheck.bind(this));
	},
	
	onBasketCheck: function(isOk) {
		if (isOk)
			this.loadUi();
	},
	
	onOrderReady: function(form) {
		if (form.row < 0)
			return;
		
		if (form.get('method') != 'PICKUP') {
			Vn.Node.show(this.$('address'));
			Vn.Node.setText(this.$('method'), _('Agency'));
		} else {
			Vn.Node.hide(this.$('address'));
			Vn.Node.setText(this.$('method'), _('Warehouse'));
		}

		var total = form.get('taxableBase') + form.get('tax');
		
		if (total === null)
			total = 0;

		var credit = form.get('credit');
		var debt = form.get('debt');

		var totalDebt = debt + total;
		var exceededCredit = totalDebt - credit;
		var creditExceededCond = exceededCredit > 0;
			
		if (creditExceededCond)
			Htk.Toast.showWarning(
				_('You have exceeded your credit.'));

		this.$('debt').value = debt;
		this.$('total-debt').value = totalDebt;
		this.$('total-amount').value = totalDebt;
		this.$('credit-excess').value = exceededCredit;
		this.$('excess-amount').value = exceededCredit;
		
		this.$('pay-amount').value = 'ALL';
		
		if (credit > 0) {
			this.$('credit-info').style.display = 'table-row';

			if (creditExceededCond) {
				this.$('amount-selector').style.display = 'block';
				this.$('exceeded-info').style.display = 'table-row';
				this.$('pay-amount').value = 'EXCEEDED';
			}
		}
		
		var methods = [];
		
		if (totalDebt <= 0) {
			methods = ['balance'];
			selectedMethod = 'BALANCE';
		} else {
			methods = ['card', 'transfer', 'later'];

			if (!creditExceededCond) {
				methods.push('credit');
				selectedMethod = 'CREDIT';
			} else
				selectedMethod = 'CARD';
		}
		
		for (var i = 0; i < methods.length; i++)
			this.$(methods[i] +'-method').style.display = 'block';
		
		this.$('pay-method').value = selectedMethod;
	},
	
	onPayMethodChange: function(payMethod) {
		var id = this.displayedInfo;
	
		if (id)
			Vn.Node.removeClass(this.$(id), 'selected');
	
		switch (payMethod.value) {
			case 'BALANCE':
				id = 'balance-method';
				break;
			case 'CREDIT':
				id = 'credit-method';
				break;
			case 'CARD':
				id = 'card-method';
				break;
			case 'TRANSFER':
				id = 'transfer-method';
				break;
			default:
				id = null;
		}
		
		this.displayedInfo = id;
		
		if (id)
			Vn.Node.addClass(this.$(id), 'selected');
	},
	
	disableButtons: function(disable) {
		this.$('modify').disabled = disable;
		this.$('confirm').disabled = disable;
	},
	
	onModifyClick: function() {
		window.history.back();
	},
	
	onConfirmClick: function() {
		this.disableButtons(true);
		this.$('confirm-query').execute();
	},

	onConfirm: function(query, resultSet) {
		this.disableButtons(false);

		if (resultSet.fetchResult())
			this.$('success-dialog').show();
	},

	onDialogResponse: function() {
		if (this.$('pay-method').value === 'CARD') {
			if (this.$('pay-amount').value === 'EXCEEDED')
				var payAmount = this.$('excess-amount').value;
			else
				var payAmount = this.$('total-amount').value;
		
			var tpv = new Hedera.Tpv({conn: this.conn});
			tpv.pay(payAmount, this.$('order-form').get('companyFk'));
		} else
			this.hash.set({'form': 'ecomerce/orders'});
	}
});