function registerUser()
{
    var client = new XMLHttpRequest();
    
    client.onreadystatechange = function()
    {
        if(this.readyState == 4)
        {   
            if(this.status == 200)
            {
                if(this.responseText == '')
                {
                    // redirect to their wishlist after registering
                    window.location = 'do/mine';
                }
                else
                {
                    // parse the error code passed back
                    var errorCode = parseInt(this.responseText);
                    
                    if(errorCode == 0)
                    {
                        alert(this.responseText);
                    }
                    
                    // check for missing data
                    if(errorCode >= 10)
                    {
                        errorCode -= 10;
                        
                        alert("Fill in all the fields!");
                    }
                    
                    // check for wrong security code
                    if(errorCode >= 5)
                    {
                        errorCode -= 5;
                        
                        // reload security code image
                        document.getElementById('register-code-img').src = 'scripts/security.php?x=' + (new Date()).getTime();
                        
                        // clear the security code field
                        document.getElementById('register-code').value = '';
                        
                        // make security code field red to indicate error
                        document.getElementById('register-code').className = 'error';
                        
                        // display error message
                        alert("Wrong security code!");
                    }
                    
                    // check for password mismatch
                    if(errorCode >= 3)
                    {
                        errorCode -= 3;
                        
                        // make password field red to indicate error
                        document.getElementById('register-password').className = 'error';
                        
                        // make verify field red to indicate error
                        document.getElementById('register-verify').className = 'error';
                        
                        // display error message
                        alert("Your passwords don't match!");
                    }
                    
                    // check for existing username
                    if(errorCode >= 1)
                    {
                        errorCode -= 1;
                        
                        // make username field red to indicate error
                        document.getElementById('register-username').className = 'error';
                        
                        // display error message
                        alert("Sorry, that username is already taken!");
                    }
                    
                    if(errorCode > 0)
                    {
                        // unknown error
                        alert("Unknown error code " + errorCode);
                    }
                }
            }
            else
            {
                alert("Hm... error! " + this.statusText);
            }
            
            // reload security code image
            document.getElementById('register-code-img').src = 'scripts/security.php?x=' + (new Date()).getTime();
            
            // clear the security code field
            document.getElementById('register-code').value = '';
        }
    };
    
    // reset any error fields
    document.getElementById('register-username').className = '';
    document.getElementById('register-password').className = '';
    document.getElementById('register-verify').className = '';
    document.getElementById('register-code').className = '';
    
    var username = document.getElementById('register-username').value;
    var password = document.getElementById('register-password').value;
    var verify = document.getElementById('register-verify').value;
    var realname = document.getElementById('register-realname').value;
    var code = document.getElementById('register-code').value;
    
    var url = 'register.php';

    var data = 'username=' + escape(username) + '&password=' +
               escape(password) + '&verify=' + escape(verify) + '&realname=' + 
               escape(realname) + '&code=' + escape(code);
    
    client.open('POST', url, true);
    
    client.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    
    client.send(data);
}