/* Открывает всплывающее окно по центу экрана
	url - адрес открываемой страницы
	width - ширина дива
	height - высота дива
	submitIds - строка с идентификаторами кнопок, выполняющих submit внутри дива, через ","
	handlers
		onBeforeSubmit - обработчик успешного submit'а формы, вызывается до уничтожения frame'а
		onSubmit - обработчик успешного submit'а формы, вызывается после уничтожения frame'а
		onLoad
*/
function showPopupCentered( url, width, height, submitIds, handlers ){
	
	if ( !handlers )
		handlers = {};
	/* вычисление JQuery селекторов для кнопок с переданными идентификаторами (каждая кнопка из 3-х частей состоит) */
	var submitSelector = "";
	
	if ( submitIds )
	{
		var arIds = submitIds.split(",");
		for ( var id in arIds )
		{
			if( submitSelector != "" ) submitSelector += ",";
			submitSelector += "#" + arIds[ id ] + ",#" + arIds[ id ] + "l" + ",#" + arIds[ id ] + "r";
		}
	}
	// свойства фрейма
	var top = windowGeometry.getVerticalScroll() + ( windowGeometry.getViewportHeight() - height ) / 2;
	if ( top < 0 ) top = 0;
	var left = windowGeometry.getHorizontalScroll() + ( windowGeometry.getViewportWidth() - width ) / 2;
	if ( left < 0 ) left = 0;
	var bgWidth = windowGeometry.getDocumentWidth() > windowGeometry.getViewportWidth() ? windowGeometry.getDocumentWidth() : windowGeometry.getViewportWidth();
	var bgHeight = windowGeometry.getDocumentHeight() > windowGeometry.getViewportHeight() ? windowGeometry.getDocumentHeight() : windowGeometry.getViewportHeight();
	
	var popupProperties = {
		// атрибуты фрейма
		attributes: {
			id: 'popupIframe',
			name: 'popupIframe',
			src: url,
			width: width,
			height: height,
			scrolling: 'auto',
			frameborder: 0,
			marginwidth: 0,
			marginheight: 0
		},
		// параметры отображения фрейма
		presentation: {
			// css стили с позиционированием
			css: {
				position: 'absolute',
				visibility: 'hidden',
				top: top,
				left: left,
				zIndex: 100
			},
			// параметры фона
			bgCss: {
				position: 'absolute', 
				top: 0, 
				left: 0, 
				width: bgWidth,
				height: bgHeight,
				zIndex: 14,
				backgroundColor: '#000',
				backgroundImage: '',
				opacity: 0.3
			}
		},
		behaviour: {
			// селекторы кнопок закрытия
			closeButton: '#close,#closer,#closel',
			// селекторы кнопок отправки формы
			submitButton: submitSelector,
			// обработчик успешного submit'а формы, вызывается до уничтожения frame'а
			onBeforeSubmit: handlers.onBeforeSubmit ? handlers.onBeforeSubmit : '',
			// обработчик успешного submit'а формы, вызывается после уничтожения frame'а
			onSubmit: handlers.onSubmit ? handlers.onSubmit : '',
			//
			onLoad : handlers.onLoad ? handlers.onLoad : ''
		}
	},
	// эффекты при открытии, закрытии и перезагрузке
	popupEffects = {
		loadingImage: '',
		// обработчик готовности содержимого всплывающего окна
		onLoad: function( $popup, callback ){
			$popup.css( { display: 'none', visibility: 'visible' } );
			$popup.fadeIn( 'fast', callback )
		},
		onClose: handlers.onClose ? handlers.onClose : ''
	}
	return showPopup( popupProperties, popupEffects );
}


// Открыть всплывающее окно левым верхним углом под курсором
function showPopupAtCursor( e, url, width, height ){
	e = $.event.fix( e );
	
	if ( typeof handlers == 'undefined' || !handlers )
		handlers = {};
		
	/* вычисление JQuery селекторов для кнопок с переданными идентификаторами (каждая кнопка из 3-х частей состоит) */
	var submitSelector = '';
	if ( typeof submitIds != 'undefined' )
	{
		var arIds = submitIds.split(",");
		for ( var id in arIds )
		{
			if( submitSelector != "" ) submitSelector += ",";
			submitSelector += "#" + arIds[ id ] + ",#" + arIds[ id ] + "l" + ",#" + arIds[ id ] + "r";
		}
	}

	// свойства фрейма
	var popupProperties = {
		// атрибуты фрейма
		attributes: {
			id: 'popupIframe',
			name: 'popupIframe',
			src: url,
			width: width,
			height: height,
			scrolling: 'auto',
			frameborder: 0,
			marginwidth: 0,
			marginheight: 0
		},
		// параметры отображения фрейма
		presentation: {
			// css стили с позиционированием
			css: {
				position: 'absolute',
				visibility: 'hidden',
				top: e.pageY + 'px',
				left: e.pageX + 'px',
				zIndex: 100
			},
			// параметры фона
			bgCss: {
			}
		},
		behaviour: {
			// селекторы кнопок закрытия
			closeButton: 'a[onclick]',
			// селекторы кнопок отправки формы
			submitButton: submitSelector,
			// обработчик успешного submit'а формы, вызывается до уничтожения frame'а
			onBeforeSubmit: handlers.onBeforeSubmit ? handlers.onBeforeSubmit : '',
			// обработчик успешного submit'а формы, вызывается после уничтожения frame'а
			onSubmit: handlers.onSubmit ? handlers.onSubmit : '',
			//
			onLoad : handlers.onLoad ? handlers.onLoad : ''
		}
	},
	// эффекты при открытии, закрытии и перезагрузке
	popupEffects = {
		loadingImage: '',
		// обработчик готовности содержимого всплывающего окна
		onLoad: function( $popup, callback ){
			$popup.css( { display: 'none', visibility: 'visible' } );
			$popup.fadeIn( 'fast', callback )
		}
	}
	return showPopup( popupProperties, popupEffects );
}

function showCalendarPopup( e, url, width, height ) {
	showPopupAtCursor( e, url, width, height )
}
