(function($){
$.rentalFind = {
    show_loading_img: function(){
        $('#result-list').hide();
        $('#waiting_animation').show()
    },

    show_search_results: function(){
        $('#result-list').show();
        $('#waiting_animation').hide()
    },

    validate: function (submit, initial) {
        var validate_result = false;
        var validate_succes = false;
        $.ajax({
            type: "GET",
            dataType: "jsonp",
            url: rental_config.domain + '/ajax_validate_find_form/?callback=?',
            data: $('#find-form').formSerialize(),
            success: function(data){
                var errors = data.errors;
                function getErrorContainer(id) {
                    return $(id).parents('.field-wrap').find('.errors-container');
                }
                errors["pickup_date"] = errors["pickup_date"] + errors["__all__"];
                for (field in errors){
                    if ('__all__' != field) {
                        var id = "#id_" + field;
                        if ('dropoff_date' == field || 'pickup_date' == field) {
                            id = id + '_day'
                        }
                        getErrorContainer(id).html(errors[field]);
                    }
                }

                if (data.depot){
                    end_depot = $('#id_end_depot');
                    end_depot.find('optgroup').remove();
                    for (group in data.depot){
                        group = data.depot[group];
                        var optgroup = $('<optgroup label="' + group[0] + '"></optgroup>');
                        for (depot in group[1]) {
                            depot = group[1][depot];
                            optgroup.append('<option value="' + depot["id"] + '">' + depot["name"] + "</option>");
                        }
                        end_depot.append(optgroup);
                    }
                    end_depot.val($("#id_start_depot").val());
                    end_depot.trigger('change-value');
                    // FIXME: It is need?
                    $("#vid_end_depot").attr("value",$("#vid_start_depot").attr("value"));
                }

                if (data.result == "1"){
                    validate_result=true;
                }else{
                    validate_result=false;
                }

                if (data.date){
                    $('input[name=dropoff_date]').val(data.date).change();
                }

                if (submit && validate_result) {
                     if (initial) {
                         $("#is_initial").attr("value", "2");
                     }
                     $("#find-form").submit();
                     $("#is_initial").attr("value", "0");
                };
            }
        });
    },

    update_filter_by_price_range: function(filter_max) {
        var price_filter = $("#price_range_slider");

        var hid_price_range = $("#id_price_range");
        price_filter.slider('destroy');
        hid_price_range.attr("max", filter_max);

        var find_button_clicked = price_filter.attr('flush_values') == '1';
        if (find_button_clicked) {
            $('#price_range_slider_value2').text(filter_max);
            price_filter.attr('flush_values', '0');
            hid_price_range.attr('value', '0,' + filter_max);
            slider_behavior();
            //FIXME It is need? Commented because not understand;
            //$.rentalFind.validate(true);
        } else {
            slider_behavior();
        }
    }
};


$(document).ready(function(){
    $("#find-form select").change(function() {
        $.rentalFind.validate(false);
    });
    $("#pickup_date select, #dropoff_date select").change(function(){
        var name = $(this).attr('name');
        if (name.match('^pickup_date')) {
            name = 'pickup_date';
        } else {
            name = 'dropoff_date';
        }
        var date = [getDate(name, 'year'), getDate(name, 'month'), getDate(name, 'day')];
        date = date.join('-');
        $('input[name=' + name + ']').val(date);

        function getDate(id, type) {
            var value = $("#id_" + id + "_" + type).val();
            if (1 == value.length) {
                value = '0' + value;
            }
            return value;
        }
    });
});

})(jQuery);
