function addOnLoadEvent(func) {
    Event.observe(window, "load", func);
}

function setLoadFocus(elementId) {
    var element = $(elementId);
    if (!element) {
        return;
    }

    document.observe("dom:loaded", focusField.curry(element));
}

function focusField(element) {
    $(element).activate();
}

function setSelectedOption(select, selectedValue) {
    select = $(select);

    for (var i = 0; i < select.options.length; i++) {
        if (select.options[i].value == selectedValue) {
            select.options[i].selected = true;
            return;
        }
    }
}

function getSelectedOption(select) {
    select = $(select);

    for (var i = 0; i < select.options.length; i++) {
        if (select.options[i].selected) {
            return select.options[i];
        }
    }

    return null;
}

function setSelectedRadio(radios, selectedValue) {
    for (var i = 0; i < radios.length; i++) {
        if (radios[i].value == selectedValue) {
            radios[i].checked = true;
            return;
        }
    }
}

function getSelectedRadio(radios) {
    for (var i = 0; i < radios.length; i++) {
        if (radios[i].checked) {
            return radios[i];
        }
    }

    return null;
}

function updateTableRow(row, show) {
    var showStyle = (window.getComputedStyle) ? "table-row" : "block";
    row.style["display"] = (show) ? showStyle : "none";
}

function updateTableRowRadio(row, form, radioName, showValue) {
    updateTableRow(row, getSelectedRadio(form[radioName]).value == showValue);
}

function updateTableRowSelect(row, form, selectName, showValue) {
    updateTableRow(row, getSelectedOption(form[selectName]).value == showValue);
}

function annotateRequiredFields(prepend) {
    var outsidePos = (prepend) ? "before" : "after";
    var insidePos = (prepend) ? "top" : "bottom";

    var annotationClass = "required_annotation";
    if (prepend) {
        annotationClass += " pre";
    }

    var annotation = "<span title='required field' class='" +
        annotationClass + "'>*</span>";

    var solidTags = ["INPUT", "SELECT", "TEXTAREA"];

    $A($$(".required")).each(function (e) {
        var insertion = {};
        if (solidTags.member(e.tagName)) {
            insertion[outsidePos] = annotation;
        } else {
            insertion[insidePos] = annotation;
        }

        e.insert(insertion);
    });
}

