function toggle_button_enabled(button, enable) {/*{{{*/
    if (enable == undefined) enable = button.hasClass('disabled');
    if (enable) {
        button.removeClass('disabled');
        button.unbind('click');
    } else {
        button.addClass('disabled');
        donothing = function() { return false; };
        button.click(donothing);
    }
}/*}}}*/

function clear_select(select) {/*{{{*/
    select.attr('disabled', 'disabled');
    select.find('option').not('option:first').remove();
}/*}}}*/

function get_makes() {/*{{{*/
    function success(data, textStatus) {
        $('select#make').html(data).removeAttr('disabled');
        clear_select($('select#model'));
        toggle_button_enabled($('input#search'), false);
    }
    function error(XMLHttpRequest, textStatus, errorThrown) {
        alert('Unable to get makes.');
    }
    var year = this.value;
    var url = ROOT + 'vehicle-search/get-makes/';
    $.ajax({ type: 'POST', url: url, data: { year: year },
        success: success, error: error });
}/*}}}*/

function get_models() {/*{{{*/
    function success(data, textStatus) {
        $('select#model').html(data).removeAttr('disabled');
        toggle_button_enabled($('input#search'), false);
    }
    function error(XMLHttpRequest, textStatus, errorThrown) {
        alert('Unable to get models.');
    }
    var year = $('select#year').get(0).value;
    var make = this.value;
    var url = ROOT + 'vehicle-search/get-models/';
    $.ajax({ type: 'POST', url: url, data: { year:year, make: make },
        success: success, error: error });
}/*}}}*/

function change_model() { // {{{
    if (this.value.length) {
        toggle_button_enabled($('input#search'), true);
    } else {
        toggle_button_enabled($('input#search'), false);
    }
} // }}}

function ajaxify_fields() {/*{{{*/
    $('select#year').change(get_makes).val('').removeAttr('disabled');
    $('select#make').change(get_models);
    $('select#model').change(change_model);
    clear_select($('select#make'));
    clear_select($('select#model'));
    $('input#search').removeAttr('disabled');
    $('input#search').addClass('disabled');
    toggle_button_enabled($('input#search'), false);
}/*}}}*/
