/**** initialise request ****/
var request = null;
try {
	request = new XMLHttpRequest();
} catch (trymicrosoft) {
	try {
		request = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (othermicrosoft) {
		try {
			request = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (failed) {
			request = null;
		}
	}
}

if (request == null) {
	alert("There was an error with the web technology. This may happen because of a temporary error on our website or if you are using a very outdated browser.");
}

/**** TEXT FUNCTIONS ****/

function replaceText(e, text) {
	if (e != null) {
		clearText(e);
		var newNode = document.createTextNode(text);
		e.appendChild(newNode);
	}
}

function clearText(e) {
	if (e != null) {
		if (e.childNodes) {
			for (var i = 0; i < e.childNodes.length; i++) {
				var childNode = e.childNodes[i];
				e.removeChild(childNode);
			}
		}
	}
}

function getText(e) {
	var text = "";
	if (e != null) {
		if (e.childNodes) {
			for (var i = 0; i < e.childNodes.length; i++) {
				var childNode = e.childNodes[i];
				if (childNode.nodeValue != null) {
					text = text + childNode.nodeValue;
				}
			}
		}
	}
	return text;
}

function is_numeric(x) {
	var anum=/(^\d+$)|(^\d+\.\d+$)/
	if (anum.test(x)) return true;
	return false;
}

/**** EVERY PAGE FUNCTIONS ****/

function changeRadio(e) {
	var v = e.value;
	var selected = e.id + "_" + v;
	var opt = e.id + "_options";
	var items = $(opt).getElementsByTagName("li");
	for (var i = 0; i < items.length; i++) {
		items[i].className = "";
	}
	
	$(selected).className = "selected";
}

function ajaxNoResponse(url) {
	request.open("GET", url, true);
	request.onreadystatechange = null;
	request.send(null);
}

function logout() {
	var url = "/include/scripts/logout.php";
	request.open("GET", url, true);
	request.onreadystatechange = logoutResponse;
	request.send(null);
}
	
function logoutResponse() {
	if (request.readyState == 4) {
		window.location.reload();
	}
}

function startLogin() {
	$("loginbox").style.display = "block";
	$("login_username").focus();
}

function login() {
	var un = $("login_username").value;
	var pw = $("login_password").value;
	if (un != "" && pw != "") {
		var url = "/include/scripts/login?username=" + un + "&password=" + pw;
		request.open("GET", url, true);
		request.onreadystatechange = loginResponse;
		request.send(null);
	}
}
	
function loginResponse() {
	if (request.readyState == 4) {
		var response = request.responseText;
		if (response == "login") {
			replaceText($("login_error"), "");
			window.location.reload(false);
		} else {
			var parsedResponse = response.split(":");
			if (parsedResponse[0] == "username") {
				$("login_username").focus();
			} else if (parsedResponse[0] == "password") {
				$("login_password").focus();
				$("login_password").select();
			}
			replaceText($("login_error"), parsedResponse[1]);
		}
	}
}

function helpText(e, title) {
	var hm;
	
	// make a div to display help messages if it doesn't already exist
	if ($("helpMsg")) {
		hm = $("helpMsg");
	} else {
		hm = document.createElement("div");
		hm.setAttribute("id", "helpMsg");
		$("maincontent").appendChild(hm);
	}
	
	// get the position of the help element
	var newpos = findPos(e);
	var help = e.getAttribute("title");
	
	var thetitle = (title == null) ? "" : "<h2>" + title + "</h2>";
	
	hm.innerHTML = "<input type='button' onclick=\"this.parentNode.style.display = 'none';\" value = 'X' />" + thetitle + help;
	hm.style.display = "block";
	hm.style.top = newpos[1] + "px";
	hm.style.left = (newpos[0] - 310) + "px";
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function suggest(textbox, query) {
	if ($(textbox).value != "" & query != "") {
		new Ajax.Request('/include/scripts/suggest', {
			method:'get',
			parameters: {q: query, searchtext: $(textbox).value },
			onSuccess: function(transport){
				var response = transport.responseText || "None";
				var parsedResponse = response.split(":");
				if (parsedResponse.length == 1 && response != "None") {
					$(textbox).value = response;
				}
			},
			onFailure: function(){ alert('Something went wrong...') }
		});
	}
}


// change the height of a textarea to fit the amount of text in it
function textarea_expand(ta, min, max) {
	if (ta.scrollHeight>ta.clientHeight){
		ta.style.height=(ta.scrollHeight+20)+"px";
	} else {
		$(ta).style.height="10px";
		ta.style.height=(ta.scrollHeight+20)+"px";
	}
	
	if (ta.clientHeight < min) ta.style.height= min+"px";
	if (ta.clientHeight > max && max>0) ta.style.height= max+"px";
}










