window.onload = boot;
var xhr = false;
var errors = "";
var oldUsername = "";
var checked = false;
var autologin = false;
var story = null;
var expandStory = null;
var submit = null;
var loginForm = null;

function boot() {
	submit = document.getElementById("loginSubmit");
	expandStory = document.getElementById("expandStory");
	story = document.getElementById("story");
	loginForm = document.getElementById("loginForm");
	if (expandStory && story) {		
		expandStory.onclick = function () { 
			if (this.innerHTML == "expand") {
				this.innerHTML = "close";
				story.style.display = "block";
			}
			else {
				this.innerHTML = "expand";
				story.style.display = "none";
			}
		}
	}
	if (loginForm)
		loginForm.onsubmit = checkLoginForm;
	
	var username = document.getElementById("username");
	var cookie = gc("rememberMe");
	if (username && cookie.length > 0) {
		username.value = cookie;
		document.getElementById("username").focus();
		document.getElementById("password").focus();
		document.getElementById("rememberMe").checked = true;
		checked = true;
		if (document.getElementById("autologin").value == "true" && document.getElementById("password").value.length > 0) {
			autologin = true;
			submit.disabled = true;
			document.getElementById("loginForm").submit();
		}
	}
	else if (username) {
		document.getElementById("rememberMe").checked = false;
		username.select();
		oldUsername = username ? username.value : "username";
		username.onfocus = function() { if (this.value == oldUsername) this.value = ""; }
		username.onblur = function() { if (this.value == "") this.value = oldUsername; }
		document.getElementById("loginForm").onsubmit = checkLoginForm;
	}
	else if (document.getElementById("readLink")) {
		submit.disabled = true;
		document.location = document.getElementById("readLink").href;
	}
	errors = document.getElementById("errors");
}

function checkLoginForm() {
	var username = document.getElementById("username");
	var password = document.getElementById("password");
	
	submit.disabled = true;

	var usernameValid = false;	
	var passwordValid = false;

	if (username.value == "" || (!checked && username.value == oldUsername)) {
		username.className = " error";
		submit.disabled = false;
	}
	else {
		username.className = "login";
		usernameValid = true;
	}
	
	if (password.value == "") {
		password.className = " error";
		submit.disabled = true;
	}
	else {
		password.className = "login";
		passwordValid = true;
	}
		
	if (usernameValid && passwordValid) {
		if (document.getElementById("rememberMe").checked) {
			if (checked) 
				cc("rememberMe", gc("rememberMe"), 10);
			else
				cc("rememberMe", username.value, 10);
		}
		else {
			dc("rememberMe");
		}
		return true;
	}
	else {
		submit.disabled = false;
		return false
	}
}

function cc(fieldName, value, expDays) { // create cookie
	var expDate = new Date();
	expDate.setDate(expDate.getDate() + ((expDays) ? expDays : 365));
	var dateStr = expDate.toGMTString();
	var newCookieStr = fieldName + "=" + escape(value) + '; expires=' + dateStr + '; path=/';
	document.cookie = newCookieStr;
}

function dc(fieldName) { // delete cookie
	cc(fieldName, "", -1);
}

function gc(fieldName) { // get cookie
	var cookies = document.cookie;
	var s = cookies.indexOf(fieldName + "="); // value start
	if (s >= 0) {
		s += fieldName.length + 1;
		var temp = cookies.slice(s);
		var e = temp.indexOf(";"); // value end
		e = ((e >= 0) ? e : cookies.length);
		return unescape(temp.slice(0, e));
	}
	return "";
}