ScriptLoader.add(init_login_events);

function init_login_events() {
    build_username_checker();
    set_form_focus();
}

function set_form_focus() {
    var login = get('login');
    var login_form = login.getElementsByTagName('form')[0];
    for (var i = 0; i < login_form.elements.length; i++) {
        if (login_form.elements[i].type == 'text') {
            login_form.elements[i].focus();
            break;
        }
    }
}

function build_username_checker() {
    var username_section = get('username_section');
    if (!username_section) return;
    
    var Input = {
        node: 'a',
        // type: 'submit',
        id: 'login_availability_check',
        text: 'check availability',
        href: '#',
        onclick: check_login_availability,
        style: {
            marginLeft: '.5em'
        }
    };
    
    var username = get('username');
    username_section.insertBefore(create_node(Input), username.nextSibling);
}

function check_login_availability(e) {
    prevent_default(get_e(e));

    var username = get('username').value;
    var email = get('email').value;
    if (!username) return;
    
    var Request = new XMLRequest;
    Request.onload = handle_login_check;
    Request.send('login?submit=check_username&username='+username+'&email='+email)
}

function handle_login_check(XML, text) {
    var Result = get_node(XML, 'result');
    
    var Login = get_node(Result, 'login');
    var desired_login = Login.getAttribute('value');
    var is_login_available = Login.getAttribute('available');
    var login_message = Login.getAttribute('message');
    
    var Email = get_node(Result, 'email');
    var desired_email;
    var is_email_available;
    if (Email) {
        desired_email = Email.getAttribute('value');
        is_email_available = Email.getAttribute('available');
    }
    
    var info_text = (is_login_available == 1) ? 'is available.' : login_message;
    var className = (is_login_available == 1) ? 'valid': 'invalid' ;
    
    var username_info =  get('username_info');
    username_info.innerHTML = '"' + desired_login + '" ' + info_text;
    username_info.className = className;
    
    var email_info = get('email_info');
    if (is_email_available == 0) {
        email_info.innerHTML = 'An account is already registered for "' + desired_email + '."<br />Did you <a href="/login?view=reminder&email='+desired_email+'">forget your password</a>?';
        email_info.className = 'invalid';
    }
    else {
        email_info.innerHTML = 'This will not be shared.';
        email_info.className = 'info';
    }
}

