var NewspaperLayout = Class.create(
{
  initialize: function (element)
  {
    this._el = element;
    this._opts = Object.extend(
    {
      columns: 2,
      columnClass: 'newspaper-column'
    }, arguments[1] || {});

    this._createLayout();
  },

  _createLayout: function ()
  {
    (this._opts.columns).times(function (i)
    {
      var col = new Element('div', { className: this._opts.columnClass });

      if (i == 0)
        col.addClassName(this._opts.columnClass + '-first');
      if (i == this._opts.columns-1)
        col.addClassName(this._opts.columnClass + '-last');

      this._el.insert(col);
    }.bind(this));

    this._el.childElements().each(function (el)
    {
      if (!el.hasClassName(this._opts.columnClass))
      {
        this._getShortestColumn().insert(el);
      }
    }, this);
  },

  _getShortestColumn: function ()
  {
    var shortest = null;

    this._el.select('.' + this._opts.columnClass).each(function (col)
    {
      if (!shortest || col.getHeight() < shortest.getHeight())
        shortest = col;
    });

    return shortest;
  }
});
