function pingerCallback (tl) {

        function escapeHTML (h) {
                return h.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
        } 
        
        window.setTimeout (function () {               
                if (!tl.length) {
                        return false ;
                }
                var head = document.getElementById ('pinger-widget-headline') ;
                var user = tl[0].owner || tl[0].user ;
                head.innerHTML = '<a href="'+user.url+'"><img src="'+user.profile_image_url_thumb+'" class="avatar"/>' + escapeHTML(user.nickname) + '</a>' ;
                var ul = document.getElementById ('pinger-widget-timeline') ;
                var h = Array () ;
                for (var i=0; i<tl.length; i++) {
                        h.push ('<li>') ;
                        if (tl[i].title) {
                            h.push ('<h4 class="title">' + escapeHTML(tl[i].title) + '</h4>') ;
                        }
                        if (tl[i].tags && tl[i].tags.length) {
                            h.push ('<span class="tags">') ;
                            for (var j=0; j<tl[i].tags.length; j++) {
                                h.push (escapeHTML(tl[i].tags[j].tag) + ' ') ;
                            }
                            h.push ('</span>') ;
                        }
                        h.push ('<p>') ;
                        if (tl[i].owner) {
                            h.push ('<a href="'+tl[i].user.url+'">'+escapeHTML(tl[i].user.nickname)+'</a> &gt; <a href="'+tl[i].owner.url+'">'+escapeHTML(tl[i].owner.nickname)+'</a>: ') ;
                        }
                        if (tl[i].text.length > 120) {
                            tl[i].text = tl[i].text.substring (0, 110) + '[...]' ;
                        }
                        h.push(escapeHTML(tl[i].text) + '</p>') ;
                        if (tl[i].images && tl[i].images.length) {
                                h.push ('<ul class="images">') ;
                                for (var j=0; j<tl[i].images.length; j++) {
                                    if (tl[i].images[j]) {
                                            h.push ('<li><img src="'+(tl[i].images[j].mini || tl[i].images[j].thumb)+'" /></li>') ;
                                    } else {
                                            h.push ('<li><a href="'+tl[i].images[j].path+'">') ;
                                    }
                                    h.push ('</ul>') ;
                                }
                        }        
                        h.push ('<a href="'+tl[i].user.url+'/m/'+tl[i].mid+'" class="time">'+tl[i].created_at + '</a></li>') ;
                }
                ul.innerHTML = h.join ('') ;
        }, 100) ;
} 
