function getXMLHttpRequest() {
	try {return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {};
	try {return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {};
	try {return new XMLHttpRequest(); } catch(e) {};
	return null;
}

function removeText(node) {
	if (node != null) {
	  if (node.childNodes) {
		for (var i = 0; i < node.childNodes.length; i++) {
		  var oldTextNode = node.childNodes[i];
		  if (oldTextNode.nodeValue != null) {
			node.removeChild(oldTextNode);
		  }
		}
	  }
	}
}

function appendText(node, text) {
	var newTextNode = document.createTextNode(text);
	node.appendChild(newTextNode);
}

function setText(node, text) {
	removeText(node);
	appendText(node, text);
}

var xhr = getXMLHttpRequest();

function parseResponse() {
	// get vars ready
	var response = '';
	var new_username = document.forms['newuser'].uID.value;
	var warning = document.getElementById("warning");
	var submit_button = document.getElementById("submit_button");
	
	// wait for the HTTP response
	if (xhr.readyState == 4) {
	  if (xhr.status == 200) {
		response = xhr.responseText;
		
		switch (response) {
		  case "taken":
			setText(warning, "Sorry, User ID '" + new_username + "' is taken.");
			submit_button.disabled = true;
		  break;
		  case "short":
			setText(warning, "User ID is too short.");
			submit_button.disabled = true;
		  break;
		  case "long":
			setText(warning, "User ID is too long.");
			submit_button.disabled = true;
		  break;
		  case "open":
			removeText(warning);
			submit_button.disabled = false;
		  break;
		  default:
		  alert("unexpected response: '" + response + "'");
		}
	  } else {
		alert("problem: xhr.status = " + xhr.status);
	  }
	}
}

function checkUsername() {
	var username = document.forms['newuser'].uID.value;
	// send the http request
	xhr.open("GET", "/includes/registerCheckUserName.php?uID="+username, true);
	xhr.onreadystatechange = parseResponse;
	xhr.send(null);
}