$.extend($, { 
		formDialog : function (settings) { 
			if (settings.mainFormId && settings.dialogHolderId && settings.submitFormId)
			{	
				settings.existingHolderIdSuffix = '__dialogReplaced';
				var existingHolder = $("#" + settings.dialogHolderId);
				
				// if passed holder exists -> use it
				if (existingHolder.length > 0)
				{
					var holderHtml = existingHolder.html();
					existingHolder.remove();
					$('form#' + settings.mainFormId).after('<div id="' + settings.dialogHolderId + '">' + '' + '</div>');
					$('#' + settings.dialogHolderId).html(holderHtml);
				}
				// if not -> create
				else
				{
					$('form#' + settings.mainFormId).after('<div id="' + settings.dialogHolderId + '"></div>');
				}
				
				// special code for 'beforeclose' handler
				var passedBeforeClose = settings.beforeclose;
				settings.beforeclose = function (event, ui) {
					if (passedBeforeClose) 
					{
						passedBeforeClose(event, ui);
					}
					// cleanup (use if dialog holder div obtains content asynchronously etc)
					if (settings.cleanup)
					{
						$("#" + settings.dialogHolderId).html('');
					}
				};
				
				// call original dialog
				$('#' + settings.dialogHolderId).dialog(settings);
				// wrap holder div with other form
				$("#" + settings.dialogHolderId).wrap('<form id="' + settings.submitFormId + '" name="' + settings.submitFormId + '"></form>');
			}
		}
	}
);
