DoRegister = function() {
	var handleSuccess = function(o) {
		var response = o.responseText;
		if( response == "username") {
			SetRegisterError('Username already exists. Please choose another.');
			YAHOO.util.Dom.get('register_username').value = '';
		}
		else if( response == "password") {
			SetRegisterError('Please re-enter password.');
			YAHOO.util.Dom.get('register_password').value = '';
			YAHOO.util.Dom.get('register_password_confirm').value = '';
		}
		else if( response == "email") {
			SetRegisterError('E-Mail already exists.');
			YAHOO.util.Dom.get('email').value = '';
		}
		else {
			window.location = YAHOO.util.Dom.get('next').value;
		}
	};

	var handleFailure = function(o) { 
		var debug = YAHOO.util.Dom.get('debug');
		if( debug ) {
			debug = debug.value;
		}
		if( debug ) {
			alert('failure - DoRegister: ' + o.status); 
		}
	};

	var callback = {
		success: handleSuccess,
		failure: handleFailure
	};
	
	SetSpinner('register_spinner');
	
	var register_error = YAHOO.util.Dom.get('register_error');
	register_error.style.display = 'none';
	register_error.className = '';

	var username = YAHOO.util.Dom.get('register_username').value;
	var email = YAHOO.util.Dom.get('register_email').value;
	var password = YAHOO.util.Dom.get('register_password').value;
	var password_confirm = YAHOO.util.Dom.get('register_password_confirm').value;
	
	if( username.length == 0 ) {
		SetRegisterError('Username is required.');
		return;
	}
	
	if( password.length == 0 ) {
		SetRegisterError('Password is required.');
		return;
	}
	
	if( email.length > 0 ) {
		emailpat = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$/;
		if( !emailpat.test( email ) ) {
			SetRegisterError('Invalid email address.');
			YAHOO.util.Dom.get('register_email').value = '';
			return;
		}
	}
	
	var POST_values = "username=" + username + "&password=" + password + "&password_confirm=" + password_confirm;
	POST_values += "&email=" + email;

	var sUrl = "/accounts/register/?next=" + YAHOO.util.Dom.get('next').value;
	var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, POST_values);
};

DoLogin = function() {
	var handleSuccess = function(o) {
		var response = o.responseText;
		
		if( response == "error") {
			SetLoginError('Username or password incorrect');
		}
		else {
			window.location = YAHOO.util.Dom.get('next').value;
		}
	};

	var handleFailure = function(o) { 
		var debug = YAHOO.util.Dom.get('debug');
		if( debug ) {
			debug = debug.value;
		}
		if( debug ) {
			alert('failure - DoLogin: ' + o.status); 
		}
	};

	var callback = {
		success: handleSuccess,
		failure: handleFailure
	};
	
	SetSpinner('login_spinner');
	
	var login_error = YAHOO.util.Dom.get('login_error');
	login_error.style.display = 'none';
	login_error.className = '';

	var username = YAHOO.util.Dom.get('login_username').value;
	var password = YAHOO.util.Dom.get('login_password').value;
	
	if( username.length == 0 ) {
		SetLoginError('Username is required.');
		return;
	}
	
	if( password.length == 0 ) {
		SetLoginError('Password is required.');
		return;
	}
	
	var POST_values = "username=" + username + "&password=" + password;

	var sUrl = "/accounts/login/?next=" + YAHOO.util.Dom.get('next').value;
	var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, POST_values);
};

SetLoginError = function(error) {
	var login_error = YAHOO.util.Dom.get('login_error');
	login_error.style.display = '';
	login_error.className = 'error';
	login_error.innerHTML = error;
	YAHOO.util.Dom.get('login_spinner').innerHTML = '';
};

SetRegisterError = function(error) {
	var register_error = YAHOO.util.Dom.get('register_error');
	register_error.style.display = '';
	register_error.className = 'error';
	register_error.innerHTML = error;
	YAHOO.util.Dom.get('register_spinner').innerHTML = '';
};

function checkEnter(e,target) {
	var characterCode;

	if( e && e.which ) { 
		e = e;
		characterCode = e.which;
	}
	else {
		e = event;
		characterCode = e.keyCode;
	}

	if( characterCode == 13 ) {
		if( target == "login" ) {
			DoRegister();
		}
		else if( target == "register" ) {
			DoLogin();
		}
	}
}