function registerPressed()
{
	// Check all elements input and proceed

	// firstname
	if($("#firstname").length > 0 && $("#firstname").val().length < 3)
	{
		SetFieldError("firstname", "Firstname is too short");
		return false;
	}
	else
		CleanFieldError("firstname");

	// lastname
	if($("#lastname").length > 0 && $("#lastname").val().length < 3)
	{
		SetFieldError("lastname", "lastname is too short");
		return false;
	}
	else
		CleanFieldError("lastname");


	// Username
	if($("#username").val().length < 3)
	{
		SetFieldError("username", "Username is too short");
		return false;
	}
	else
		CleanFieldError("username");

	// Username 2
	if($("#username").val().length > 15)
	{
		SetFieldError("username", "Username is too long");
		return false;
	}
	else
		CleanFieldError("username");

	// Username 3
	// Validation: start with alphanumeric, then alphanumeric + underscore
	var filter2  = /^[a-zA-Z0-9]([a-zA-Z0-9_])+$/;
	if(!filter2.test($("#username").val()))
	{
		SetFieldError("username", "Only alphanumeric values and underscore allowed")
		return false;
	}
	else
		CleanFieldError("username");

	// Email address
	$("#email").val($("#email").val().trim());
	if($("#email").val().length < 7)
	{
		SetFieldError("email", "Email address is too short");
		return false;
	}
	else
	{
		// Email address correctness
		// ( http://www.quirksmode.org/js/mailcheck.html )
		var filter  = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if(!filter.test($("#email").val()))
		{
			SetFieldError("email", "Email address is incorrect");
			return false;
		}
		else
			CleanFieldError("email");
	}

	// Password
	if($("#password").length > 0)
  	{
		if($("#password").val().length < pwMinLength)
		{
			SetFieldError("password", "Password is too short");
			return false;
		}
		else
			CleanFieldError("password");

		if($("#password").val().length > pwMaxLength)
		{
			SetFieldError("password", "Password is too long");
			return false;
		}

		// Password confirm
		if($("#password").val() != $("#password-confirm").val())
		{
			SetFieldError("password-confirm", "Password not identical");
			return false;
		}
		else
			CleanFieldError("password-confirm");
	}
	//City
	if ($('#city_text').length > 0 && $('#city_text').val().trim() == "")
	{
		SetFieldError("city", "Please provide your city");
		return false;
	}
	else
		CleanFieldError("city");

	// phone
	if($("#phone").length > 0 && $("#phone").val().length < 7)
	{
		SetFieldError("phone", "Phone is too short");
		return false;
	}
	else
		CleanFieldError("phone");

	if(!$("#terms").get(0).checked)
	{
		$("#terms_error").html("You must agree to the terms and conditions to register");
		$("#terms_error").show();
		$("#terms").focus();
		return false;
	}
	else
	{
		$("#terms_error").html("");
		$("#terms_error").hide();
	}

	//Kudocities
	if ($('#kudocities_login').length > 0 &&  $('#kudocities_login').val().trim() == "")
	{
		SetFieldError("kudocities", "You must specify your Kudocities login");
		return false;
	}
	else
		CleanFieldError("kudocities");

	$("#create").attr("disabled", true);

	$.get("/member/checkusername?" +
		"name="   + encodeURIComponent($("#username").val()) +
		"&email=" + encodeURIComponent($("#email").val()),
		function(data){
			if(data.trim() == "000")
				$("#f_register").get(0).submit();
			else
			{
				$("#create").removeAttr("disabled");

				if(data.slice(1, 2) == "1")
					SetFieldError("email", "This email address is already in use");
				if(data.slice(0, 1) == "1")
					SetFieldError("username", "This username is already in use");
			}
	});

	return false;
}

function SetFieldError(field, error)
{
	$("#" + field + "_error").html(error).show();
	$("#" + field).focus();
}

function CleanFieldError(field)
{
	$("#" + field + "_error").html("").hide();
}

var passChangeTimeout = null;

function passwordChange()
{
	if(passChangeTimeout != null)
		clearTimeout(passChangeTimeout);

	var pwStrength = getPasswordStrength($("#password").val());
	var strengthText = "";
	switch(pwStrength[1])
	{
	case "short":
		strengthText = "Password is too short";
		break;
	case "long":
		strengthText = "Too long";
		break;
	case "weak":
		strengthText = "Weak";
		break;
	case "fair":
		strengthText = "Fair";
		break;
	case "good":
		strengthText = "Good";
		break;
	case "strong":
		strengthText = "Strong";
		break;
	}

	$("#password_error").html("<font color='" + pwStrength[2] + "'>" + strengthText + "</font>");
	$("#password_error").show();

	passChangeTimeout = setTimeout("passwordChange()", 500);
}

var emailChangeTimeout = null;

function emailChange()
{
	if(emailChangeTimeout != null)
		clearTimeout(emailChangeTimeout);
	emailChangeTimeout = setTimeout("emailChange()", 500);
}

$(document).ready(function(){
	$("#username").focus();
  	$("#create").click(registerPressed);
  	$("#password").change(passwordChange);
  	$("#password").keypress(passwordChange);
});

