/*!
 * Ext JS Library 3.1.1
 * Copyright(c) 2006-2010 Ext JS, LLC
 * licensing@extjs.com
 * http://www.extjs.com/license
 */
Ext.ns('App', 'App.user');
/**
 * @class App.user.FormPanel
 * A typical FormPanel extension
 */
App.user.Form = Ext.extend(Ext.form.FormPanel, {
    renderTo: 'user-form',
    iconCls: 'silk-user',
    frame: true,
    labelAlign: 'right',
    title: 'All fields are required',
    frame: true,
    width: 750,
    defaultType: 'textfield',
    defaults: {
        anchor: '100%'
    },
    // private A pointer to the currently loaded record
    record: null,

    /**
    * initComponent
    * @protected
    */
    initComponent: function() {
        // build the form-fields.  Always a good idea to defer form-building to a method so that this class can
        // be over-ridden to provide different form-fields
        this.items = this.buildForm();

        // build form-buttons
        this.buttons = this.buildUI();

        // add a create event for convenience in our application-code.
        this.addEvents({
            /**
            * @event create
            * Fires when user clicks [create] button
            * @param {FormPanel} this
            * @param {Object} values, the Form's values object
            */
            create: true
        });

        // super
        App.user.Form.superclass.initComponent.call(this);
    },

    /**
    * buildform
    * @private
    */
    buildForm: function() {
        return [
            { fieldLabel: 'Richter', name: 'EQ_Richter', allowBlank: false },
            { fieldLabel: 'Date', name: 'EQ_Date', allowBlank: false, xtype: 'datefield', dateFormat: 'M$' },
            { fieldLabel: 'Location', name: 'EQ_Location', allowBlank: false, type: 'string' },
            { fieldLabel: 'Link', name: 'EQ_Link', allowBlank: false, type: 'string' }
        ];
    },

    /**
    * buildUI
    * @private
    */
    buildUI: function() {
        return [{
            text: 'Save',
            iconCls: 'icon-save',
            handler: this.onUpdate,
            scope: this
        }, {
            text: 'Create',
            iconCls: 'silk-user-add',
            handler: this.onCreate,
            scope: this
        }, {
            text: 'Reset',
            handler: function(btn, ev) {
                this.getForm().reset();
            },
            scope: this
}];
        },

        /**
        * loadRecord
        * @param {Record} rec
        */
        loadRecord: function(rec) {
            this.record = rec;
            this.getForm().loadRecord(rec);
        },

        /**
        * onUpdate
        */
        onUpdate: function(btn, ev) {
            if (this.record == null) {
                return;
            }
            if (!this.getForm().isValid()) {
                App.setAlert(false, "Form is invalid.");
                return false;
            }
            this.getForm().updateRecord(this.record);
        },

        /**
        * onCreate
        */
        onCreate: function(btn, ev) {
            if (!this.getForm().isValid()) {
                App.setAlert(false, "Form is invalid");
                return false;
            }
            this.fireEvent('create', this, this.getForm().getValues());
            this.getForm().reset();
        },

        /**
        * onReset
        */
        onReset: function(btn, ev) {
            this.fireEvent('update', this, this.getForm().getValues());
            this.getForm().reset();
        }
    });
