Regio.Dialog = function(userConf, div){
	var _defConf = {
		onSubmit: null,
		listenOpenClose: true,
		title: 'Send email',
		width: "auto",
		height: "auto"
	};
	
	var cfg = jQuery.extend(_defConf, userConf);
	if(!div) div = $('<div/>');
	
	var dialog = $(div).dialog({
		autoOpen: false,
		closeOnSubmit: true,
		width: cfg.width || "auto",
		height: cfg.height || "auto",
		title: cfg.title || ""
	});
	$(div).show(); //remove display none, just flicker fix
	
	function open(){
		dialog.dialog("open");
	}
	
	function close(){
		dialog.dialog("close");
	}
	
	function getData(form){
		if(!form) form = $('form', dialog); //try to find form element
		if(!form) form = $(dialog); //just use dialog
		var data = {};
		$('select,input,textarea',form).each(function(){
			var name = $(this).attr('name');
			if(name){
				data[name] = $(this).val();
			}
		});
		return data;
	}
	
	function submit(arguments){
		if(typeof callback == 'function') {
			cfg.onSubmit = callback;
			return;
		}else if(typeof cfg.onSubmit == 'function'){
			cfg.onSubmit(getData(arguments), arguments);
			if(cfg.closeOnSubmit){
				close();
			}
		}
	}
	
	function initialise() {
		$('form',dialog).submit(function(){
			submit(this);
			return false;
		});
	}
	
	initialise();
	
	dialog.open = open;
	dialog.close = close;
	dialog.getData = getData;
	dialog.submit = submit;
	dialog.initialise = initialise;
	
	return dialog;
}