
var loginHandlers = [
	function() {
		var loginButton = $("login_button");
		if (loginButton) { loginButton.down("a").update("Logout"); }
		$$(".inactive").invoke('removeClassName',"inactive").invoke('addClassName',"active");
	},
];
function dispatchLogin() {
	var handlers = loginHandlers.clone();
	for (var i = 0; i < handlers.length; i++) { handlers[i](); }
}

var logoutHandlers = [
	function() {
		$("login_button").down("a").update("Login to Edit");
		$$(".active").invoke('removeClassName',"active").invoke('addClassName',"inactive");
	},
];
function dispatchLogout() {
	var handlers = logoutHandlers.clone();
	for (var i = 0; i < handlers.length; i++) { handlers[i](); }
}



addLoadEvent(function() {
	if (username) { dispatchLogin(); }
});


var loginCallback = null;

function makeFunction(callback) {
	if (!callback) { return function() {}; }
	if (typeof(callback) == "string") {
		var localHref = callback;
		return function() { window.location.href = localHref; }
	}
	return callback;
}

function checkLogin(callback) {
	callback = makeFunction(callback);
	if (username) {
		callback();
	}
	else {
		loginCallback = callback;
		var login = $("login");
		login.show();
		var lDims = login.getDimensions();
		var vDims = document.viewport.getDimensions();
		login.setStyle({'left': (vDims.width  - lDims.width ) / 2 + "px",
		                'top':  (vDims.height - lDims.height) / 2 + "px",});
	}
	return false; // for pesky anchors
}

function handleLogin() {
	if (!loginCallback) { return; }
	var form = $("loginForm");
	new Ajax.Request("yumbox.php", {'method': "post",
		'parameters': {'action': "login", 'user': form.user.value,
		                                  'pass': form.pass.value,},
		'onSuccess': handleLoginResponse,
	});
}

function handleLoginResponse(request) {
	var response = eval("(" + request.responseText + ")");
	if (response) {
		username = response;
		$("login").hide();
		dispatchLogin();
		loginCallback();
	}
	else {
		$("loginPrompt").update("Incorrect username or password.");
	}
}


function toggleLogin() {
	if (!username) {
		checkLogin();
	}
	else {
		username = null;
		dispatchLogout();
		new Ajax.Request("yumbox.php", {'method': "post",
			'parameters': {'action': "logout"}
		});
	}
}
