var dialog = $( '<div></div>' );
function popup_inline(header, data, event, klass, options)
{
    try {
    if( event )
        event.preventDefault();
    } catch( e ){}
    var opts = { buttons:{}, type:'get', height:'auto', autoOpen:false, title:header, width:450, position:'center' };
    $.extend( opts, options );
    dialog = dialog.html(data).dialog(opts);
    jQuery.each( opts, function( k, v ){ dialog.dialog('option', k, v ); });
    dialog.dialog( 'open' );
}
function popup_inline_temp(header, data, event, klass, options)
{
    popup_inline( header, data, event, null, options);
    setTimeout('dialog.dialog("close")', 4000);
}
function popup_url(header, url, event, options)
{
    popup_inline(header, sprintf('<div style="text-align:center;padding:20px;"><img src="%s"></div>', loading_image_path), event, null, options);
    var opts = { height:'auto', buttons:{}, type:'get', data:{}, width:600, temp:false, error:function(d){}, complete:function(d){}, error:function(d){}, success:function(d){} };
    $.extend( opts, options );

	ajax_request(url, {
		type:  opts.type,
        data:  opts.data,
		error: function(data) {
            if( opts.temp )
                popup_inline_temp(header, data, event, null, options);
            else
                popup_inline(header, data, event, null, options);
            opts.error(data);
            opts.complete(data);
		},
		success	: function(data){
            if( opts.temp )
                popup_inline_temp(header, data, event, null, options);
            else
                popup_inline(header, data, event, null, options);
            opts.success(data);
            opts.complete(data);
		}
	});
}
function popup_url_temp(header, url, event, options)
{
    var opts = { temp:true };
    $.extend( opts, options );
    popup_url( header, url, event, options);
}
function popup_url_updater_fixed(target, header, url, event, options, klass, key_msg, key_content)
{
    var opts = { fixed:true };
    $.extend( opts, options );
    popup_url_updater(target, header, url, event, options);
}
function popup_url_updater(target, header, url, event, options, fixed)
{
    popup_inline(header, sprintf('<div style="text-align:center;padding:20px;"><img src="%s"></div>', loading_image_path), event, null, options);
    var opts = { kmsg:'message', kcontent:'content', fixed:false, data:{}, type:'get',error:function(d){}, complete:function(d){}, error:function(d){}, success:function(d){} };
    $.extend( opts, options );

	ajax_request(url, {
		type  : opts.type,
        data  : opts.data,
		error : function(data) {
            try {
                data = $.evalJSON(data);
            }
            catch (ex) {
                try{
		          data = $.evalJSON(data.responseText);
                }catch( ex )
                {  }
	        }
            opts.error(data);
            opts.complete(data);

            if( opts.fixed )
                popup_inline(header, data[opts.kmsg], event);
            else
                popup_inline_temp(header, data[opts.kmsg], event);
		},
		success	: function(data){

            try {
                data = $.evalJSON(data);
            }
            catch (ex) {
                try{
		          data = $.evalJSON(data.responseText);
                }catch( ex )
                {  }
	        }
            if( data[opts.kcontent] )
            {
                target.replaceWith( data[opts.kcontent] );
                $.string( data[opts.kcontent] ).evalScripts();
            }
            opts.success( data );
            opts.complete( data );

            if( opts.fixed )
                popup_inline(header, data[opts.kmsg], event);
            else
                popup_inline_temp(header, data[opts.kmsg], event);
		}
	});
}