var signup = new Signup();

function Signup()
{
    
    this.dialog = null;
    this.doItAfter = null;
    this.already = false;
    
    this.show = function(doItAfter)
    {
        if (this.already) {
            doItAfter();
            return;
        }
        
        this.doItAfter = doItAfter;
        if (!this.dialog) {
            var dialog = $('#signup-dialog');
            dialog.html('<img src="/img/loadimage.gif" />');
            dialog.dialog({
                title: 'Регистрация',
                modal: true,
                closeOnEscape: false,
                width: 500
            });
            $.post(
                '/subscription/signup-simple',
                function(response) {
                    dialog.html(response);
                },
                'html'
            );
            this.dialog = dialog;
        } else {
            this.dialog.dialog('open');
        }
    }
    
    this.cancel = function()
    {
        if (this.dialog) {
            this.dialog.dialog('close');
        }
    }
    
    this.send = function()
    {
        var emailField = $('#email-signup');
        var submitButton = $('#submit-signup');
        submitButton.attr('disabled', 'disabled');
        var hasErrors = false;
        if (!basic.isEmail(emailField.val())) {
            $('#incorrectEmail-signup').show();
            submitButton.attr('disabled', 'disabled');
            emailField.keypress(function(){
                $('#incorrectEmail-signup').hide();
                submitButton.removeAttr('disabled');
            });
            hasErrors = true;
        }
        
        if (!hasErrors) {
            $.post(
                '/subscription/signup-simple2',
                { email: emailField.val() },
                function(response) {
                    if (response.success) {
                        $('#form-signup').hide();
                        $('#thankyou-signup').show();
                        signup.already = true;
                        signup.doItAfter();
                    } else if (response.showPassword) {
                        $('#email-signupPassword').val(response.email);
                        $('#form-signup').hide();
                        $('#form-signupPassword').show();
                    }
                },
                'json'
            );
        }
    }
    
    this.sendPassword = function()
    {
        var submitButton = $('#submit-signin');
        var passwordField = $('#password-signup');
        var incorrectPasswordBlock = $('#incorrectPassword-signup');
        var hasErrors = false;
        var params = {
            email: $('#email-signupPassword').val(),
            password: passwordField.val(),
            noRedirect: true
        };
        if (params.password.length < 2) {
            incorrectPasswordBlock.show();
            submitButton.attr('disabled', 'disabled');
            passwordField.keypress(function(){
                incorrectPasswordBlock.hide();
                submitButton.removeAttr('disabled');
            });
            hasErrors = true;
        }
        
        if (!hasErrors) {
            $.post(
                '/subscription/login',
                params,
                function(response)
                {
                    if (response.success) {
                        $('#form-signupPassword').hide();
                        $('#thankyou-signin').show();
                        signup.already = true;
                        signup.doItAfter();
                    } else {
                        incorrectPasswordBlock.show();
                        submitButton.attr('disabled', 'disabled');
                        passwordField.keypress(function(){
                            incorrectPasswordBlock.hide();
                            submitButton.removeAttr('disabled');
                        });
                    }
                },
                'json'
            );
        }
    }
    
    this.finish = function()
    {
        this.cancel();
    }
    
}