Ext.define('Ext.rtl.layout.container.boxOverflow.Scroller', {
    override: 'Ext.layout.container.boxOverflow.Scroller',
    
    scrollLeft: function(internal) {
        var me = this,
            layout = me.layout;
        
        if (layout.direction === 'horizontal' && layout.owner.getHierarchyState().rtl) {
            if (internal) {
                me.scrollBy(me.scrollIncrement, false);
            } else {
                me.scrollRight(true);
            }
        } else {
            me.callParent();
        }
    },

    scrollRight: function(internal) {
        var me = this,
            layout = me.layout;
        
        if (layout.direction === 'horizontal' && layout.owner.getHierarchyState().rtl) {
            if (internal) {
                me.scrollBy(-me.scrollIncrement, false);
            } else {
                me.scrollLeft(true);
            }
        } else {
            me.callParent();
        }
    },
    
    atExtremeBefore: function(internal) {
        var layout = this.layout;
        
        if (!internal && layout.direction === 'horizontal' && layout.owner.getHierarchyState().rtl) {
            return this.atExtremeAfter(true);
        } else {
            return this.callParent();
        }
    },
    
    atExtremeAfter: function(internal) {
        var layout = this.layout;
        
        if (!internal && layout.direction === 'horizontal' && layout.owner.getHierarchyState().rtl) {
            return this.atExtremeBefore(true);
        } else {
            return this.callParent();
        }
    }
});