function checkUsernameUniqueness() {
    var username = $F('username').strip();
    if (username == '') {
        $('usernamefield').removeClassName('green');
        $('usernamefield').removeClassName('red');
        $('usernamefield').update('');
    }
    else {
        new Ajax.Request('/ajax/usernamechecker.php', {
            method: 'post' ,
            parameters: 'username=' + escape(username) ,
            onSuccess: function(request) {
                if (request.responseText == 0) {
                    $('usernamefield').removeClassName('green');
                    $('usernamefield').addClassName('red');
                    $('usernamefield').update('This username is not available.');
                }
                else if (username != '') {
                    $('usernamefield').removeClassName('red');
                    $('usernamefield').addClassName('green');
                    $('usernamefield').update('This username is available.');
                }
            }
        });
    }
}

function freezeButton() {
    $('submitbutton').value = "Processing...";
    $('submitbutton').disabled = true;
}

function removeImage(f) {
    $$('#' + f + ' + img').each(function(i) {
        i.remove();
    });
}

var ok_img = '<img src="/images/check.png" width="16" height="16" align="absmiddle">';
var bad_img = '<img src="/images/cross.png" width="16" height="16" align="absmiddle">';

document.observe('dom:loaded', function() {
    checkUsernameUniqueness();
    $('username').observe('change', checkUsernameUniqueness);

    $('last_name').observe('change', function() {
        var default_name = $F('first_name') + ' ' + $F('last_name');
        if ($F('display_name').strip() == '') {
            $('display_name').value = default_name;
        }
    });

    var form_fields = $H({password: 6, first_name: 2, last_name: 2, display_name: 2})
    form_fields.each(function(f) {
        $(f.key).observe('blur', function() {
            removeImage(f.key);
            if ($F(f.key).strip().length >= f.value) {
                $(f.key).up().insert(ok_img);
                if ($(f.key).up().down().hasClassName('red')) {
                    $(f.key).up().down().removeClassName('red');
                }
            }
            else if ($F(f.key).strip().length < f.value && $F(f.key).strip().length > 0) {
                $(f.key).up().insert(bad_img);
            }
        });
    });
    ['email'].each(function(f){
        $(f).observe('blur', function() {
            var email = $F(f).strip();
            removeImage(f);
            if (email != '' && email.match(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/)) {
                $(f).up().insert(ok_img);
                if ($(f.key).up().down().hasClassName('red')) {
                    $(f.key).up().down().removeClassName('red');
                }
            }
            else if (email != '' && !email.match(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/)) {
                $(f).up().insert(bad_img);
            }
        });
    });

    if (!$('errormessage')) {
        $('username').focus();
    }
    $('registrationform').observe('submit', freezeButton);
});
