function updateForm (html) {
    if (html.success === true) {
        if (!html.redirect) {
            if (immediately === true) $('#MainForm').submit();
            else location.reload();
        } else {
            loadForm(html.redirect);
        }
        return;
    }
    $('#CurrentDialogContent').remove();
    var content = $(html).filter('.dialog-content');
    if (content.length === 0) content = $(html).find('.dialog-content');
    var form = content.find('form');
    var submit = form.find('.submit').remove().find(':input');
    content.attr('id', 'CurrentDialogContent');
    content.dialog({
        modal: true,
        resizable: false,
        draggable: false,
        width: 'auto',
        buttons: [{
            text: submit.val(),
            id: submit.attr('id'),
            click: function () {
                if (form.valid()) {
                    $.ajax({
                        url: form.attr('action'),
                        type: 'POST',
                        data: form.serialize(),
                        success: updateForm
                    });
                }
            }
        }]
    }).keyup(function (e) {
        if (e.keyCode == 13) {
            $('#' + submit.attr('id')).click();
        }    
    });
    $(html).filter('script, link').appendTo('body');
    $('.ui-widget-overlay').live('click', function() { $('#CurrentDialogContent').dialog('close'); });
    $('#CurrentDialogContent :text:visible:first').focus();
}

function loadForm(url) {
    $.ajax({
        url: url,
        success: updateForm
    });
}

$(function () {
    $('.dialog-link').live('click', function () { loadForm(this.href); return false; });
});
