
$(function() {

	var popupWindowCloseHandler = function(event) {
		event.preventDefault();
		$('body').children('.popup-window-box').fadeOut('fast').remove();
		$('body').children('.popup-window-shadow').fadeOut('fast').remove();
		$(document).unbind('keyup', popupWindowESCHandler);
	};

	var popupWindowESCHandler = function(event) {
		if (event.keyCode == 27) {
			popupWindowCloseHandler(event);
		}
	};

	var popupWindow = function(url) {

		var box = $(document.createElement('div'));


		box.addClass('popup-window-box');

		var shadow = $(document.createElement('div')).appendTo('body');
		shadow.addClass('popup-window-shadow')
			.append('<span></span>')
			.fadeIn('fast')
			.click(popupWindowCloseHandler);

		var center = function() {
			box.fadeIn('fast')
				.css('left', ($(document).scrollLeft() + (($(window).width() - box.width()) / 2)) +'px')
				.css('top', ($(document).scrollTop() + (($(window).height() - box.height()) / 2)) +'px')
				.find('.popup-window-close')
					.click(popupWindowCloseHandler);
		}

		var onLoad = function() {
			box.appendTo('body');

			initFormValidators(box);
			initAjaxForm(box);

			center();

			$(document).bind('keyup', popupWindowESCHandler);

			this.onload = null;
		};

		if (/\.jpg$/.test(url)) {
			box.append('<img src=""/>').addClass('popup-window-image');
			var image = box.find('img');
			image.bind('click', popupWindowCloseHandler);
			image.get(0).onload = function() {
				box.appendTo('body');
				center();
				this.onload = null;
			};
			image.get(0).src = url;
		} else {
			box.load(url, null, onLoad);
		}


	};

	$('.popup-window').click(function(event) {
		event.preventDefault();
		popupWindow(this.href);
	});
});

var initAjaxForm = function(container) {

	(container || $(document)).find('form.f-form').bind('submit', function(event) {
		var form = $(this);
		if (!form.hasClass('f-with-error')) {
			$.post(this.action, form.serialize(), function(data) {
				form.parent().append(data);
				form.remove();

				if (
					(typeof pageTracker != 'undefined')
						&& (typeof pageTracker._trackPageview == 'function')
				) {
					var trackAlias = form.find('input[type=hidden]').filter(function()  {
						return /trackPageviewAlias/.test(this.name);
					});
					if (trackAlias.size() > 0) {
						pageTracker._trackPageview(trackAlias.val());
					}
				}

			}, 'html');
			event.preventDefault();
		}
	});

};

$(function() {
	initAjaxForm();
});

