document.observe(
	'dom:loaded',
	function()
	{
		// $('usercheck')
		$('ContactUsername').observe('blur', checkUsername);
		$('ContactUsername').observe('change', checkUsername);
	}
);

var nextCheck = 0;
function timeoutPassed()
{
	var now = new Date();
	if (now.getTime() < nextCheck)
	{
		return false;
	}
	else
	{
		nextCheck = now.getTime() + 400; // = 0.4 seconds
	}
	return true;
}

var previous = false;
function checkUsername()
{	
	var username = $('ContactUsername').value;

	if (username.length > 0)
	{
		if (!timeoutPassed() || (previous == username))
		{
			return;
		}

		previous = username;
		new Ajax.Request(
			'/contacts/ajax_username_check',
			{
				method: 'post',
				parameters: {
					'data[username]': username
				},
				onCreate: function() {
					usernameStatusBusy();
				},
				onSuccess: function(transport) {
					var valid = transport.responseJSON;
					if (valid === false)
					{
						usernameStatusInvalid();
					}
					else if (valid === true)
					{
						usernameStatusValid();
					}
				},
				onFailure: function() {
					usernameStatusIdle();
				}
			}
		);
	}
	else
	{
		usernameStatusIdle();
	}
}

function usernameStatusBusy()
{
	$('UsernameStatus').setStyle({background: 'transparent url(/img/loading2.gif) no-repeat 0px 0px'});
}
function usernameStatusInvalid()
{
	$('UsernameStatus').setStyle({background: 'transparent url(/img/taken.gif) no-repeat 0px 0px'});
}
function usernameStatusValid()
{
	$('UsernameStatus').setStyle({background: 'transparent url(/img/lib24watch/action-icons/check-clear.gif) no-repeat 0px 0px'});
}
function usernameStatusIdle()
{
	$('UsernameStatus').setStyle({background: 'transparent'});
}

