$("registrationForm").username.focus();
$("registerButton").onclick = registerUser.bindAsEventListener(null);
$("registrationForm").onsubmit = function() { return false };
$("howDidYouHear").onchange = selectChanged;
disablePaste("confirmedEmail");
$("emailInput").onkeydown = showEmailConfirmation;
$("emailInput").onmousedown = showEmailConfirmation;


function registerUser(evt) {
    var button = $("registerButton");
    button.disabled = true;
    Element.addClassName(button, "disabled");
    var form = $("registrationForm");
    var email = $F("emailInput");
    var callback = function(errorMessage) {
        if(errorMessage) {
            Element.removeClassName(button, "disabled");
            button.disabled = false;
            document.documentElement.scrollTop = 0;
            var errorElement = $("registrationError");
            errorElement.innerHTML = errorMessage;
            errorElement.style.display = "block";
            showEmailConfirmation();
        } else {
            var successfulRegistrationForm = $("successfulRegistrationForm");
            successfulRegistrationForm.username.value = form.username.value;
            successfulRegistrationForm.password.value = form.userPassword.value;
            successfulRegistrationForm.submit();
        }
    }
    form["value_200"].value = form["username"].value;
    var userData = Form.serialize(form).parseQuery();
    Registration.register(userData, callback);
    return false;
}


function showEmailConfirmation() {
	if($("emailConfirmationRow")) {
	    Element.show("emailConfirmationRow");
	}
}

function selectChanged() {
    var selectedOption = $j("#howDidYouHear option:selected").get(0);
    if($(selectedOption).classNames().include("specifiable")) {
        $("nameOrUrl").innerHTML = selectedOption.getAttribute("dir");
        $("additionalRow").show();
        $("registrationForm").specifyCaption.value = getCaption(selectedOption);
        setTimeout(function(){$j("#additionalRow input").get(0).focus()}, 100);
    } else {
        $("registrationForm").specifyCaption.value = "";
        $("additionalRow").hide();
    }
}

function getCaption(option) {
    if(option.parentNode.getAttribute("label") == "Person") {
        return "person";
    }
    return option.value.toLowerCase();
}