//Username availability
function updateName(minLength,maxLength) {
	var url = "usercheck.php?uname=";
	var stringLength = document.getElementById("newuid").value.length;
	if (""+stringLength+"" > minLength && ""+stringLength+"" < maxLength) { 
		document.getElementById('checked').innerHTML = "<div id=\"ajaxLoad\">Checking...</div>";
		var name = document.getElementById("newuid").value;
		http.open("GET", url + escape(name), true);
		http.onreadystatechange = handleHttpResponse;
		http.send(null);
	}
	else { document.getElementById('checked').innerHTML = ""; }
}
function handleHttpResponse() {
	if (http.readyState == 4) {
	results = http.responseText;
	var name = document.getElementById("newuid").value;
	if(results == "") results = "<span id=\"uNameError\">&nbsp;</span>"
		document.getElementById('checked').innerHTML = results;
	}
}
//Email address availability
function updateEmail() {
	var url = "usercheck.php?email=";
		var email = document.getElementById("email").value;
		var regexp =  /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/i;
		if (regexp.test(email)) {
			document.getElementById('checkedE').innerHTML = "<div id=\"ajaxLoad\">Checking...</div>";
			http.open("GET", url + escape(email), true);
			http.onreadystatechange = handleHttpResponseEmail;
			http.send(null);
		}
		else { document.getElementById('checkedE').innerHTML = ""; }
}
function handleHttpResponseEmail() {
	if (http.readyState == 4) {
	results = http.responseText;
	var email = document.getElementById("email").value;
	if(results == "") results = "<span id=\"uNameError\">&nbsp;</span>"
		document.getElementById('checkedE').innerHTML = results;
	}
}
(function(){
	var events;
	var check = function(e){
		var target = document.id(e.target);
		var parents = target.getParents();
		events.each(function(item){
			var element = item.element;
			if (element != target && !parents.contains(element))
			item.fn.call(element, e);
		});
	};
	Element.Events.outerClick = {
		onAdd: function(fn){
			if(!events) {
				document.addEvent('click', check);
				events = [];
			}
			events.push({element: this, fn: fn});
		},
		onRemove: function(fn){
			events = events.filter(function(item){
				return item.element != this || item.fn != fn;
			}, this);
			if (!events.length) {
				document.removeEvent('click', check);
				events = null;
			}
		}
	};
})();

