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;
	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
		);
}
