whole_func_string: function(num, padding) {
        var pad = arguments.length > 1;
        var arr = this;
        var result = [];
        var divisor = ceil(this.length / num);
        getRange(0, num - 1, function(i) {
          var index = i * divisor;
          var group = arr.slice(index, index + divisor);
          if(pad && group.length < divisor) {
            getRange(1, divisor - group.length, function() {
              group = group.add(padding);
            });
          }
          result.push(group);
        });
        return result;
      }
func_code_string: function(num, padding) {
        var pad = arguments.length > 1;
        var arr = this;
        var result = [];
        var divisor = ceil(this.length / num);
        getRange(0, num - 1, function(i) {
          var index = i * divisor;
          var group = arr.slice(index, index + divisor);
          if(pad && group.length < divisor) {
            getRange(1, divisor - group.length, function() {
              group = group.add(padding);
            });
          }
          result.push(group);
        });
        return result;
      }
func_documentation_string: *
  @method inGroups(<num>, [padding])
  @returns Array
  @short Groups the array into <num> arrays.
  @extra [padding] specifies a value with which to pad the last array so that they are all equal length.
  @example
  
  [1,2,3,4,5,6,7].inGroups(3)         -> [ [1,2,3], [4,5,6], [7] ]
  [1,2,3,4,5,6,7].inGroups(3, 'none') -> [ [1,2,3], [4,5,6], [7,'none','none'] ]
  
  *