
function FeedbackMessage(message, level) {
this.message = message;
this.level = level;
}
var AggregateFeedbackPanel = {
onClear: function(panelId) {
var panel = dojo.byId(panelId);
dojo._setOpacity(panel, 0);
},
onShow: function(panelId) {
var panel = dojo.byId(panelId);
 var count = {
ERROR: 0,
WARNING: 0,
INFO: 0
};
var width = 0;
var messages = panel.getElementsByTagName('li');
dojo.forEach(messages, function(li) {
count[li.level]++;
width = Math.max(width, li.firstChild.offsetWidth);
});
 var title = AggregateFeedbackPanel.getTitle(count);
if (title) {
 dojo.forEach(messages, function(li) {
li.firstChild.style.width = width + 'px';
});
 var div = document.createElement('div');
div.className = 'feedback-title feedback-title-' + title.level;
div.innerHTML = '<span>' + title.message + '</span>';
var ul = panel.firstChild;
ul.className += ' aggregate-feedback feedback-' + title.level;
panel.insertBefore(div, ul);
}
 setTimeout(function() {
DomUtils.scrollIntoView(panel);
}, 100);
 dojo.fadeIn({node: panel, duration: 500}).play();
},
getTitle: function(count) {
if (count.ERROR > 1) {
return new FeedbackMessage(count.ERROR + " errors have been detected:", 'ERROR');
}
if (count.INFO > 1) {
return new FeedbackMessage(count.INFO + " messages:", 'INFO');
}
if (count.WARNING > 1) {
return new FeedbackMessage("Please notice the following warnings:", 'WARNING');
}
return null;
}
};
