text: jui.define("chart.grid.overlap", [  ], function() {
  
      /**
       * @class chart.grid.overlap
       * @extends chart.grid.core
       */
      var OverlapGrid = function() {
          var size, widthUnit, heightUnit, width, height ;
  
          this.custom = function() {
              for(var i = 0, len = this.axis.data.length; i < len; i++) {
                  var obj = this.scale(i);
  
                  obj.x -= this.axis.area("x");
                  obj.y -= this.axis.area("y");
  
                  this.chart.svg.rect($.extend(obj, {
                      fill : "transparent",
                      stroke : "transparent"
                  }));
              }
          }
  
          this.drawBefore = function() {
              size = this.grid.count || this.axis.data.length ||  1;
  
              widthUnit = (this.axis.area('width') / 2) / size;
              heightUnit = (this.axis.area('height') / 2) / size;
  
              width = this.axis.area('width');
              height = this.axis.area('height');
  
              // create scale
              this.scale = (function(axis) {
                  return function(i) {
  
                      var x = i * widthUnit;
                      var y = i * heightUnit;
  
                      return {
                          x : axis.area('x') + x,
                          y : axis.area('y') + y,
                          width : Math.abs(width/2 - x)*2,
                          height : Math.abs(height/2 - y)*2
                      }
  
                  }
              })(this.axis);
  
          }
  
          this.draw = function() {
              this.grid.hide = true;
              return this.drawGrid("overlap");
          }
  
      }
  
      OverlapGrid.setup = function() {
          return {
              /** @cfg {Number} [count=null] Splited count  */
              count : null
          }
      }
      
      return OverlapGrid;
  }, "chart.grid.core");
  