var view = this;
this.gridItemMouseOver = function(gridView, el, eOpts) {
var cellIndex = el.cellIndex;
if (el.cellIndex == undefined && el.offsetParent != undefined && el.offsetParent.cellIndex != undefined)
cellIndex = el.offsetParent.cellIndex;
if (cellIndex > 0) {
var hdEl = this.getView().getHeaderAtIndex(cellIndex);
if (hdEl != undefined) {
hdEl.addCls('x-column-header-over');
setTimeout(function () {
if (hdEl != undefined)
hdEl.removeCls('x-column-header-over');
}, 99999);
}
}
};

this.gridItemMouseOut = function(gridView, el, eOpts) {
var cellIndex = el.cellIndex;
if (el.cellIndex == undefined && el.offsetParent != undefined && el.offsetParent.cellIndex != undefined)
cellIndex = el.offsetParent.cellIndex;
if (cellIndex > 0) {
var hdEl = this.getView().getHeaderAtIndex(cellIndex);
if (hdEl != undefined) {
setTimeout(function () {
if (hdEl != undefined)
hdEl.removeCls('x-column-header-over');
}, 500);
}
}
};

this.onGridRender = function () {
this.mon(this.body, {
cellclick: {fn: view.gridItemMouseOver, scope: this},
celldblclick: {fn: view.gridItemMouseOver, scope: this},
itemclick: {fn: view.gridItemMouseOver, scope: this},
itemmouseenter: {fn: view.gridItemMouseOver, scope: this},
itemmouseleave: {fn: view.gridItemMouseOut, scope: this},
mouseover: {fn: view.gridItemMouseOver, scope: this},
mouseout: {fn: view.gridItemMouseOut, scope: this},
containerclick: {fn: view.gridItemMouseOver, scope: this},
containerdblclick: {fn: view.gridItemMouseOver, scope: this},
containermouseup: {fn: view.gridItemMouseOver, scope: this},
containermouseover: {fn: view.gridItemMouseOver, scope: this},
containermouseout: {fn: view.gridItemMouseOut, scope: this},
beforeitemmouseenter: {fn: view.gridItemMouseOver, scope: this},
beforeitemmouseout: {fn: view.gridItemMouseOut, scope: this}
});
};

this.grid.on('afterrender', this.onGridRender, this.grid);

//I wish you a good day
zI wish you a good day