/**
 *	--- popup ---
 *
 *	@author		Alexander Velander <alexandervelander@gmail.com>
 *	@version	1.0
 *	@desc		För att visa popupfönster.
 */
	/*
	 *	När dokumentet laddats
	 */
	$(document).ready(function() {
		// Kör popup-initierare
		initPopup();
	});
	/*
	 *	Variabler
	 */
	var popupActive		= false;
	var popupBg			= '#popupBg';
	var popup			= '#popup';
	/*
	 *	Förberedande kod
	 */
	function initPopup() {
		// Sätt popupBg och popup som opacitet 0
		$(popupBg).fadeTo(0, 0);
		$(popup).fadeTo(0, 0);
		// Element som är kopplade till funktionen
		$('#regButton').click(function() {
			ajaxPopup('type=RegForm', initReg);
		});
		$('#loginButton').click(function() {
			ajaxPopup('type=LoginForm', initLogin);
		});
		$('#logoutButton').click(function() {
			logout();
		});
		$('#popupBg').click(function() {
			hidePopup();
		});
	}
	/*
	 *	Textpopup
	 */
	function textPopup(title, content, callback) {
		// Fixar html + data
        data = '<a id="closePopup">x</a>' +
               '<h2>' + title + '</h2>' +
               '<p>' + content + '</p>';
        // Kör showPopup
		showPopup(data, callback);
	}
	/*
	 *	"Vanlig" popup
	 */
	function plainPopup(data, callback) {
        // Kör showPopup
		showPopup(data, callback);
	}
	/*
	 *	Ajax-popup
	 */
	function ajaxPopup(args, callback) {
		// Hämta innehåll och kör sedan showPopup
		$.post('/ajax/', args, function(data) {
			showPopup(data, callback);
		});
	}
	/*
	 *	Visar popupen
	 */
	function showPopup(data, callback) {
		// Om popup redan visas, säg till
		if ( popupActive === true )
			throw new Error('Popup visas redan');
		// Annars sätt som active
		else
			popupActive = true;
		// Kolla så callback är funktion
		if ( callback && typeof callback != 'function' )
			throw new Error('Angedd callback(' + callback + ') är inte definierad.');
		// Visa element
		$(popupBg).show();
		$(popup).show();
		// Fixa storlekar
		$(popupBg).width($(document).width());
		$(popupBg).height($(document).height());
		// Tona in popupBg
		$(popupBg).fadeTo(500, 0.7);
		// Sätt innehåll
		$(popup).html(data);
		// Justera position efter innehåll
		var top				= $(document).scrollTop() + ($(window).height() / 2) + 'px';
		var marginTop		= '-' + (Math.ceil($(popup).height() / 2) + 8) + 'px';
		var marginLeft		= '-' + (Math.ceil($(popup).width() / 2) + 15) + 'px';
		$(popup).css('top', top);
		$(popup).css('margin-top', marginTop);
		$(popup).css('margin-left', marginLeft);
		// Sätt hanterare för stängknapp
		$('#closePopup').click(function() {
			hidePopup();
		});
		// Visa popup
		$(popup).fadeTo(500, 1);
		// Om satt, kör callback
		if ( callback )
			callback();
	}
	/*
	 *	Döljer popupen
	 */
	function hidePopup(callback) {
		// Kolla så callback är funktion
		if ( callback && typeof callback != 'function' )
			throw new Error('Angedd callback(' + callback + ') är inte definierad.');
		// Tona ut popupBg och dölj
		$(popupBg).fadeTo(500, 0, function() {
			$(popupBg).hide();
		});
		// Tona ut popup
		$(popup).fadeTo(500, 0, function() {
			// Dölj
			$(popup).hide();
			// Sätt popupActive till false
			popupActive = false;
			// Kör callback för hidePopup om satt
			if ( callback )
				callback();
		});
	}