Цикл times лучше заменить на each или на обычный for (работает быстрее).
Проставить везде ";" где нужно. Это хорошо для ИЕ и вобще хорошая практика, когда-нибудь спасет от неуловимых ошибок.
div.update лучше заменить на div.innerHTML = *; — prototype дает много лишней функциональности в этом методе, в вашем случае лучше обойтись без update, работать будет значительно быстрее. И строки лучше объединять через массив методом join.
Событие onclick лучше поставить на сам .showmore и отслеживать target. Чем меньше событий зарегистрировано в dom, тем лучше.
В итогде получится такой код:
document.observe('dom:loaded', function() {
var items = $$('.showmore'), item, words, first, second;
for (var i=0, len=items.length; i<len; i++) {
item = items[0];
// Тут ваш код, формирующий разбивку с сылками
item.innerHTML = [firstPart, '...', second, '...', '...'].join('');
item.observe('click', moretoggle);
}
});
function moretoggle(e) {
var element = Event.element(e);
if (element.nodeName == 'A' && element.readAttribute('href') === '') {
Event.stop(e);
element.select('#more, #link_more, #link_hide').invoke('toggle');
}
}