﻿/* Открывает всплывающее окно по центу экрана
	url - адрес открываемой страницы
	width - ширина дива
	height - высота дива
	submitIds - строка с идентификаторами кнопок, выполняющих submit внутри дива, через ","
	onBeforeSubmit - обработчик успешного submit'а формы, вызывается до уничтожения frame'а
	onSubmit - обработчик успешного submit'а формы, вызывается после уничтожения frame'а
*/
function showPopupCentered( url, width, height, submitIds, onSubmit, onBeforeSubmit ){
	/* вычисление 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.getViewportWidth(),
				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: onBeforeSubmit ? onBeforeSubmit : '',
			// обработчик успешного submit'а формы, вызывается после уничтожения frame'а
			onSubmit: onSubmit ? onSubmit : ''
		}
	},
	// эффекты при открытии, закрытии и перезагрузке
	popupEffects = {
		loadingImage: '',
		// обработчик готовности содержимого всплывающего окна
		onLoad: function( $popup, callback ){
			$popup.css( { display: 'none', visibility: 'visible' } );
			$popup.fadeIn( 'fast', callback )
		}//,
		// обработчик закрытия всплывающего окна
		//onClose: function( $popup, callback ){ 
		//	$popup.fadeOut( 'slow', callback )
		//}
	}
	return showPopup( popupProperties, popupEffects );
}


// Открыть всплывающее окно левым верхним углом под курсором
function showPopupAtCursor( e, url, width, height ){
	e = $.event.fix( e );
	// свойства фрейма
	var popupProperties = {
		// атрибуты фрейма
		attributes: {
			id: 'popupIframe',
			src: url,
			width: width,
			height: height,
			scrolling: 'auto',
			frameborder: 0,
			marginwidth: 0,
			marginheight: 0
		},
		// параметры отображения фрейма
		presentation: {
			// css стили с позиционированием
			css: {
				position: 'absolute',
				top: e.pageY - height/2 + 'px',
				left: e.pageX - width/2 + 'px',
				zIndex: 15
			},
			// параметры фона
			bgCss: {
				position: 'absolute', 
				top: 0,
				left: 0,
				width: $().width(),
				height: $().height(),
				zIndex: 14,
				backgroundColor: '',
				backGroundImage: '',
				opacity: 1
			}
		}
	},
	// эффекты при открытии, закрытии и перезагрузки
	popupEffects = {}
	return showPopup( popupAttributes, openEffect, reloadEffect, closeEffect );
}
