	// Authenticate form functions

	function createAuthForm(event)
	{
		var mainSiteDir = "http://www.softoogle.com/";

		var mousepos	= getMousePosition(event);

		var div		= createElementEx(document.body,		"DIV",		{id: "loginForm"}, {position: "absolute", zIndex: "10", left: mousepos[0] + "px", top: mousepos[1] + "px"});

		var table	= createElementEx(div,				"TABLE",	{cellSpacing: 0, cellPadding: 0}, {width: "285px", height: "225px"});
		var tbody	= createElementEx(table,			"TBODY");

		var tr		= createElementEx(tbody,			"TR");
		var td		= createElementEx(tr,				"TD",		null, {verticalAlign: "top", background: "url(" + mainSiteDir + "img/shadow.png) no-repeat bottom right"});

		var table	= createElementEx(td,				"TABLE",	{cellSpacing: 0, cellPadding: 2}, {width: "280px", height: "220px", border: "1px solid #A9A9A9", backgroundColor: "white"});
		var tbody	= createElementEx(table,			"TBODY");

		var tr		= createElementEx(tbody,			"TR");
		var td		= createElementEx(tr,				"TD",		null, {verticalAlign: "top"});
		var div		= createElementEx(td,				"DIV",		null, {textAlign: "right"});
		var input	= createElementEx(div,				"INPUT",	{type: "image", src: mainSiteDir + "img/closebtn.png", onclick: closeAuthForm}, null);
		var div		= createElementEx(td,				"DIV",		{className: "subheader"}, {textAlign: "center", margin: "10px"});
		var text	= createTextEx   (div,				"Авторизация");
		var last	= td;

		if (!authHandler)
		{
			var form	= createElementEx(td,			"FORM",		{action: mainSiteDir + "scr/login.php", method: "post"}, {margin: "0px", padding: "0px"});
			var last	= form;
			var input	= createElementEx(form,			"INPUT",	{id: "act", type: "hidden", name: "action", value: "auth"}, null);
		}

		var table	= createElementEx(last,				"TABLE",	{cellSpacing: 0, cellPadding: 3}, {margin: "15px"});
		var tbody	= createElementEx(table,			"TBODY");

		var tr		= createElementEx(tbody,			"TR");
		var td		= createElementEx(tr,				"TD");
		var text	= createTextEx   (td,				"Логин:");
		var td		= createElementEx(tr,				"TD");
		var input	= createElementEx(td,				"INPUT",	{id: "loginQuick", type: "text", name: "login", maxlength: 255}, {width: "185px"});

		var tr		= createElementEx(tbody,			"TR");
		var td		= createElementEx(tr,				"TD");
		var text	= createTextEx   (td,				"Пароль:");
		var td		= createElementEx(tr,				"TD");
		var input	= createElementEx(td,				"INPUT",	{id: "passwordQuick", type: "password", name: "password", maxlength: 255}, {width: "185px"});

		var tr		= createElementEx(tbody,			"TR");
		var td		= createElementEx(tr,				"TD",		{colSpan: 2}, {height: "10px"});

		var tr		= createElementEx(tbody,			"TR");
		var td		= createElementEx(tr,				"TD",		{colSpan: 2}, {textAlign: "center"});

		if (!authHandler)
			var input = createElementEx(td,				"INPUT",	{type: "submit", value: "Войти"}, {marginRight: "2px"});
		else
			var input = createElementEx(td,				"INPUT",	{type: "button", value: "Войти", onclick: doAuth}, {marginRight: "2px"});

		var input	= createElementEx(td,				"INPUT",	{type: "button", value: "Закрыть", onclick: closeAuthForm}, {marginLeft: "2px"});

		var tr		= createElementEx(tbody,			"TR");
		var td		= createElementEx(tr,				"TD",		{colSpan: 2}, {height: "10px"});

		var tr		= createElementEx(tbody,			"TR");
		var td		= createElementEx(tr,				"TD",		{colSpan: 2}, {textAlign: "center"});
		var a		= createElementEx(td,				"A",		{href: mainSiteDir + "scr/register.php"}, {marginRight: "4px"});
		var text	= createTextEx   (a,				"Register");
		var text	= createTextEx   (td,				"|");

		var a		= createElementEx(td,				"A",		{href: mainSiteDir + "scr/lostpasswd.php"}, {marginLeft: "4px"});
		var text	= createTextEx   (a,				"Lost password?");
	}

	function showAuthForm(event)
	{
		var form = document.getElementById("loginForm");
		if (!form)
		{
			createAuthForm(event);
			return;
		}

		var mousepos = getMousePosition(event);

		form.style.visibility = "visible";
		form.style.left = mousepos[0] + "px";
		form.style.top = mousepos[1] + "px";
	}

	function closeAuthForm()
	{
		var form = document.getElementById("loginForm");
		if (form)
			form.style.visibility = "hidden";
	}

	// Authenticate handlers

	function onAuthed(response)
	{
		var commentForm = document.getElementById("commentForm");
		var requireAuth = document.getElementById("requireAuth");

		if (commentForm)
			commentForm.style.display = "inline";
		if (requireAuth)
			requireAuth.style.display = "none";

		var logoutMenu = document.getElementById("logoutMenu");
		var authMenu = document.getElementById("authMenu");

		if (logoutMenu)
			logoutMenu.style.display = "inline";
		if (authMenu)
			authMenu.style.display = "none";

		var login = response.getElementsByTagName("login")[0].firstChild.data;
		var comments = response.getElementsByTagName("comments")[0].firstChild.data;
		var topics = response.getElementsByTagName("topics")[0].firstChild.data;
		var posts = response.getElementsByTagName("posts")[0].firstChild.data;

		updateElement("loginName", login);
		updateElement("commentsCount", comments);
		updateElement("topicsCount", topics);
		updateElement("postsCount", posts);
	}

	function onLogouted()
	{
		var commentForm = document.getElementById("commentForm");
		var requireAuth = document.getElementById("requireAuth");

		if (commentForm)
			commentForm.style.display = "none";
		if (requireAuth)
			requireAuth.style.display = "inline";

		var logoutMenu = document.getElementById("logoutMenu");
		var authMenu = document.getElementById("authMenu");

		if (logoutMenu)
			logoutMenu.style.display = "none";
		if (authMenu)
			authMenu.style.display = "inline";
	}

	// Authenticate functions

	var authHandler = null;
	var authSite = null;

	function setAuthHandler(handler, site)
	{
		if (!isAJAXAvailable())
			return;

		authHandler = handler;
		authSite = site;
	}

	function doAuth()
	{
		var login = "";
		var password = "";

		var loginElement = document.getElementById("login");
		var loginQuickElement = document.getElementById("loginQuick");

		var passwordElement = document.getElementById("password");
		var passwordQuickElement = document.getElementById("passwordQuick");

		if (loginQuickElement)
			login = loginQuickElement.value;

		if (login == "" && loginElement)
			login = loginElement.value;

		if (passwordQuickElement)
			password = passwordQuickElement.value;

		if (password == "" && passwordElement)
			password = passwordElement.value;

		setResponceHandler(authResponce);
		loadXMLDoc(authSite + "scr/simpleauth.php?login=" + login + "&password=" + password);
	}

	function authResponce(response)
	{
		var result = response.getElementsByTagName("result")[0].firstChild.data;

		if (result == "authed")
		{
			closeAuthForm();
			authHandler(response);
		}
		else
		{
			alert(result);

			var redirect = response.getElementsByTagName("redirect")[0];
			if (!redirect)
				return;

			redirect = redirect.firstChild.data;
			if (redirect != "")
				location.href = redirect;
		}
	}

	// Logout functions

	var logoutHandler = null;
	var logoutSite = null;

	function setLogoutHandler(handler, site)
	{
		if (!isAJAXAvailable())
			return;

		logoutHandler = handler;
		logoutSite = site;
	}

	function doLogout()
	{
		setResponceHandler(logoutResponce);
		loadXMLDoc(logoutSite + "scr/simplelogout.php");
	}

	function logoutResponce(response)
	{
		logoutHandler();
	}