Ext.ns('Application');

Application.loginForm = Ext.extend(Ext.FormPanel, {
        
    fields: [
        new Ext.form.TextField({ 
            id: 'nickLoginFormField',
            fieldLabel: Application.lang.nick_form_field,
            allowBlank: false,
            vtype: 'alphanum',
            maxLength: 20,
            minLength: 4,
            width: 140
        }),
        new Ext.form.TextField({ 
            id: 'passLoginFormField',
            fieldLabel: Application.lang.pass_form_field,
            allowBlank: false,
            inputType: 'password',
            vtype: 'alphanum',
            maxLength: 20,
            minLength: 4,
            width: 140
        })
    ],
    
    initComponent:function() {
        Ext.apply(this, {
            labelAlign: 'right',
            labelWidth: 60,
            frame: true,
            autoHeight: true,
            border: false,
            items: [
                Ext.ComponentMgr.get('nickLoginFormField'),
                Ext.ComponentMgr.get('passLoginFormField')
            ]
        });
 
        Application.loginForm.superclass.initComponent.apply(this, arguments);
    },
    
    onRender:function() {
        Application.loginForm.superclass.onRender.apply(this, arguments);
    }                                                   
});
Ext.reg('loginForm', Application.loginForm);

Application.loginFormWindow = Ext.extend(Ext.Window, {
    id: 'loginFormWindow',
    width: 250,
    y: 350,
    closable: false,
    resizable: false,
    autoHeight: true,
    shadow: false,
    border: false,
    constrainHeader: true,
    title: Application.lang.login_form_title,
    plain: true,
    layout: 'fit',
    closeAction: 'hide',
    buttons: [
        {
            text: Application.lang.form_window_login_text,
            listeners: {
                click: function(){
                    var formItems = Ext.getCmp('loginFormWindow').items.items[0].fields;
                    for(i = 0; i < formItems.length; ++i) {
                        if(formItems[i].isValid() === false) {
                            Ext.MessageBox.show({
                                title: Application.lang.text_warning,
                                msg: Application.lang.login_empty_error_text,
                                buttons: Ext.MessageBox.OK,
                                icon: Ext.MessageBox.WARNING
                            });
                            return;
                        }
                    }
                    var params = {
                        nick_login: Ext.getCmp('nickLoginFormField').getValue(),
                        pass_login: Ext.getCmp('passLoginFormField').getValue()
                    };
                    Ext.Ajax.request({
                        url: Application.config.responseDir + 'log/in',
                        params: params,
                        success: function(response){
                            var result = response.responseText;
                            switch(result){
                                case '1':
                                    // Udane logowanie

                                    // Pokazanie komunikatu pomyslnego logowania
                                    Ext.MessageBox.show({
                                        title: Application.lang.login_msg_title,
                                        msg: Application.lang.login_msg_text
                                    });
                                    // Odswiezanie strony
                                    window.location.href=Application.baseDir+'admin/module';
                                    break;
                                case '0':
                                    Ext.getCmp('nickLoginFormField').setValue('');
                                    Ext.getCmp('passLoginFormField').setValue('');
                                    Ext.MessageBox.show({
                                        title: Application.lang.text_warning,
                                        msg: Application.lang.login_wrong_error_text,
                                        buttons: Ext.MessageBox.OK,
                                        icon: Ext.MessageBox.ERROR
                                    });
                                    break;
                                case 'brutalForce':
                                    Ext.getCmp('nickLoginFormField').setValue('');
                                    Ext.getCmp('passLoginFormField').setValue('');
                                    Ext.MessageBox.show({
                                        title: Application.lang.text_warning,
                                        msg: Application.lang.brutal_error_text,
                                        buttons: Ext.MessageBox.OK,
                                        icon: Ext.MessageBox.ERROR
                                    });
                                    break;
                                default:
                                    Application.errorHandler(result, loginFormWindow);
                                    break;
                            }
                        },
                        failure: function(response){
                            Application.failure();
                        }
                    });
                }
            }
        }
    ]
});
Ext.reg('loginFormWindow', Application.loginFormWindow);

Ext.onReady(function(){
    
    loginFormWindow = new Application.loginFormWindow({
        items: new Application.loginForm
    });
    
});

