var loggedIn;
var memberID = 0;
var onRefresh = windowReload;

function setLoggedIn(value)
{
	loggedIn = value;
}	

function login()
{
	displayInHintBar("Logging in.....");
	disableButton("login_button", true);
	var xmlHttp = getXmlHttp();
	xmlHttp.onreadystatechange = function()
	{
		if (xmlHttp.readyState == 4)
		{
			enableButton("login_button");
			xml = getResponseXMLDocumentElement(xmlHttp);
			if (memberName = xml.getAttribute("member_name"))
			{
				displayMemberName(memberName);
				displayMemberHints();
				loggedIn = true;
				memberID = xml.getAttribute("member_id");
				try
				{
					onRefresh();
				}
				catch (e)
				{
				}
			}
			else
			{
				var failureReason = xml.getAttribute("failed");
				displayInHintBar(htmlEntities(failureReason));
				loggedIn = false;
				memberID = 0;
			}
			updatePageElements();
		}
	}
	var submittedEmail = encodeURIComponent(document.getElementById("email").value);
	var submittedPassword = encodeURIComponent(document.getElementById("password").value);
	xmlHttp.open("POST", "/ops/login_xml.php", true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	var message = "email=" + submittedEmail + "&password=" + submittedPassword;
	xmlHttp.send(message);
	return false;
}

function logout()
{
	displayInHintBar("Logging out.....");
	disableButton("login_button", true);
	var xmlHttp = getXmlHttp();
	xmlHttp.onreadystatechange = function()
	{
		if (xmlHttp.readyState == 4)
		{
			enableButton("login_button");
			clearHintBar();
			loggedIn = false;
			updatePageElements();
			document.getElementById("password").value = "";
			try
			{
				onRefresh();
			}
			catch (e)
			{
			}
		}
	}
	xmlHttp.open("GET", "/ops/login_xml.php", true);
	xmlHttp.send(null);
	return false;
}

function displayMemberHints()
{
	displayInHintBar('<a href="/myreviews/">My reviews</a> | <a href="/settings/">Member settings</a>');
}


function emailKeyUp(event)
{
	clearHintBar();
	var key = event.keyCode;
	if (key == 13)
	{
		document.getElementById("password").focus();
	}
}

function passwordKeyUp(event)
{
	clearHintBar();
	var key = event.keyCode;
	if (key == 13)
	{
		login();
	}
}

function displayInHintBar(text)
{
	document.getElementById("login_hint").innerHTML = text;
}

function clearHintBar()
{
	displayInHintBar('<a href="/register/">Register</a> | <a href="/forgot/">Forgotten details?</a>');
}

function displayMemberName(memberName)
{
	document.getElementById("member_name_display").innerHTML = "<b>" + htmlEntities(memberName) + "</b>";
}

function updatePageElements()
{
	var loginButton = document.getElementById("login_button");
	loginButton.src = loggedIn ? "/images/buttons/logout.png" : "/images/buttons/login.png";
	loginButton.onclick = loggedIn ? logout : login;
	loginButton.title = loggedIn ? "Log out" : "Log in";
	loginButton.alt = loginButton.title;
	var elements = document.getElementsByTagName("*");
	for (var i = 0; i < elements.length; i++)
	{
		var element = elements[i];
		var elementClasses = element.className.split(" ");
		for (var j = 0; j < elementClasses.length; j++)
		{
			if (elementClasses[j] == "loggedin")
			{
				element.style.display = loggedIn ? "" : "none";
			}
			if (elementClasses[j] == "loggedout")
			{
				element.style.display = loggedIn ? "none" : "";
			}
		}
	}
}