
nfusion.ajaxDialog = function(target, title, loadingHtml, width, height, data, callback) {
    if ( !target ) return;
    
    var title = title || '&nbsp;';
    var loadingHtml = loadingHtml || 'Loading...';
    var width = width || 700;
    var height = height || 500;
    var data = data || {};
    var callback = callback || null;
    
    $dlg = $('#ajax-dialog');
    $dlg.dialog('close');
    $dlg.html(loadingHtml);
    $dlg.load(target, data, function (responseText, textStatus, XMLHttpRequest) {
        $dlg.html('<div id="ajax-dialog-inner">' + $dlg.html() + '</div>');
        if ( typeof Drupal.textareaAttach == 'function' ) {
            Drupal.textareaAttach();
        }
        if ( typeof Drupal.attachBehaviors == 'function' ) {
            Drupal.attachBehaviors();
        }
        if ( typeof callback == 'function' ) {
            callback.call($dlg, responseText, textStatus, XMLHttpRequest);
        }
    });
    $dlg.dialog({
        modal: true,
        autoOpen: true,
        title: title,
        height: height,
        width: width,
        draggable: true,
        resizable: false,
        overlay: {
            opacity: 0.5,
            background: '#000000'
        },
        bgiframe: true
    });
    $dlg.dialog('open');
};

$(document).ready(function() {
    $('body').append('<div id="ajax-dialog"></div>');
    $('a[rel^="dialog:"]').click(function() {
        var params = nfusion.parseParams(this.rel.substr(7));
        params.target = this.href + (params.target ? ' ' + params.target : '');
        nfusion.ajaxDialog(params.target, params.title, params.loadingHtml, parseInt(params.width), parseInt(params.height));
        return false;
    });
});

