(function() {
	var timer = null;
	var form = null;
	var debug = null;
	var last = 0;

	jQuery(document).ready(function(){
		form = document.getElementById("register");
		debug = document.getElementById("debug");

		for(var i = 0; i < form.elements.length; i++)
		{
			var e = form.elements[i];
			switch(e.type)
			{
				case "hidden":
				case "submit":
				case "reset":
					$(e).click(function() { start_timer(); });
					break;
				case "select":
				case "checkbox":
				case "radio":
					$(e).change(function() { start_timer(); });
					break;
				case "text":
				case "textarea":
				case "password":
				default:
					$(e).keypress(function() { start_timer(); });
					break;
			}
		}
	});

	function start_timer()
	{
		if(timer) clearTimeout(timer);
		timer = setTimeout(checkform, 500);
	}

	function checkform()
	{
		var post = serialize();
		post["ajax"] = true;

		$.post(form.action, post, function(json) {
			if(json.ok)
			{
				for(i in json.data.errors)
				{
					document.getElementById(i).innerHTML = json.data.errors[i];
				}
			}
		}, "json");
	}

	function serialize()
	{
		var a = {};
		for(var i = 0; i < form.elements.length; i++)
		{
			var e = form.elements[i];
			if(e.type == "checkbox")
			{
				if(e.checked) a[e.name] = e.value;
			}
			else
			{
				a[e.name] = e.value;
			}
		}
		return a;
	}

})();
