//init page
$(function(){
	initPopups();
});
// popups function
function initPopups() {
	var _zIndex = 100;
	var _fadeSpeed = 350;
	var _faderOpacity = 0.7;
	var _faderBackground = '#000';
	var _faderId = 'lightbox-overlay';
	var _closeLink = 'a.btn-close, a.close, a.cancel';
	var _fader;
	var _lightbox = null;
	var _ajaxClass = 'ajax-load';
	var _openers = $('a.open-popup');
	var _page = $(document);
	var _minWidth = $('body > div:eq(0)').outerWidth();
	var _scroll = true;

	// init popup fader
	_fader = $('#'+_faderId);
	if(!_fader.length) {
		_fader = $('<div>');
		_fader.attr('id',_faderId);
        // append to #main to avoid IE 7 z-index bug
		$('#main').append(_fader);
	}
	_fader.css({
		opacity:_faderOpacity,
		backgroundColor:_faderBackground,
		position:'absolute',
		overflow:'hidden',
		display:'none',
		top:0,
		left:0,
		zIndex:_zIndex
	});

	// IE6 iframe fix
	if($.browser.msie && $.browser.version < 7) {
		if(!_fader.children().length) {
			var _frame = $('<iframe src="javascript:false" frameborder="0" scrolling="no" />');
			_frame.css({
				opacity:0,
				width:'100%',
				height:'100%'
			});
			var _frameOverlay = $('<div>');
			_frameOverlay.css({
				top:0,
				left:0,
				zIndex:1,
				opacity:0,
				background:'#000',
				position:'absolute',
				width:'100%',
				height:'100%'
			});
			_fader.empty().append(_frame).append(_frameOverlay);
		}
	}

	// lightbox positioning function
	function positionLightbox() {
		if(_lightbox) {
            var _windowHeight   = screen.availHeight;;
            var _windowWidth    = screen.availWidth;
            var _pageHeight     = _page.height();
            var _lightboxWidth  = _lightbox.outerWidth();
			var _lightboxHeight = _lightbox.outerHeight();

			if (_windowWidth < _minWidth)
                _fader.css('width',_minWidth + 'px');
			else
                _fader.css('width','100%');

			if (_windowHeight < _pageHeight)
                _fader.css('height',_pageHeight + 'px');
			else
                _fader.css('height',_windowHeight + 'px');

			_lightbox.css({
				position:'absolute',
				zIndex:(_zIndex+1)
			});

            // vertical position
			if (_windowHeight > _lightboxHeight) {
				if ($.browser.msie && $.browser.version < 7) {
					_lightbox.css({
						position:'absolute',
						top: parseInt((_windowHeight - _lightboxHeight) / 2 + $(window).scrollTop()) + 'px'
					});
				} else {
					_lightbox.css({
						position: 'absolute',
						top: parseInt((_windowHeight - _lightboxHeight) / 2 + $(window).scrollTop()) + 'px'
					});
					if (_lightboxWidth > _windowWidth) {
						_lightbox.css({
							position: 'absolute',
							left: 0
						});
					}
				}
			} else {
				var _faderHeight = _fader.height();
				if(_faderHeight < _lightboxHeight)
                    _fader.css('height',_lightboxHeight);


				_lightbox.css({
				    position: 'absolute',
					top: parseInt(_windowHeight / 12 + $(window).scrollTop()) + 'px'
				});
			}

			// horizontal position
            _lightbox.css({
                left: $('#wrapper').width() / 2 - _lightbox.outerWidth() / 2 +'px'
            });
			/*if (_fader.width() > _lightbox.outerWidth())
                _lightbox.css({left:(_fader.width() - _lightbox.outerWidth()) / 2});*/
            /*if (_windowWidth > _lightbox.outerWidth())
                _lightbox.css({left: 120});
			else
                _lightbox.css({left: 0});*/
		}
	}

	// show/hide lightbox
	function toggleState(_state) {
		if(!_lightbox) return;
		if(_state) {
			_fader.fadeIn(_fadeSpeed,function(){
				_lightbox.fadeIn(_fadeSpeed);
			});
			_scroll = false;
			positionLightbox();
		} else {
			_lightbox.fadeOut(_fadeSpeed,function(){
				_fader.fadeOut(_fadeSpeed);
				_scroll = false;
			});
		}
	}

	// popup actions
	function initPopupActions(_obj) {
		if(!_obj.get(0).jsInit) {
			_obj.get(0).jsInit = true;
			// close link
			_obj.find(_closeLink).click(function(){
				_lightbox = _obj;
				toggleState(false);
				return false;
			});
		}
	}

	// lightbox openers
	_openers.each(function(){
		var _opener = $(this);
		var _target = _opener.attr('href');

		// popup load type - ajax or static
		if(_opener.hasClass(_ajaxClass)) {
			_opener.click(function(){
				// ajax load
				if($('div[rel*="'+_target+'"]').length == 0) {
					$.ajax({
						url: _target,
						type: "POST",
						dataType: "html",
						success: function(msg){
							// append loaded popup
							_lightbox = $(msg);
							_lightbox.find('img').load(positionLightbox)
							_lightbox.attr('rel',_target).hide().css({
								position:'absolute',
								zIndex:(_zIndex+1),
								top: -9999,
								left: -9999
							});
							$('body').append(_lightbox);

							// init js for lightbox
							initPopupActions(_lightbox);

							// show lightbox
							toggleState(true);
						},
						error: function(msg){
							alert('AJAX error!');
							return false;
						}
					});
				} else {
					_lightbox = $('div[rel*="'+_target+'"]');
					toggleState(true);
				}
				return false;
			});
		} else {
			if($(_target).length) {
				// init actions for popup
				var _popup = $(_target);
				initPopupActions(_popup);
					// open popup
					_opener.click(function(){
					if(_lightbox) {
						_lightbox.fadeOut(_fadeSpeed,function(){
							_lightbox = _popup.hide();
							toggleState(true);
						})
					} else {
						_lightbox = _popup.hide();
						toggleState(true);
					}
					return false;
				});
			}
		}
	});

	// event handlers
	$(window).resize(positionLightbox);
	//$(window).scroll(positionLightbox);
	$(document).keydown(function (e) {
		if (!e) evt = window.event;
		if (e.keyCode == 27) {
			toggleState(false);
		}
	})
	_fader.click(function(){
		if(!_fader.is(':animated')) toggleState(false);
		return false;
	})
}
