/**
 * @author schiesser
 */
Ext.ns('efiport.book.view');

efiport.book.view.payment = function(widget){
    var that = {
        viewName: 'Zahlungsart'
	};
	
	var commit = function(){
        if (isBankCollection.checked) {
            if (that.panel.getForm().isValid()) {
				if (!isDirectDebit.checked) {
					isDirectDebit.msgTarget = 'under';
					Ext.form.Field.prototype.markInvalid.call(isDirectDebit, widget.directDebitNotCheckedText);
				}
				else {
					widget.controller.payment.payPerBankCollection(that.panel.getForm().getValues());
				}
            }
        }
        else if(isInvoice.checked){
            widget.controller.payment.payPerInvoice();
        } else if(isCreditCard.checked) {
            widget.controller.payment.payPerCC();
		}
    };
    
    var isDirectDebit = new Ext.form.Checkbox({
       		boxLabel: widget.directDebitText
        });
		
    that.bankCollectionPanel = new Ext.Panel({
        hideLabels: true,
        hidden: true,
        border: false,
        header: false,
        layout: 'form',
        
        items: [{
            xtype: 'textfield',
            emptyText: 'Ihre Kontonummer',
            blankText: 'Bitte geben Sie Ihre Kontonummer an.',
            name: 'accountNumber',
            allowBlank: false,
            width: 300
        }, {
            xtype: 'textfield',
            emptyText: 'Name der Bank',
            allowBlank: false,
            blankText: 'Bitte geben Sie den Namen Ihrer Bank an.',
            name: 'nameOfBank',
            width: 300
        }, {
            xtype: 'textfield',
            emptyText: 'Bankleitzahl',
            allowBlank: false,
            blankText: 'Bitte geben Sie die Bankleitzahl Ihrer Bank an.',
            name: 'bankCode',
            width: 300
        }, isDirectDebit]
    });
    
    var isInvoice = new Ext.form.Radio({
        boxLabel: 'Zahlen auf Rechnung',
        name: 'type',
        inputValue: 'invoice'
    });
    
    var isBankCollection = new Ext.form.Radio({
        boxLabel: 'Zahlen per Bankeinzug',
        name: 'type',
        inputValue: 'bankCollection',
        listeners: {
            check: function(){
                that.bankCollectionPanel.setVisible(this.checked);
            }
        }
    });
    
    var isCreditCard = new Ext.form.Radio({
        boxLabel: 'Zahlen per Kreditkarte',
        name: 'type',
        inputValue: 'creditCard',
		hidden: !widget.creditCardPayment
    });
    
    that.panel = new Ext.FormPanel({
        hideLabels: true,
        border: false,
        header: false,
        keys: {
            key: Ext.EventObject.ENTER,
            fn: commit
        },
        
        items: [{
            border: false,
            html: widget.paymentText
        }, {
            xtype: 'radiogroup',
            items: [isInvoice, isBankCollection, isCreditCard]
        }, that.bankCollectionPanel]
    
    });

	that.panel.addButton('Zurück', function() {
		Extreme.util.ViewHelper.previousView(widget.element);
	});
    that.panel.addButton('Weiter', commit);
    
    widget.model.authPartner.addListener('load', function(){
		var partner = widget.model.authPartner.getAt(0);
		var directDebit = partner.get('directDebit');
		isBankCollection.setValue(directDebit);
		isInvoice.setValue(!directDebit);
        that.panel.getForm().loadRecord(partner);
        that.panel.getForm().clearInvalid();
    });
    widget.model.authPartner.load();
    
    return that;
};


