﻿/* Открывает всплывающее окно по центу экрана
	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 = "";
	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: windowGeometry.getVerticalScroll() + ( windowGeometry.getViewportHeight() - height )/2,
				left: windowGeometry.getHorizontalScroll() + ( windowGeometry.getViewportWidth() - width )/2,
				zIndex: 15
			},
			// параметры фона
			bgCss: {
				position: 'absolute', 
				top: 0, 
				left: 0, 
				width: windowGeometry.getDocumentWidth(),
				height: ( windowGeometry.getDocumentHeight() > windowGeometry.getViewportHeight() ) ? windowGeometry.getDocumentHeight() : windowGeometry.getViewportHeight(),
				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 )
		}
	}
	return showPopup( popupProperties, popupEffects );
}