code: function(cell) {
              var cellIdx = this.getMapIndex(cell.el),
                  newRowIdx = cellIdx.row + 1,
                  newIdx = {'row': newRowIdx, 'col': cellIdx.col};
  
              if (newRowIdx < this.map.length) {
  
                  var row = this.getRealRowEl(false, newIdx);
                  if (row !== null) {
                      var n_cidx = this.correctColIndexForUnreals(newIdx.col, newIdx.row);
                      if (n_cidx >= 0) {
                          insertAfter(this.getRowCells(row)[n_cidx], cell.el);
                      } else {
                          var lastCell = this.getLastNewCellOnRow(row, newRowIdx);
                          if (lastCell !== null) {
                              insertAfter(lastCell, cell.el);
                          } else {
                              row.insertBefore(cell.el, row.firstChild);
                          }
                      }
                      if (parseInt(api.getAttribute(cell.el, 'rowspan'), 10) > 2) {
                          cell.el.setAttribute('rowspan', parseInt(api.getAttribute(cell.el, 'rowspan'), 10) - 1);
                      } else {
                          cell.el.removeAttribute('rowspan');
                      }
                  }
              }
          }
docs: Decreases rowspan of a cell if it is done on first cell of rowspan row (real cell) Cell is moved to next row (if it is real)