if (typeof Dialogs == 'undefined') {
	Dialogs = {}
	
	
	
	Dialogs.__dialogParams = function (params) {
		if (! isset(params)) {
			params = {};
		}
		var width     = 'width'  in params ? params['width']  : DIALOG_WIDTH
			, height  = 'height' in params ? params['height'] : DIALOG_HEIGHT
			, left    = 'left'   in params ? params['left']   : 0
			, top     = 'top'    in params ? params['top']    : 0
			, offsetX = 13
			, offsetY = -6;
		if (! window.dialogArguments) {
			if (! left) {
				left = (window.top.document.body.clientWidth - width) / 2 + window.top.screenLeft;
			}
			if (! top) {
				top = (window.top.document.body.clientHeight - height) / 2 + window.top.screenTop;
			}
		} else {
			if (! left) {
				left = window.screenLeft + offsetX;
			}
			if (! top) {
				top = window.screenTop + offsetY;
			}
		}
	
		params['left']   = left   + 'px';
		params['top']    = top    + 'px';
		params['width']  = width  + 'px';
		params['height'] = height + 'px';
		
		if (! ('center'      in params)) params['center']      = false;
		if (! ('edge'        in params)) params['edge']        = 'raised';
		if (! ('help'        in params)) params['help']        = false;
		if (! ('minimizable' in params)) params['minimizable'] = false;
		if (! ('maximizable' in params)) params['maximizable'] = false;
		if (! ('resizible'   in params)) params['resizible']   = false;
		if (! ('statusbar'   in params)) params['statusbar']   = false;
		if (! ('scrollbars'  in params)) params['scrollbars']  = false;
		
		return Engine.prepareDialogParams(params);
	}
	
	
	
	Dialogs.__msgBoxParams = function (modal) {
		var width = 300, height = 150
			/*, left = (window.top.screen.availWidth - width) / 2
			, top = (window.top.screen.availHeight - height) / 2*/
			, left = (window.innerWidth - width) / 2
			, top = (window.innerHeight - height) / 2;
		return Engine.prepareDialogParams(
			{ 'width'      : width  + 'px'
			, 'height'     : height + 'px'
			, 'left'       : left  + 'px'
			, 'top'        : top + 'px'
			, 'center'     : true
			, 'edge'       : 'sunken'
			, 'help'       : false
			, 'resizable'  : false
			, 'statusbar'  : false
			, 'scrollbars' : true
			, 'dialog'     : true
			, 'modal'      : isset(modal) ? Boolean(modal) : true
			});
	}
	
	
	
	Dialogs.__pickerParams = function (width, height) {
		var left = event.screenX, top = event.screenY
			, offsetX = 13, offsetY = -6;
		return Engine.prepareDialogParams(
			{ 'left'        : left   + 'px'
			, 'top'         : top    + 'px'
			, 'width'       : width  + 'px'
			, 'height'      : height + 'px'
			, 'center'      : false
			, 'edge'        : 'raised'
			, 'help'        : false
			, 'minimizable' : false
			, 'maximizable' : true
			, 'resizable'   : true
			, 'statusbar'   : false
			, 'scrollbars'  : true
			, 'modal'       : true
			});
	}
	
	
	
	Dialogs.__stdMessageDialog = function (type, message, onClose, modal) {
		var args =
			{ 'caller'  : window
			, 'message' : message
			};
		Engine.showDialog(SERVER_BASE + INDEX_NAME + '_dialogs/dialog.php?type=' + type
			, args
			, Dialogs.__msgBoxParams(isset(modal) ? Boolean(modal) : true)
			, onClose
			);
	}
	
	
	
	Dialogs.alert = function (message, onClose, modal) {
		Dialogs.__stdMessageDialog('alert', message, onClose, modal);
	}
	
	
	
	Dialogs.error = function (message, onClose, modal) {
		Dialogs.__stdMessageDialog('error', message, onClose, modal);
	}
	
	
	
	Dialogs.info = function (message, onClose, modal) {
		Dialogs.__stdMessageDialog('info', message, onClose, modal);
	}
	
	
	
	Dialogs.confirm = function (message, onClose) {
		Dialogs.__stdMessageDialog('confirm', message, onClose);
	}
	
	
	
	Dialogs.modeless = function (url, params, args, onClose) {
		if (! args) args = {};
		args['caller'] = window;
		
		if (! params) params = {};
		if (! ('minimize' in params)) params['minimize'] = 'yes';
		
		Engine.showDialog(SERVER_BASE + INDEX_NAME + '_dialogs/modal.php?url=' + encodeURIComponent(url)
			, args
			, Dialogs.__dialogParams(params)
			, onClose
			);
	}
	
	
	
	Dialogs.modal = function (url, params, args, onClose) {
		if (! params) params = {};
		params['modal'] = true;
		
		Dialogs.modeless(url, params, args, onClose);
	}
	
	
	
	Dialogs.picker = function (url, param, width, height, onClose) {
		var args =
			{ 'caller' : window
			, 'value'  : param
			};
		Engine.showDialog(SERVER_BASE + INDEX_NAME + '_dialogs/modal.php?url=' + encodeURIComponent(url)
			, args
			, Dialogs.__pickerParams(width, height)
			, onClose
			);
	}
}
