
if ( !dialogs )
{
	var dialogs = {};
}

function CloseDialog( dialogName )
{
	$( "#PgJqueryDialog-" + dialogName ).dialog( "close" );
	$( "#PgJqueryDialog-" + dialogName ).remove();
}

function OpenDialog( dialogName, params, settingsOverride  )
{
	var dialog = dialogs[ dialogName ];

	$.extend( dialog, settingsOverride );

	var dialogHtml = "<div id='PgJqueryDialog-" + dialogName + "' title='" + dialog.title.replace( "'", "\'" ) + "'>";
	dialogHtml += dialog.content;
	dialogHtml += "</div>";

	$( "body" ).prepend( dialogHtml );

	var dialogOptions = {
			autoOpen: true,
			modal: true,
			close: function( event, ui )
			{
				$( this ).remove();
			}
		};

	if( dialog.close )
	{
		closemethod = dialog.close;
		dialogOptions.close = function( event, ui ) {
			closemethod( params );
			$( this ).remove();
		}
	}

	if ( dialog.width != 0 )
	{
		dialogOptions.width = dialog.width;
	}

	if ( dialog.height != 0 )
	{
		dialogOptions.height = dialog.height;
	}

	if ( dialog.dialogClass )
	{
		dialogOptions.dialogClass = dialog.dialogClass;
	}

	if ( dialog.ajaxCall )
	{
		var dialogParams = [ dialogName ];

		if ( params )
		{
			for( var x = 0; x < params.length; x++ )
			{
				dialogParams[ dialogParams.length ] = params[x];
			}
		}

		dialogOptions.open = function(){ ServerCall( dialog.ajaxCall, dialogParams ) };
	}

	if ( dialog.ajaxUrl )
	{
		dialogOptions.open = function()
		{
			$.ajax(
			{
					type: 'POST',
					url: dialog.ajaxUrl,
					data: dialog.ajaxUrlParamString,
					success: function( data )
					{
						$( "#PgJqueryDialog-" + dialogName ).html( data );
					}
			} );
		};
	}

	if ( dialog.resize )
	{
		dialogOptions.resize = dialog.resize;
	}

	if ( dialog.open )
	{
		if ( dialogOptions.open )
		{
			var loadCall = dialogOptions.open;

			dialogOptions.open = function(){ loadCall(); dialog.open() };
		}
		else
		{
			dialogOptions.open = function(){ dialog.open() };
		}
	}

	if ( dialog.position )
	{
		dialogOptions.position = dialog.position;
	}

	$( "#PgJqueryDialog-" + dialogName ).dialog(
		dialogOptions
	);
}
