var Twitter_Widget=function(){function get_relative_age_str(dt){var time;var s;var now=new Date();var seconds_ago=(now.getTime()-dt.getTime())/1000;if(seconds_ago<60){return"updated less than a minute ago";}else if(seconds_ago<3600){time=Math.round(seconds_ago/60);s=(time==1)?"":"s";return"updated "+time+" minute"+s+" ago";}else if(seconds_ago<86400){time=Math.floor(seconds_ago/3600);s=(time==1)?"":"s";if(time==1)time="an";return"updated over "+time+" hour"+s+" ago";}else{time=Math.floor(seconds_ago/86400);s=(time==1)?"":"s";return"updated over "+time+" day"+s+" ago";}}
return{init:function(element,username,show_num,opts){var refresh=(opts&&opts.refresh&&opts.refresh>=15000)?opts.refresh:60000;$.getJSON("http://twitter.com/statuses/user_timeline/"+username+".json?callback=?",function(data){var count=1;$("#"+element).empty();$.each(data,function(i,twit){if(!twit.in_reply_to_user_id){var linked_text=twit.text
.replace(/(http:\/\/tinyurl.com\/\w+)/,"<a href='$1' target='_blank'>$1</a>")
.replace(/(http:\/\/bit.ly\/\w+)/,"<a href='$1' target='_blank'>$1</a>")
.replace(/(http:\/\/tumblr\.com\/\w+)/,"<a href='$1' target='_blank'>$1</a>")
.replace(/(http:\/\/.*?twitpic.com\/(\w+))/,"<a href='$1'><img src='http://twitpic.com/show/thumb/$2.jpg' height='150' width='150'/></a>")
.replace(/( @\w+)/,"<a href='http://twitter.com/$1'>$1</a>");var dt=twit.created_at.split(" ");var date=new Date(dt[1]+" "+dt[2]+" "+dt[5]+" "+dt[3]+" "+dt[4]);$('<li/>')
.attr('id',twit.id)
.append($('<span/>')
.addClass("status")
.html(linked_text))
.append('<br/>')
.append($('<span/>')
.addClass("created")
.html(get_relative_age_str(date))
.css('color','gray')
.css('font-style','italic'))
.appendTo("#"+element);if(count++==show_num)return false;}});$("#"+element+" li:last-child").addClass("last");setTimeout('Twitter_Widget.init("'+element+'", "'+username+'", "'+show_num+'", {refresh:"'+refresh+'"})',refresh);});},search:function(element,query,show_num,opts){var geo=(opts&&opts.geo)?opts.geo:"";var refresh=(opts&&opts.refresh&&opts.refresh>=15000)?opts.refresh:60000;var callback=(opts&&opts.callback)?opts.callback:null;var geo_arg=(geo)?"&geocode="+encodeURIComponent(geo):"";$.ajax({url:"http://search.twitter.com/search.json?lang=en&q="+encodeURIComponent(query)+geo_arg+"&callback=?",dataType:"json",success:function(data){var count=1;$("#"+element).empty();$.each(data.results,function(i,twit){if(!twit.to_user_id){var url=twit.text.match(/http:\/\/.*?\/(\w|\/)+/);if(url&&url[0].length>30)
return true;var linked_text=twit.text
.replace(/(http:\/\/.*?\/(\w|\/)+)/,"<a href='$1'>$1</a>")
.replace(/( @\w+)/,"<a href='http://twitter.com/$1'>$1</a>");var dt=twit.created_at.split(" ");var date=new Date(dt[2]+" "+dt[1]+" "+dt[3]+" "+dt[4]+" "+dt[5]);$('<li/>')
.attr('id',twit.id)
.append($('<span/>')
.addClass("status")
.html(linked_text))
.append('<br/>')
.append($('<span/>')
.addClass("created")
.html(get_relative_age_str(date)+' by <a href="http://twitter.com/'+twit.from_user+'">@'+twit.from_user+'</a>')
.css('color','gray')
.css('font-style','italic'))
.appendTo("#"+element);if(count++==show_num)return false;}});$("#"+element+" li:last-child").addClass("last");if(!callback)
setTimeout('Twitter_Widget.search("'+element+'", "'+query+'", "'+show_num+'", {geo:"'+geo+'",refresh:"'+refresh+'"})',refresh);},complete:callback});}};}();
