	// Authenticate form functions

	var mainSiteDir	= "http://www.softodrom.ru/";
	var hints	= new Array("login", "comments", "topics", "posts", "subscribes");

	function createAuthForm()
	{
		if ($("#loginFormId").length)
			return;

		$("body").append(
"<div id='loginFormId' style='display: none; position: absolute; z-index: 10;'>\
<table cellspacing='0' cellpadding='0' style='width: 285px; height: 225px'>\
	<tr>\
		<td valign='top' style='background: url(" + mainSiteDir + "img/shadow.png) no-repeat bottom right;'>\
			<table cellspacing='0' cellpadding='0' style='width: 280px; height: 220px; border: 1px solid #A9A9A9; background-color: white;'>\
				<tr>\
					<td style='vertical-align: top;'>\
						<div style='text-align: right;'><input type='image' src='" + mainSiteDir + "img/closebtn.png' onclick='closeAuthForm();' /></div>\
						<div class='subheader' style='text-align: center; margin: 10px;'>Авторизация</div>\
						<form action='" + mainSiteDir + "scr/login.php' method='post'>\
							<div>\
								<input type='hidden' name='action' value='auth' />\
							</div>\
							<table cellspacing='0' cellpadding='3' style='margin: 15px;'>\
								<tr>\
									<td><label for='loginQuick'>Логин:</label></TD>\
									<td><input type='text' name='login' id='loginQuick' style='width: 185px;' /></TD>\
								</tr>\
								<tr>\
									<td><label for='passwordQuick'>Пароль:</label></TD>\
									<td><input type='password' name='password' id='passwordQuick' style='width: 185px;' /></TD>\
								</tr>\
							</table>\
							<div style='text-align: center;'>\
								<input type='button' value='Войти' onclick='doAuth();' style='margin-right: 2px;' /> <input type='button' value='Закрыть' onclick='closeAuthForm();' style='margin-left: 2px;' />\
							</div>\
							<div style='text-align: center; margin-top: 15px;'>\
								<a href='" + mainSiteDir + "scr/register.php' style='margin-right: 4px;'>Зарегистрироваться</a>|<a href='" + mainSiteDir + "scr/lost_password.php' style='margin-left: 4px;'>Забыли пароль?</a>\
							</div>\
						</form>\
					</td>\
				</tr>\
			</table>\
		</td>\
	</tr>\
</table>\
</div>");
	}

	function showAuthForm(event)
	{
		createAuthForm();

		var loginForm = $("#loginFormId");

		loginForm.show();
		loginForm.css("top", event.clientY + document.documentElement.scrollTop - loginForm[0].offsetHeight / 2);
		loginForm.css("left", event.clientX + document.documentElement.scrollLeft - loginForm[0].offsetWidth / 2);

		return false;
	}

	function closeAuthForm()
	{
		$("#loginFormId").hide();
	}

	function updateHints()
	{
		for (var i = 1; i < hints.length; i++)
		{
			var hint = $("#" + hints[i] + "Hint");
			var row = $("#" + hints[i] + "Row");

			if (hint.text() == "0")
				row.hide();
			else
				row.show();
		}
	}


	// Authenticate functions

	var authHandlers	= new Array();
	var logoutHandlers	= new Array();

	function addAuthHandler(handler)
	{
		authHandlers.push(handler);
	}

	function addLogoutHandler(handler)
	{
		logoutHandlers.push(handler);
	}

	function doAuth()
	{
		var login = "", password = "";

		if ($("#login").length)
			login = $("#login").val();
		if (login == "" && $("#loginQuick").length)
			login = $("#loginQuick").val();

		if ($("#password").length)
			password = $("#password").val();
		if (password == "" && $("#passwordQuick").length)
			password = $("#passwordQuick").val();

		$.get("/scr/login_simple.php", {login: login, password: password}, checkAuth);
	}

	function checkAuth(data, textStatus)
	{
		var result = $("result", data).text();
		if (result != "authed")
		{
			alert(result);

			var redirect = $("redirect", data);
			if (!redirect.length)
				return;

			redirect = redirect.text();
			if (redirect != "")
				location.href = redirect;
			return;
		}

		closeAuthForm();

		if ($("#commentForm").length)
			$("#commentForm").show();
		if ($("#requireAuth").length)
			$("#requireAuth").hide();

		if ($("#logoutMenu").length)
			$("#logoutMenu").show();
		if ($("#authMenu").length)
			$("#authMenu").hide();

		for (var i = 0; i < hints.length; i++)
			$("#" + hints[i] + "Hint").text($(hints[i], data).text());

		updateHints();

		for (var i = 0; i < authHandlers.length; i++)
			authHandlers[i](data, textStatus);
	}

	function doLogout()
	{
		$.get("/scr/logout_simple.php", checkLogout);
	}

	function checkLogout(data, textStatus)
	{
		if ($("#commentForm").length)
			$("#commentForm").hide();
		if ($("#requireAuth").length)
			$("#requireAuth").show();

		if ($("#logoutMenu").length)
			$("#logoutMenu").hide();
		if ($("#authMenu").length)
			$("#authMenu").show();

		loadAutoHide(0);

		for (var i = 0; i < logoutHandlers.length; i++)
			logoutHandlers[i](data, textStatus);
	}


	// Authed users functions

	var menu 	= null;
	var contentZone	= null;
	var autoHide	= 0;

	function setAutoHide(isAuthed)
	{
		autoHide = getCookie("autoHide");
		if (!isAuthed || autoHide != 1)
			autoHide = 0;
	}

	function loadAutoHide()
	{
		if (autoHide == 1)
			document.onmousemove = showMenu;
		else
		{
			setCookie("autoHide", autoHide);
			document.onmousemove = null;
		}
		refreshMenuState();
	}

	function refreshMenuState(type)
	{
		if (type)
		{
			$("#menu").hide();
			$("#contentZone").css("paddingLeft", 20);
		}
		else
		{
			$("#menu").show();
			$("#contentZone").css("paddingLeft", 7);
		}
	}

	function toggleMenuView()
	{
		autoHide = 1 - autoHide;
		setCookie("autoHide", autoHide);

		if (autoHide == 1)
		{
			alert("Вы включили авто-скрытие левой панели навигации.\nДля показа её на экране переместите курсор мыши к левому краю окна вашего браузера.");
			document.onmousemove = showMenu;
		}
		else
			document.onmousemove = null;

		refreshMenuState(autoHide);
	}

	function showMenu(event)
	{
		var menu = $("#menu");

		if (!event)
			event = window.event;

		var baseAlign = 5;
		if (!menu.is(':hidden'))
			baseAlign = menu[0].clientWidth;

		refreshMenuState(event.clientX > baseAlign);
	}
