var MKLib_JQuery_AjaxForm = {
    /**
     * submit handler for a form
     * @param {DOM element} form
     */
    onSubmit : function(form,options) {
        $.post($(form).attr("action"),
            $(form).serialize(),
            function(data) {
                if (data == true) {
                    if (options.success) {
                        options.success();
                    }
                }
                if (data.errors) {
                    if (options.error) {
                        options.error(data.errors);
                    } else {
                        //remove all errors container
                        $(form).find(".errors").remove();
                        $.each(data.errors, function(elementName, messages) {
                            var jCurrentElement = $(form).find("[name="+elementName+"]");
                            MKLib_JQuery_AjaxForm.addErrorElement(jCurrentElement, messages);
                        });
                    }
                }
            },
            "json"
        );

        return false;
    },

    /**
     * add error <ul> list after some parent form element
     * @param {jQuery} jParent parent form element
     * @param {array} messages list of messages
     */
    addErrorElement: function(jParent,messages) {
        //try to find error elements <ul>, if it doesn\'t exist, create this one
        var jErrorElement = $(jParent).next(".errors");
        if (!jErrorElement.length > 0) {
            jErrorElement = $("<ul></ul>").addClass("errors");
            jParent.after(jErrorElement);
        }

        jErrorElement.empty();

        //add error messages into element
        $.each(messages, function() {
            jErrorElement.append("<li>"+this+"</li>");
        });
    }
}
