/**
 * Le plugin ajaxForm permet de regenerer un formulaire via Ajax
 */
/*jQuery.fn.ajaxForm = function() {
    var selector = this.selector;

    function ajaxSubmit(event, beforeSavingCallback) {
        event.preventDefault();

        alert(beforeSavingCallback);
        var element = this;

        // start loading animation
        startLoading(element);

        // event before saving
        //$(document).trigger('ajaxform.beforesaving');
        if (beforeSavingCallback != undefined) {
          beforeSavingCallback.call();
        }

        // ajax request
        $.post(
            $(element).attr('action'),
            $(element).serializeArray(),
            function(data){
                $(element).replaceWith(data);
                $(selector).ajaxForm();
                stopLoading();
            }
        );

        // event after saving
        $(document).trigger('ajaxform.aftersaving');
    }

    function startLoading(element) {
        //$(element).hide();
        $(element).fadeTo("fast", 0.1);
        //$.ptUi.startLoading($(element));
    }

    function stopLoading() {
        //$.ptUi.stopLoading();
    }

    return this.each(function(beforeSavingCallback) {
        alert(beforeSavingCallback);
        $(this).submit(ajaxSubmit);
    });
};*/

$.ajaxForm = {
    defaults: {
        beforeSavingCallback: null,
        afterSavingCallback: null
    }
}
 
$.fn.ajaxForm = function(options) {
    var options = $.extend({}, $.ajaxForm.defaults, options);
    var selector = this.selector;

    function ajaxSubmit(event) {
        event.preventDefault();

        var element = this;

        // start loading animation
//        startLoading(element);

        // callback before saving
        if (options.beforeSavingCallback != null) {
          options.beforeSavingCallback.call();
        }

        // ajax request
        $.post(
            $(element).attr('action'),
            $(element).serializeArray(),
            function(data){
                $(element).replaceWith(data);
                $(selector).ajaxForm(options);
//                stopLoading();

                // callback after saving
                if (options.afterSavingCallback != null) {
                  options.afterSavingCallback.call();
                }
            }
        );
    }

    function startLoading(element) {
        //$(element).hide();
        $(element).fadeTo("fast", 0.1);
        //$.ptUi.startLoading($(element));
    }

    function stopLoading() {
        //$.ptUi.stopLoading();
    }

    return this.each(function() {
        $(this).submit(ajaxSubmit);
    });
};

