﻿$(function () {
    wa.ajax.forms.create([
        { formId: 'formCreateUser', success: wa.ajax.forms.success.userCreated }
    ]);
});
/*--- AJAX FUNCTIONS ---*/
(function (wa) {
    wa.ajax = {};
} (window.wa = window.wa || {}));

(function (wa, $) {
    wa.ajax.forms = {};
    function beforeFunction($form) {
        var $btn = $form.find(':submit');
        var img = $('<img />', {
            src: '/public/images/loading.gif',
            alt: 'processing...',
            id: 'imgProcessing'
        });
        $btn.after(img).hide();
        return $form.valid();
    }
    wa.ajax.forms.create = function (requestObject) {
        for (var i = 0; i < requestObject.length; i++) {
            var formId = requestObject[i].formId;
            var $form = $('#' + formId);
            if ($form.length > 0) {
                $form.validate();
                var options = {
                    beforeSubmit: function ($currentForm) {
                        return function () {
                            beforeFunction($currentForm);
                        }
                    } ($form),
                    dataType: 'json'
                };
                if (requestObject[i].success) {
                    options.success = requestObject[i].success;
                }
                else {
                    options.success = wa.ajax.forms.success.resetWithFlash;
                }
                $form.ajaxForm(options);
            }
        }
    };
    wa.ajax.forms.restore = function ($form) {
        $('#imgProcessing').remove();
        $form.find(':submit').show();
    };
} (window.wa = window.wa || {}, jQuery));

/*--- AJAX FORMS SUCCESS CALLBACKS ---*/
(function (wa, $) { 
    wa.ajax.forms.success = {};
    wa.ajax.forms.success.userCreated = function (result, statusText, xhr, $form) {
        if(result === true) {
            window.location = "/";
        }
    };
    wa.ajax.forms.success.resetWithFlash = function (result, statusText, xhr, $form) {
        if (result.Success === false || !result.ActionUrl) {
            wa.notify.show(result.Message, 1);
            wa.ajax.forms.restore($form);
            return;
        }
        window.location = result.ActionUrl;
    };
} (window.wa = window.wa || {}, jQuery));
