/*
 * Объект обработки различных фильтров и сортировок в рамках типовой страницы списка
 * Хранит в себе фильтры и сортировки страницы и умеет генерировать урл с необходимыми данными и отображать полученную по ему информацию
 * Также тут обрабатывается очередь AJAX сообщений при помощи внешнего плагина
 */
function PageSettings() {
    this.filter = new Array();
    this.string_filter = '';
    this.sort = '';
    this.timer = false;
    this.pager = true;
    this.page = 1;
    this.base_url = "";


    this.ajaxManager = $.manageAjax({
        manageType: 'abortOld',
        maxReq: 0
    });


    this.GetUrl = function() {
        params = new Array();
        for (i in this.filter) {
            if (this.filter[i] != '') {
                params.push(i+"="+encodeURIComponent(this.filter[i]));
                //this.page = 1;
            }
        }
        if (this.sort!='') {
            params.push("sort="+this.sort);
            //this.page = 1;
        }
        if (this.string_filter!='') {
            params.push("string_filter="+this.string_filter);
            //this.page = 1;
        }


        var page = "page="+this.page;
        params.push(page.trim());
        
        var url = this.base_url + "?"+params.join('&').trim();

        if (typeof(pageTracker) != 'undefined') {
            pageTracker._trackPageview(url);
        }

        return url
    }


    this.Fetch = function() {

        this.ajaxManager.add({

            success: function(data) {

                if(typeof(data)=="undefined") {
                    data = "<div id=\"inner_content_internal\">Ошибка получения данных</div>";
                }

                if (data.trim() == '') {
                    $('div.search-window').fadeIn(350);
                }

                // Создаётся скрытый див в который помещается контент и после его содержимое переносится в необходимое месте

                $('#exchange').html('');
                $('#inner_content').html('');


                //$('#exchange').html(data);
                $('#inner_content').html(data);
                    
                if (Settings.pager) {

                    //Переносим пейджер в переменную и удаляем чтобы на странице гарантированно остался только один нужный пейджер
                    var pager_html = $('#pager').html();
                    $('#pager').html(' ');
                    $('#content div.pager').html(pager_html);
                }

                HideLoaderForum();

                if(typeof(callback) == 'function') {
                    callback();
                }

            },

            error : function(data) {


            },

            'url': this.GetUrl()
        })

    }


    this.setStringFilter = function(str) {
            if (this.string_filter != str) {
                    this.page = 1;
                    this.string_filter = str;
            }
    }


    this.setSort = function(str) {
            if (this.sort != str) {
                    this.page = 1;
                    this.sort = str;
            }
    }


    this.setBase = function(str) {
        this.base_url = str;
    }


    this.setFilter = function(key, value) {
        value = value.trim()
            if (this.filter[key] != value) {
                    this.page = 1;
                    this.filter[key] = value;
            }
    }


    this.stringFilter = function() {
        ShowLoaderForum(true);
    }
}


var Settings = new PageSettings;
