function upsAddressValidation(form) {
    if (form.id == 'address_form') {
        $("address_add").writeAttribute("disabled", true);
        $("button_set").insert({ bottom: "<img id=ajax-loader src=/ups-address-validation/ajax-loader.gif>" });
    }
    var ok = false;

    if (form.id == 'address_form') {
        var param_names = {
            street: 'street_1',
            city: 'city',
            region_id: 'region_id',
            postal_code: 'zip',
            country: 'country',
            firstname: 'firstname',
            lastname: 'lastname'
        };
    } else if ($('opc-billing').hasClassName('active')) {
        var param_names = {
            street: 'billing:street1',
            city: 'billing:city',
            region_id: 'billing:region_id',
            postal_code: 'billing:postcode',
            country: 'billing:country_id',
            firstname: 'billing:firstname',
            lastname: 'billing:lastname'
        };
    } else {
        var param_names = {
            street: 'shipping:street1',
            city: 'shipping:city',
            region_id: 'shipping:region_id',
            postal_code: 'shipping:postcode',
            country: 'shipping:country_id',
            firstname: 'shipping:firstname',
            lastname: 'shipping:lastname'
        };
    }

    if ($(param_names.country).value != 'US') {
        return true;
    }

    new Ajax.Request(
        "https://titanlifts.com/ups-address-validation/validate.php",
        {   method: "get",
            asynchronous: false,
            parameters: {
                street: $(param_names.street).value,
                city: $(param_names.city).value,
                region_id: $(param_names.region_id).value,
                postal_code: $(param_names.postal_code).value,
                country: $(param_names.country).value,
                firstname: $(param_names.firstname).value,
                lastname: $(param_names.lastname).value
            },
            onSuccess: function(transport) {
                if (transport.responseJSON.valid &&
                    transport.responseJSON.closest_match.zip == $(param_names.postal_code).value) {
                    $(param_names.street).value = transport.responseJSON.closest_match.street1;
                    $(param_names.city).value = transport.responseJSON.closest_match.city;
                    //$("region_id").value = transport.responseJSON.closest_match.state_code;
                    //$("zip").value = transport.responseJSON.closest_match.zip;
                    ok = true;
                } else {
                    if (transport.responseJSON.closest_match.street1) {
                        var change = confirm(
                            "UPS couldn't validate your address. The closest alternative is\n" +
                            transport.responseJSON.closest_match.street1 +
                            "\n" +
                            transport.responseJSON.closest_match.city +
                            ", " +
                            transport.responseJSON.closest_match.state +
                            " " +
                            transport.responseJSON.closest_match.zip +
                            "\n\nWould you like to use this address instead?");
                        if (change) {
                            $(param_names.street).value = transport.responseJSON.closest_match.street1;
                            $(param_names.city).value = transport.responseJSON.closest_match.city;
                            $(param_names.region_id).value = transport.responseJSON.closest_match.state_code;
                            $(param_names.postal_code).value = transport.responseJSON.closest_match.zip;
                        }
                    } else {
                        alert("UPS couldn't validate your address.");
                    }
                    if (form.id == 'address_form') {
                        $("address_add").writeAttribute("disabled", false);
                        $("ajax-loader").remove();
                    }
                    ok = false;
                }
            }
        }
    );
    return ok;
}
