var login_warning_t = 0;

window.onload = function () {
	// If browser support location object, use it
	try {
		if (location.hash != ('#' + current_page)) {
			// Check if valid option
			page = location.hash.substr(1);
			anks = document.getElementById("div_menu").getElementsByTagName("a");
			var test = false;
			for (var n = 0 ; n < anks.length ; ++n) {
				if (anks[n].innerHTML.toLowerCase() == page.toLowerCase()) {
					test = true;
					break;
				}
			}
			if (test) {
				loadcontent(page);
			}
		}
	} catch (e) {
		
	}
}

function loadcontent(page) {
	if (current_page.toLowerCase() != page.toLowerCase()) {
		// Update current page
		current_page = page;
	
		// Set content
		document.getElementById("div_content_header").innerHTML = "Loading page '" + page + "'";
		document.getElementById("div_content_body").innerHTML = "Started loading...<br />";
		
		// Get AJAX
		var ajax = new Ajax();
		ajax.httpReq.onreadystatechange = function () {
			switch (ajax.httpReq.readyState) {
				case 0:
					// The request is not initialized
					document.getElementById("div_content_body").innerHTML += "The request is not initialized...<br />";
					break;
				case 1:
					// The request has been set up
					document.getElementById("div_content_body").innerHTML += "The request has been set up...<br />";
					break;
				case 2:
					// The request has been sent
					document.getElementById("div_content_body").innerHTML += "The request has been sent...<br />";
					break;
				case 3:
					// The request is in process
					document.getElementById("div_content_body").innerHTML += "The request is in process...<br />";
					break;
				case 4:
					// The request is complete
					document.getElementById("div_content_body").innerHTML += "The request is complete...<br />";
					ajax.processResponse();
					break;
			}
		};
		// Process the response
		ajax.processResponse = function () {
			document.getElementById("div_content_header").innerHTML = page;
			document.getElementById("div_content_body").innerHTML = ajax.httpReq.responseText;
		};
		ajax.httpReq.open("GET", "engine.php?p=" + page, true);
		ajax.httpReq.send();
		
		// Make the right menu item selected
		anks = document.getElementById("div_menu").getElementsByTagName("a");
		for (var n = 0 ; n < anks.length ; ++n) {
			if (anks[n].innerHTML.toLowerCase() == page.toLowerCase()) {
				//alert(anks[n].innerHTML.toLowerCase() + " == " + page.toLowerCase());
				anks[n].className = "menu_item menu_selected";
			} else {
				//alert(anks[n].innerHTML.toLowerCase() + " != " + page.toLowerCase());
				anks[n].className = "menu_item";
			}
		}
		
		// Set the ancher for the history
		try {
			location.hash = "#" + page;
		} catch (e) {
			
		}
		
		// Update title
		document.title = "KHH - " + page.substr(0, 1).toUpperCase() + page.substr(1);
	}
}

function login() {
	var user = document.getElementById("input_user").value;
	var pass = document.getElementById("input_pass").value;
	if (user != "Username" && pass != "Password") {
		var ajax = new Ajax();
		if (!ajax.httpReq) {
			document.forms[0].submit();
		}
		ajax.httpReq.onreadystatechange = function () {
			switch (ajax.httpReq.readyState) {
				case 0:
					// The request is not initialized
					break;
				case 1:
					// The request has been set up
					break;
				case 2:
					// The request has been sent
					break;
				case 3:
					// The request is in process
					break;
				case 4:
					// The request is complete
					if (ajax.httpReq.status != 200) {
						alert("Unknown problem logging in...\nServer returned " + ajax.httpReq.status + "\n\n" + ajax.httpReq.responseText);
					}
					ajax.processResponse();
					break;
			}
		};
		ajax.processResponse = function () {
			data = ajax.httpReq.responseText.split('|');
			data[0] = parseInt(data[0]);
			//alert("Response: " + ajax.httpReq.responseText);
			if (data[0] == 0) {
				//alert("Couldn't log in: " + data[1])
				document.getElementById("span_login_warning").innerHTML = data[1];
				document.getElementById("span_login_warning").style.display = "block";
				document.getElementById("input_pass").value = "";
				document.getElementById("input_pass").focus();
				clearTimeout(login_warning_t);
				login_warning_t = setTimeout(hide_login_warning, 5000);
			} else {
				var logdiv = document.getElementById("div_login");
				logdiv.login;
				logdiv.innerHTML = "<span class='logged_in'>Logged in</span><br /><span class='logged_in_left'>User</span>: <span class='logged_in_right'>" + data[2] + " </span><br /><span class='logged_in_left'>Type</span>: <span class='logged_in_right'>" + data[3] + "</span><br /><a class='logged_in_logout' href='login.php?logout=1&amp;p=" + current_page + "' onclick=\"if (confirm(\'Click OK to log out!\n\n(TODO: Log out dynamically)\')) logout(); return false\">Log out</a>";
			}
		};
		var parameters = "user=" + encodeURI(user) + "&pass=" + encodeURI(SHA1(pass));
		ajax.httpReq.open('POST', 'login.php?api=ajax', true);
		ajax.httpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		ajax.httpReq.setRequestHeader("Content-length", parameters.length);
		ajax.httpReq.setRequestHeader("Connection", "close");
		ajax.httpReq.send(parameters);
	}
}

function logout() {
//	alert("Now stuff is supposed to happen. It's not happening tho. Sorry.");
	
	var ajax = new Ajax();
	if (!ajax.httpReq) {
		winow.location.pathname = "login.php?logout=1&p=" + current_page;
	}
	ajax.httpReq.onreadystatechange = function () {
		switch (ajax.httpReq.readyState) {
			case 0:
				// The request is not initialized
				break;
			case 1:
				// The request has been set up
				break;
			case 2:
				// The request has been sent
				break;
			case 3:
				// The request is in process
				break;
			case 4:
				// The request is complete
				if (ajax.httpReq.status != 200) {
					alert("Unknown problem logging out...\n" + ajax.httpReq.responseText);
				}
				ajax.processResponse();
				break;
		}
	};
	ajax.processResponse = function () {
		data = ajax.httpReq.responseText.split('|');
		data[0] = parseInt(data[0]);
		//alert("Response: " + ajax.httpReq.responseText);
		if (data[0] == 0) {
			//alert("Couldn't log in: " + data[1])
			document.getElementById("span_login_warning").innerHTML = data[1];
			document.getElementById("span_login_warning").style.display = "block";
			clearTimeout(login_warning_t);
			login_warning_t = setTimeout(hide_login_warning, 5000);
		} else {
			document.getElementById("div_login").innerHTML = data[1];
		}
	};
	var parameters = "logout=1";
	ajax.httpReq.open('POST', 'login.php?api=ajax&p=' + current_page, true);
	ajax.httpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	ajax.httpReq.setRequestHeader("Content-length", parameters.length);
	ajax.httpReq.setRequestHeader("Connection", "close");
	ajax.httpReq.send(parameters);
}

function hide_login_warning() {
	document.getElementById("span_login_warning").innerHTML = "";
	document.getElementById("span_login_warning").style.display = "none";
}
