var request;

function fao_register(obj) {
    var phone_number = document.getElementById('register_phone_number').value;
    var name = document.getElementById('register_name').value;
    var email = document.getElementById('register_email').value;
    var i_agree = document.getElementById('register_i_agree').checked;

	// TODO Or set innerHTML on message instead of alert boxes?
	// TODO Check in the same order that the fields show up in on the form.
	// TODO one message for all errors?
    if(name == null || name == '') {
    	document.getElementById('register_message').innerHTML = 'A name is required';
    	document.getElementById('register_message').style.color = "red";
        return false;
    }
    if(phone_number == null || phone_number == '') {
    	document.getElementById('register_message').innerHTML = 'A phone number is required';
    	document.getElementById('register_message').style.color = "red";
        return false;
    }
    if(email == null || email == '') {
    	document.getElementById('register_message').innerHTML = 'An email address is required';
    	document.getElementById('register_message').style.color = "red";
        return false;
    }
    if ( ! i_agree ) {
    	document.getElementById('register_message').innerHTML = 'You must agree to the terms of service';
    	document.getElementById('register_message').style.color = "red";
        return false;
    }

    document.getElementById('register_button').disabled = true;
    document.getElementById('register_message').innerHTML = '&nbsp;';
    document.getElementById('register_message').style.color = "blue";

    var url = "/cgi-bin/fao_register.cgi";
    // Does email need to be URL encoded?
    post_register(url, "phone_number=" + phone_number + "&name=" + name + "&email=" + email);
}

function post_register(url, params) {
    request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        request = new XMLHttpRequest();
        if (request.overrideMimeType) {
            // set type accordingly to anticipated content type
            //request.overrideMimeType('text/xml');
            request.overrideMimeType('text/x-json');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!request) {
        alert('Cannot create XMLHTTP instance');
        document.getElementById('register_button').disabled = false;
        return false;
    }

    request.onreadystatechange = register_response_handler;
    request.open('POST', url, true);
    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    request.setRequestHeader("Content-length", params.length);
    request.setRequestHeader("Connection", "close");
    request.send(params);
}

// This is called when we get a response to a post
// Customize this to whatever is returned from the cgi
function register_response_handler() {
    if (request.readyState == 4 || request.readyState == "complete") {
        document.getElementById('register_button').disabled = false;

        if (request.status == 200) {
            var object = eval('(' + request.responseText + ')');
            // Comment this out to avoid setting message fields.
            document.getElementById('register_message').innerHTML = object.message;
            if(!object.success) {
                document.getElementById('register_message').style.color = "red";
            	//document.location = '/RegistrationFailed';
            } else {
                document.getElementById('register_message').style.color = "blue";
            	//document.location = '/RegistrationComplete';
            }
            return 1;
        } else {
            document.getElementById('register_message').innerHTML = 'There was a problem processing your request.  Please try again later.';
            document.getElementById('register_message').style.color = "red";
            return 1;
        }
    }
}
