var DEVXSliderGrid = function (data) {
	this.data = data;
    this.gridTimer = {};
    this.preloading = false;
    this.scrollTimer = null;
};

DEVXSliderGrid.prototype.changePage = function (e, grid_name, scroll) {
    var grid = gridArray[grid_name];
    var store = grid.store; 
    var view = grid.getView();
    var s = this;
    
    var p = Math.floor((scroll + this.data['rows_visible'] - 1)/this.data['rows_per_page']) * this.data['rows_per_page'];
    if ((typeof(store.lastOptions.params['start']) == 'undefined') || isNaN(store.lastOptions.params['start'])) {
        store.lastOptions.params['start'] = 0;
    }
    
    if (this.scrollTimer) clearTimeout(this.scrollTimer);
    if (!this.preloading) {
        var loadGrid = function () {
            s.preloading = true;
            slider.hide();
            store.load({
                params:{scroll: scroll, grid_name : grid_name}, 
                add: false, 
                numVisibleRows: s.data['rows_visible'],
                numRowsPerPage: s.data['rows_per_page']
            });
        }
        if (e.lastAction == 'drag') {
            this.scrollTimer = setTimeout(loadGrid, 300);
        } else {
            loadGrid();
        }
    }
};

DEVXSliderGrid.prototype.insertRecords = function (store, rs, o) {
    slider.value = o.params.scroll;
    slider.syncThumb();
    var gridName = (useFields)? 'field' : current_grid;
    var gridView = false;
    if (typeof(gridArray[gridName]) != 'undefined') {
        gridView = gridArray[gridName].getView();
    }
    for(var i = 0; i < rs.length; i++) {
        if (!document.getElementById('img_company' + rs[i].id)) {
            continue;
        }
        document.getElementById('img_company' + rs[i].id).setAttribute('row_id', i);
    }
    if (checkedArray[compareDepth+1]) {
        for(var i = 0; i < rs.length; i++) {
            if (checkedArray[compareDepth+1][rs[i].id] ) {
                document.getElementById('company' + rs[i].id).checked = true;
                document.getElementById('img_company' + rs[i].id).src='img/grid_checked.gif';
                document.getElementById('img_company' + rs[i].id).setAttribute('row_id', i);
                if (gridView) {
                    var el = Ext.get(gridView.getRow(i));
                    el.addClass('row-selected');
                }
            }
        }
    }

    // Hack! We disabled defautl events, but need remove loading mask - at last event in list
    
    var mask = store.events.load.listeners[3].scope;
    mask.el.unmask(mask.removeMask);
    this.preloading = false;
    return false;
}

DEVXSliderGrid.prototype.initStatusIcons = function (grid) {
    setTimeout(function() {
        var store = grid.getStore();
        var view = grid.getView();
        var rows = store.getCount();    
        var cm = grid.getColumnModel();
        var compIndex = cm.findColumnIndex('company_name');

        for (var i = 0; i < rows; i++) {
            var r = store.getAt(i);
            var data = r.data;
            if (data.company_name && data.company_name != '') {
                var cell = view.getCell(i, compIndex);
                var img = 0;
                if ('C' == data.type_) {
                    if ('Y' == data.conf_status) img = 3;
                    else img = 2;
                    // add row-profile class to div container
                    var row = view.getRow(i);
                    Ext.get(row).addClass('row-profile');
                } else {
                    if ('Y' == data.conf_status) img = 1;
                }
                if (img > 0) cell.style.background = 'url(img/stat'+img+'.gif) no-repeat center right';
                var div = cell.firstChild.firstChild;
                if (div && div.style) div.style.width = cell.offsetWidth + 'px'; // removed -15
            }
        }
    }, 1);
}

DEVXSliderGrid.prototype.beforeLoad = function (store, o) {
    var sortState = store.getSortState();
    if ((o.params['order'] && o.params['order'] != sortState['field']) || (o.params['order_type'] && o.params['order_type'] != sortState['direction'])) {
        o.params.scroll = slider.getValue();
        if (o.add) o.add = false;
        store.loadedPages = {};
        if (o.params['order_type'] && o.params['order_type'] != sortState['direction']) {
            if ('DESC' == sortState['direction']) {
                o.params.start = this.data['rows_per_page'] * Math.floor(o.params.scroll / this.data['rows_per_page']);
            }
            
            if ('ASC' == sortState['direction']) {
                o.params.start = this.data['rows_per_page'] * Math.floor((o.params.scroll + this.data['rows_visible'] - 1) / this.data['rows_per_page']);
            }
        }
    }

//    slider.hide();
    return true;
}

var sg = new DEVXSliderGrid({rows_per_page: 126, rows_visible: 18});

