var usernameRegExp = /^[\w]+$/;

function fixName(name) {
    var out = "";
    for(var i = 0; i < name.length; i++) {
        var c = name.charAt(i);
        if((c >= 'A' && c <= 'Z') ||
           (c >= 'a' && c <= 'z') ||
           (c >= '0' && c <= '9')) {
            out += c;
        }
    }
    return out.toLowerCase();
}

function isValidUsername(username) {
    return 0 === username.search(usernameRegExp);
}

function validate(form, registering) {
    if(form.username.value === '' || !isValidUsername(form.username.value)) {
        alert('Please enter a valid username.');
        return false;
    }
    if(form.password1.value === '') {
        alert('Please enter a password.');
        return false;
    }
    if(registering) {
        if(form.password2.value === '') {
            alert('Please confirm your password.');
            return false;
        }
        if(form.password1.value !== form.password2.value) {
            alert('Passwords do not match.');
            return false;
        }
    }
    return true;
}

function hash(form, registering) {
    if(!validate(form, registering)) {
        return false;
    }
    var fullPassword = 'Hatchery ' + fixName(form.username.value) + ' ' +
    form.password1.value.length + ' ' + form.password1.value;
    form.passhash.value = hex_sha1(fullPassword);
    form.password1.value = '';
    if(registering) {
        form.password2.value = '';
    }
    return true;
}