var loadingPad = {
    loadingPlaceElement: null,
    loadingDiv: null,

    init: function(elementId){
        this.loadingPlaceElement = $(elementId);
        this.createLoadingDiv();
    },
    getWidth: function(){
        return this.loadingPlaceElement.width();
    },
    getHeight: function(){
        return this.loadingPlaceElement.height();
    },
    getX: function(){
        return this.loadingPlaceElement.position().left;
    },
    getY: function(){
        return this.loadingPlaceElement.position().top;
    },
    show: function() {
        this.loadingPlaceElement.html(this.loadingDiv);
    },
    hide: function(){

    },

    createLoadingDiv: function(){
        var div = $("<div></div>");
        div.position().left = this.getX();
        div.position().top = this.getY();
        div.width(this.getWidth());
        div.height(this.getHeight());
        div.addClass('loading_div');

        // add GIF image here

        this.loadingDiv = div;
    }
}


var ajaxSearch = {
    init: function(formId, searchUrl, resultsContainer, sortBy, itemsPerPage, resultView) {
        this.form = $('#' + formId);
        this.searchUrl = searchUrl;
        this.resultsContainer = resultsContainer;
        this.sortBy = $('#' + sortBy);
        this.itemsPerPage = $('#' + itemsPerPage);
        this.resultView = resultView
    },

    getFormData: function() {
        this.formData = this.form.serialize();
    },

    getResults: function() {
        $('div#search_results').html('<div id="ajax_loading"><img src="/images/loading.gif"/></div>');
        $.get(this.searchUrl, this.formData, this.populateResults, 'html')
    },

    populateResults: function(dataHtml) {
        $('div#search_results').html(dataHtml);
    }
}

var setCarModel = null;

var getCarModels = function() {
    var createOptionsCallback = function(optionsCollection) {
        var options = '<option value="">Choisir un modèle</option>';

        var optionsCollectionLength = optionsCollection.length;

        for (var i = 0; i < optionsCollectionLength; i++) {
            options += '<option value="' + optionsCollection[i].auto_id + '">' + optionsCollection[i].auto_title + '</option>';
        }

        $("select#search_car_model_id").html(options);
		if (setCarModel) setCarModel();
    };
    var carBrandData = {brand_id: $("select#search_car_brand_id").val()};
    var carModelsUrl = url_ajax_getmodels;

    $.post(carModelsUrl, carBrandData, createOptionsCallback, 'json')
}


var doCarsCount = function() {
    var formData = $('#startpage_search_form').serialize();
    var updateCallback = function(dataJSON) {
        $('div#instant_count_result span#digit').html(dataJSON.count);
        $('div#instant_count_result').show();
    };

    $.post(url_ajax_count, formData, updateCallback, 'json');
};


$(document).ready(function() {
    /**
     * AJAX car model loader
     */
    $("select#search_car_brand_id").change(getCarModels);

    $("div.search_form_field").change(doCarsCount);

    $("select#search_emission_id").click(function(){
        update_results();
        return false;
    });

    /*
	$('a.navi_link').click(function() {
        $('form#advanced_search_form input#search_page').val(this.id.substring(4));
        update_results();
        return false;
    })
	*/
	
    $('a.result_view_switch').click(function() {
        $('form#advanced_search_form input#search_result_view').val(this.id);
        $('form#advanced_search_form input#search_items_per_page').val(gallery_default_rpp)
        update_results();
        return false;
    });

    $('select#items_per_page').change(function() {
        $('form#advanced_search_form input#search_items_per_page').val($(this).val());
        update_results();
    });
    
    $('select#sort_by').change(function() {
        $('form#advanced_search_form input#search_sort_by').val($(this).val());
        update_results();
    });

    var $options_checkboxes = $("ul.ui-multiselect-checkboxes li label input");
    $options_checkboxes.click(function() {
//        this.click();
//        update_results();
        alert(1);
    });


   // suppression pour des objectif de SEO
   // $('form#advanced_search_form select').change(update_results);
   // $('form#advanced_search_form input').change(update_results);

});

function update_results() {
//    var result_view = $('form#advanced_search_form input#search_result_view').val();
//    var items_per_page = $('form#advanced_search_form input#search_items_per_page').val();
//    var sort_by = $('form#advanced_search_form input#search_sort_by').val();
//
    ajaxSearch.init('advanced_search_form', url_ajax_search, 'search_results');
    ajaxSearch.getFormData();
    ajaxSearch.getResults();
}

function switch_results_options_values(result_view) {
    //TODO finish
}

function updatePhotoPager(curr, next, opts, item_num) {
    var caption = (opts.currSlide + 1);
    $('#photo_pager_' + item_num).html('Photo ' + caption + "/" + opts.slideCount);
}
