var ForgotFormController = function() {
    var _messages;

    this.setMessages = function(messages) {
        _messages = messages;
    }

    this.isFormOpened = function() {
        return !$("#lostpassword").hasClass("hide");
    }

    this.registerFormOpenEvent = function() {
        $("#linkForgot").bind("click", _openForgotForm);
        $("a.linkForgot_add").live("click", _openForgotForm);
    }

    var _registerSubmitEvent = function() {
        $("#forgotSubmit").bind("click", _submitEvent);
    }

    var _registerFormCloseEvent = function() {
        $("#linkCloseForgotForm").click(function() {
            $("#lostpassword").addClass("hide");
            $("body #fade").remove();
        });
    }

    var _openForgotForm = function() {
        _drawForgotForm();
        $("body #fade").remove();
        $("body").append('<div id="fade" ></div>');
        body_height = document.height || document.documentElement.scrollHeight
        $("body #fade").css("height",body_height)
        $("body #fade").fadeTo(0, 0.4);
    }

    var _drawForgotForm = function() {
        if (!$("#registration").hasClass("hide")) $("#registration").addClass("hide");
        if (!$("#login").hasClass("hide")) $("#login").addClass("hide");

        $("#lostpassword div.content").show();
        $("#lostpassword div.bottom").show();
        $("#passwordSendMessage").hide();
        $("#lostpassword input[name=mail]").val('');

        $("#lostpassword").removeClass("hide");
    }

    var _callbackForgotCheck = function(response) {
        if(response.success) {
          $("#lostpassword div.content").hide();
          $("#lostpassword div.bottom").hide();
          $("#passwordSendMessage").show();
        }
        else {
            var errors = response.errors;
            _drawErrors(errors);
        }
        $('#forgotSubmit').html('Прислать');
        _registerSubmitEvent();
    }

    var _submitEvent = function(event) {
        $("#lostpassword span.error").remove();
        var errors = _validate();
        if (errors.length) {
            _drawErrors(errors);
            return false;
        }

       	_form = $('#forgotForm');
        var qString = _form.formSerialize();
     	$.post("/ajax.php?", qString, _callbackForgotCheck, "json");
        $('#forgotSubmit').html('Подождите...');
        $('#forgotSubmit').unbind('click');
    }

    var _validate = function() {
        var errors = [];
        if(!emailIsValid($("#forgotForm input[name=mail]").val())) {
            errors.push("illegal_email");
        }
        return errors;
    }

    var _drawErrors = function(errors) {
        _translate(errors);
        $.each(errors, function(idx, error) {  $("#forgotForm").before('<span class="error" style="padding-left:90px;">' + error + '</span>'); });
    }

    var _translate = function(errors) {
        for (var i=0;i < errors.length;i++) {
            errors[i] = _messages.loginErrors[errors[i]];
        }
    }
    _registerSubmitEvent();
    _registerFormCloseEvent();
}

$(document).ready(function(){
    var ffc = new ForgotFormController();
    ffc.setMessages(messages);
    ffc.registerFormOpenEvent();
});
