function checkUsername(id, info)
{
	new Ajax.Request('/ajax/check-username.php',
					 {method:'post', parameters:'username='+escape($F(id))+'&'+$H(info).toQueryString(),
						 onSuccess:function(e)
						 	{
								var rxml = e.responseXML;
								var root = rxml.getElementsByTagName("ajaxresponse")[0];

								var errors = $A(root.getElementsByTagName("error"));
								if(errors.length > 0) errors.each(function(v){SForm.addError(id,v.childNodes[0].nodeValue);});
								var messages = $A(root.getElementsByTagName("message"));
								if(messages.length > 0) messages.each(function(v){SForm.addMessage(id,v.childNodes[0].nodeValue);});
							}});
}

function makeUsername(val)
{
	return val.toLowerCase().replace(/-/g,' ').replace(/[^a-z0-9@._ ]/g,'').replace(/ +/g,'_');
}

function setupPage()
{
	if($('reg_form')) setupSignupForm();
}

function setupSignupForm()
{
	SForm.setup('reg_form',
				function(){
					var valid = true;
					var fields = $A(['first_name','last_name','email','username','password','password2']);
					if(!SForm.require(fields)) valid = false;
					if(fields.indexOf('email')>=0 && !SForm.valid('email', Valid.email, 'This email address is not valid.')) valid = false;
					if(fields.indexOf('username')>=0 && !SForm.valid('username', Valid.username, 'Usernames must be at least 6 characters long.')) valid = false;
					if(fields.indexOf('password')>=0 && !SForm.valid('password', Valid.password, 'Passwords must be at least 6 characters long.')) valid = false;
					if($('password') && $('password2') && $F('password')!=$F('password2')) { SForm.addError('password2','Passwords do not match.'); valid=false; }
					
					if(valid) submitForm('reg_form', $('reg_form').action, {hideOnSuccess:true});
				},
				{},
				{
					email:function(e){if($('username') && $F('username')==''){$('username').value=makeUsername($F('email'));checkUsername('username', {email:$F('email'), first:$F('first_name'), last:$F('last_name')});}},
					username:function(e){$('username').value=makeUsername($F('username'));return checkUsername('username', {email:$F('email'), first:$F('first_name'), last:$F('last_name')});}
				},
				{});
}