
(function() {
    
    var Y = Nb.Lib;

    Nb.FeUser.Gui.ProfileEditForm = function()
    {
        Nb.FeUser.Gui.ProfileEditForm.superclass.constructor.apply(this, arguments);
        
        this.on('ajaxSubmitComplete', this._onAjaxSubmitComplete, this)

        var deleteAccount = Y.one('#profile-delete-account');

        if (deleteAccount)
        {
            deleteAccount.on('click', this._onDeleteAccountClick, this, deleteAccount);
        }

        var changeEmail = Y.one('#profile-change-email');

        if (changeEmail)
        {
            changeEmail.on('click', this._onChangeEmailClick, this, changeEmail);
        }
    }
    
    Nb.FeUser.Gui.ProfileEditForm.NAME = 'profileEditForm';
    
    Nb.FeUser.Gui.ProfileEditForm.ATTRS = {
        promotion : {
            value : ''
        },
        layer : {
            value : null
        }
    }
    
    Y.extend(Nb.FeUser.Gui.ProfileEditForm, Nb.Core.Form, {
        _onDeleteAccountClick : function(event, element)
        {
            event.halt();

            if (confirm('Möchten Sie Ihren Account wirklich löschen?'))
            {
                Y.io(element.get('href'), {
                    method : 'post',
                    on : {
                        complete: this._onDeleteAccountComplete
                    },
                    context: this
                });
            }

            


        },
        _onDeleteAccountComplete : function(transactionId, response)
        {
            var response = Y.JSON.parse(response.responseText);

            if (response.data.content)
            {
                this.get('layer').set('content', response.data.content);
            }

        },
        _onChangeEmailClick : function(event, element)
        {
            event.halt();

            Y.io(element.get('href'), {
                method : 'post',
                on : {
                    complete: this._onChangeEmailComplete
                },
                context: this
            });
        },
        _onChangeEmailComplete : function(transactionId, response)
        {
            var response = Y.JSON.parse(response.responseText);

            if (!this.changeEmailLayer)
            {
                this.changeEmailLayer = new Nb.Wr.UI.Layer();
            }

            this.changeEmailLayer.set('header', response.data.header);
            this.changeEmailLayer.set('content', response.data.content);

            if (response.data.colorSchema)
            {
                this.changeEmailLayer.set('colorSchema', response.data.colorSchema);
            }

            if (response.data.width)
            {
                this.changeEmailLayer.set('width', response.data.width);
            }

            this.changeEmailLayer.show();

            for (var i = 0; i < response.data.components.length; i++)
            {
                var componentConfig = Y.JSON.parse(response.data.components[0]);

                componentConfig.config.layer = this.changeEmailLayer;

                var type = Nb.Core.Util.getType(componentConfig.type);
                var component = new type(componentConfig.config);

                Nb.Wr.Controller.addComponent(componentConfig.name, component);
            }
        },
        _onAjaxSubmitComplete : function(event)
        {
            if (this.get('layer'))
            {
                this.get('layer').set('content', event.response.data.content);
            }
        }
    });
})();
