var LoginFormController = function() {
    var _messages;

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

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

    this.registerFormOpenEvent = function() {
        $("#linkLogin").bind("click", _openLoginForm);
        $("a.linkLogin_add").live("click", _openLoginForm);
    }

    var _registerSubmitEvent = function() {
        //$("#login form").bind("submit", _submitEvent);
        $("#loginSubmit").bind("click", _submitEvent);
    }

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

    var _openLoginForm = function() {
        _drawLoginForm();
        $("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 _drawLoginForm = function() {
        if (!$("#registration").hasClass("hide")) $("#registration").addClass("hide");
        if (!$("#lostpassword").hasClass("hide")) $("#lostpassword").addClass("hide");
        $("#login").removeClass("hide");
        $("#fieldLogin").focus();
    }

    var _callbackLoginCheck = function(response) {
        if(response.success) {
          $('#loginForm').submit();
        }
        else {
            var errors = [];
            errors.push("illegal_login_password");
            _drawErrors(errors);
        }
        $('#loginSubmit').html('Войти');
        _registerSubmitEvent();

    }



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

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

    var _validate = function() {
        var errors = [];
        if (!$("#login input[name=login]").attr("value") || !$("#login input[name=pass]").attr("value")) {
            errors.push("illegal_login_password");
        }
        return errors;
    }

    var _drawErrors = function(errors) {
        _translate(errors);
        $.each(errors, function(idx, error) {  $("#loginForm").before('<span class="error" style="padding-left:130px;">' + 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(){
    $("#linkLogin").attr("href", "#");

    var lfc = new LoginFormController();
    lfc.setMessages(messages);
    lfc.registerFormOpenEvent();
});