Element.addMethods({
  ellipsis: function(element) {
    element = $(element);

    var originalText = element.innerHTML;

    var t = element.cloneNode(true);
    Element.extend(t);

    t.hide().setStyle({ 'position': 'absolute',
                        'width': element.getWidth(),
                        'height': 'auto',
                        'overflow': 'visible',
                        'max-width': 'inherit'
                      });

    element.insert(t);

    var text = originalText;

    while (text.length > 0 && t.getHeight() > element.getHeight()) {
      index = (text.lastIndexOf(' ') == -1 ? text.length - 1 : text.lastIndexOf(' '));

      text = text.substr(0, index);
      t.innerHTML = text + "...";
    }

    element.innerHTML = t.innerHTML;
  }
});
