function validateUserName(userName)
{
    var error = null;
    var userNameLength = userName.length;
    var filter = /^[a-z][a-z0-9_\\.]*$/i;
    
    if(userNameLength == 0)
    {
        error = "Please enter a username";
    }
    else if(userNameLength < 4)
    {
        error = "Username must be at least 4 characters";
    }
    else if(userNameLength > 255)
    {
        error = "Username must be at most 255 characters";
    }
    else if(!filter.test(userName))
    {
        error = "Username must start with a letter and may consist of English letters, numbers, underscores, and dots";
    }
    
    return error;
}

function validatePassword(password)
{
    var error = null;
    var passwordLength = password.length;
    
    if(passwordLength == 0)
    {
        error = "Please enter a password";   
    }
    else if(passwordLength < 6)
    {
        error = "Password must be at least 6 characters";
    }
    else if(passwordLength > 32)
    {
        error = "Password must be at most 32 characters";
    }
    
    return error;
}

function validateEmail(email)
{
    var error = null;
    var emailLength = email.length;
    
    if(emailLength == 0)
    {
        error = "Please enter an email address";
    }
    else if(emailLength > 50)
    {
        error = "Email must be at most 50 characters";
    }
    
    if(error == null)
    {
        var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
        if (!filter.test(email))
        {
            error = "Email must be in the format of 'name@example.com'";
        }
    }
    
    return error;
}

function validatePasswordEx(password, password2, userName)
{
    var error = validatePassword(password);
    
    if(error != null)
    {
        return error;
    }
    
    if(password != password2)
    {
        error = "Passwords don't match";
    }
    
    if((userName.length > 0) && ((userName.indexOf(password) > -1) || (password.indexOf(userName) > -1)))
    {
        error = "Password is too similar to username";
    }
    
    return error;
}

function validateUserNameOrEmail(userNameOrEmail)
{
    var error = validateUserName(userNameOrEmail);
    if(error == null)
    {
        return error;
    }
    
    var error2 = validateEmail(userNameOrEmail);
    
    if(error2 != null)
    {
        return error;
    }
    else
    {
        return error2;
    }
    
    //return validateEmail(userNameOrEmail);
}

function validateResetPasswordCode(resetCode)
{
    var error = null;
    var resetCodeLength = resetCode.length;
    
    if(resetCodeLength == 0)
    {
        error = "Invalid reset code, please request a new one";
    }
    else if(resetCodeLength != 32)
    {
        error = "Invalid reset code, please request a new one";
    }
    
    return error;
}

function validateCaptcha(captcha)
{
    var error = null;
    var captchaLength = captcha.length;
    
    if(captchaLength == 0)
    {
        error = "Please enter code word";
    }
    else if(captchaLength != 5)
    {
        error = "Wrong code word entered";
    }
    
    return error;
}
