Вот можно выполнить такой js. И сообщения сгрупируются по вопросам и ответам, а так же появится «Топ Плюсов» и «Топ Вопросов». Но правда жутко тормозит при выполнении его в консоли firebug. И с внешним видом я не сильно заморачивался.
{
var plusArr={},questArr={};
$('#comments > div.comment_item').each(function(i,el){
el=$(el);
var r=el.children('div.reply_comments'),
rb=el.children('div.reply'),
m=el.children('div.message'),
info=el.children('div.info'),
qs=r.children('div.comment_item'),
show=$('<a>Вопросы</a>').insertAfter(m),
user=$('a.username',info).text(),
score=parseInt($('span.score',info).text());
el.css('border','1px solid green');
r.hide();
rb.hide();
show.toggle(function(){
r.show();rb.show();
},function(){
r.hide();rb.hide();
});
$('a.reply',rb).text('Спросить');
qs.each(function(i,el){
el=$(el);
var r=el.children('div.reply_comments'),
rb=el.children('div.reply'),
m=el.children('div.message'),
info=el.children('div.info'),
user=$('a.username',info).text(),
show=$('<a>Ответы</a>').insertAfter(m),
localscore=0;
el.css('border','1px solid blue');
r.hide();
rb.hide();
show.toggle(function(){
r.show();rb.show();
},function(){
r.hide();rb.hide();
});
$('div.info:has(a.username:[text="'+user+'"]) span.score',r).each(function(i,el){
localscore+=parseInt($(el).text());
});
score+=localscore;
show.text('Ответы ('+r.children('div.comment_item').length+')');
var stat='';
stat+='<span> За ответы:'+((localscore>0)?'+':'')+localscore+'</span>';
$(stat).appendTo(info);
if(!questArr[user]) questArr[user]=1;
else questArr[user]++;
});
show.text('Вопросы ('+qs.length+')');
var stat='';
stat+='<span> За ответы:'+((score>0)?'+':'')+score+'</span>';
$(stat).appendTo(info);
});
var getTop =function(obj,n){
var a=[];
for(var i in obj)
a.push({n:i,v:obj[i]});
a.sort(function(a,b){return b.v-a.v;});
return a.slice(0,n);
}
var makeTopHtml=function(a){
for(var i=0,n=a.length;i<n;i++){
var o=a[i];
a[i]=o.n+': '+o.v;
}
return a.join(', ');
}
$('#comments div.info').each(function(i,el){
var info=$(el),
score=parseInt($('span.score',info).text());
if(score!=0){
var user=$('a.username',info).text();
if(!plusArr[user]) plusArr[user]=0;
plusArr[user]+=score;
}
});
var stat='';
stat+='<div> Топ Плюсов:'+makeTopHtml(getTop(plusArr,10))+'</div>';
stat+='<div> Топ Вопросов:'+makeTopHtml(getTop(questArr,10))+'</div>';
$(stat).insertBefore($('#comments'));
}