var DEFAULT_LOGIN_HTML = 
	'<a href="#" onclick="return popup(500, \'login\')">login</a>'
	+ ' or '
	+ '<a href="#" onclick="return popup(500, \'signup\')">sign up</a>'
;

var LOGOUT_MESSAGE = "You've been logged out.";

var username = null;
var sessionId = null;

function updateLoginDiv(text)
{
	$('login').innerHTML = text;
}

/* Login */

function getLoginForm()
{

}

function submitLogin()
{
	username = getInputValue('username');
	
	makeHTTPRequest(
		appBaseUrl + "async.php",
		'POST',
		'page=login&username=' + username + '&password=' + getInputValue('password'),
		loginOk,
		loginError
	);
	
	updatePopupInfo('Sending login data..');
	
	return false;
}

function loginError(req)
{
	updatePopupInfo("Connection error");
}

function loginOk(req)
{
	var today = new Date();
	var expiry = new Date(today.getTime() + 24 * 60 * 60 * 1000);
	
	sessionId = req.responseText;
	
	if(sessionId == "INACTIVE")
	{
		updatePopupInfo("You must activate your account to login.");
	}
	else if(sessionId != "ERROR")
	{
		setCookie("sessionId", sessionId, expiry);
		
		updatePopupInfo("");
		
		updatePopup("Welcome " + username + "! Close this popup to create super cool tartans!");
		
		updateLoginDiv("You're signed in as " + username + ". "
			+ '<a href="#" onclick="return popup(500, \'profile\');">[profile]</a> '
			+ '<a href="#" onclick="return doLogout();">[logout]</a>');
	}
	else
	{
		updatePopupInfo("Wrong username/password");
	}
}

/* Logout */

function doLogout()
{
	httpreq(
		appBaseUrl + "async.php?page=logout",
		logoutOk,
		logoutError
	);
	
	return false;
}
function logoutOk(req)
{
	sessionId = username = null;
	
	deleteCookie("sessionId");
	
	updateLoginDiv(LOGOUT_MESSAGE + "<br/>" + DEFAULT_LOGIN_HTML);
}
function logoutError(req)
{
	
}

/* Sign up */

function submitIframeSignup()
{
	$('popup_timestamp').value = new Date().valueOf();
	
	$('popup_target').onload = signupIframeLoaded;
	iFrameHandler = signupIframeLoaded;
	
	updatePopupInfo("Sending registration data...");
	
	return true;
}

function submitSignup()
{
	var paramString = 
		'username=' + getInputValue('username') +
		'&password=' + getInputValue('password') +
		'&passwordConfirm=' + getInputValue('passwordConfirm') +
		'&email=' + getInputValue('email') +
		'&name=' + getInputValue('name') +
		'&website=' + getInputValue('website') +
		'&page=signup'
	;
	
	makeHTTPRequest(
		appBaseUrl + "async.php",
		'POST',
		paramString,
		signupOk,
		signupError
	);
	
	updatePopupInfo("Sending registration data...");
	
	return false;
}

function signupIframeLoaded()
{
	var response = $('popup_target').contentWindow.document.body.innerHTML;
	
	signupOk({responseText: response});
}

function signupOk(req)
{
	var signupMessage = req.responseText;
	
	if(/OK/.test(signupMessage))
	{
		updatePopupInfo("");
		
		updatePopup("An email has been sent to your email address to confirm your registration.");
	}
	else
	{
		updatePopupInfo(signupMessage);
	}
}

function signupError()
{
	updatePopupInfo("Connection error");
}

function checkParameters()
{
	if(location.href.indexOf('?activation=1') > 0)
	{
		popup(500, 'activationconfirm');
	}
	else if(location.href.indexOf('?activation=0') > 0)
	{
		popup(500, 'activationerror');
	}
}

/* password retrival */

function forgotPassword()
{
	closePopup();
	
	popup(500, 'forgot_password');
}

function submitForgotPassword()
{
	var requestUrl = appBaseUrl + 'async.php?page=regenerate_password&username=' + 
		getInputValue('username') + '&email=' + getInputValue('email');
	
	
	makeHTTPRequest(
		requestUrl,
		'GET',
		null,
		forgotPasswordOk,
		forgotPasswordError
	);
	
	updatePopupInfo('Checking data..');
	
	return false;
}

function forgotPasswordError(req)
{
	updatePopupInfo("Connection error");
}

function forgotPasswordOk(req)
{
	var errorMessage = req.responseText;
	
	if(/OK/.test(errorMessage))
	{
		updatePopupInfo("");
	
		updatePopup("A new password has been sent you by email!");		
	}
	else
	{
		updatePopupInfo(errorMessage);
	}
	
	
}

window.onload = checkParameters;