(function(a){a.fn.tweet=function(c){var k=a.extend({username:null,list:null,favorites:false,query:null,avatar_size:null,count:3,fetch:null,page:1,retweets:true,intro_text:null,outro_text:null,join_text:null,auto_join_text_default:"i said,",auto_join_text_ed:"i",auto_join_text_ing:"i am",auto_join_text_reply:"i replied to",auto_join_text_url:"i was looking at",loading_text:null,refresh_interval:null,twitter_url:"twitter.com",twitter_api_url:"api.twitter.com",twitter_search_url:"search.twitter.com",template:"{avatar}{time}{join}{text}",comparator:function(m,l){return l.tweet_time-m.tweet_time},filter:function(l){return true}},c);var b=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>???????]))/gi;function j(n,o){if(typeof n==="string"){var l=n;for(var m in o){var p=o[m];l=l.replace(new RegExp("{"+m+"}","g"),p===null?"":p)}return l}else{return n(o)}}a.extend({tweet:{t:j}});function e(m,l){return function(){var n=[];this.each(function(){n.push(this.replace(m,l))});return a(n)}}a.fn.extend({linkUrl:e(b,function(m){var l=(/^[a-z]+:/i).test(m)?m:"http://"+m;return"<a target='_blank' href=\""+l+'">'+m+"</a>"}),linkUser:e(/@(\w+)/gi,"@<a target='_blank' href=\"http://"+k.twitter_url+'/$1">$1</a>'),linkHash:e(/(?:^| )[\#]+([\w\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff\u0600-\u06ff]+)/gi,' <a target="_blank" href="http://'+k.twitter_search_url+"/search?q=&tag=$1&lang=all"+((k.username&&k.username.length==1)?"&from="+k.username.join("%2BOR%2B"):"")+'">#$1</a>'),capAwesome:e(/\b(awesome)\b/gi,'<span class="awesome">$1</span>'),capEpic:e(/\b(epic)\b/gi,'<span class="epic">$1</span>'),makeHeart:e(/(&lt;)+[3]/gi,"<tt class='heart'>&#x2665;</tt>")});function i(l){return Date.parse(l.replace(/^([a-z]{3})( [a-z]{3} \d\d?)(.*)( \d{4})$/i,"$1,$2$4$3"))}function g(l){var n=(arguments.length>1)?arguments[1]:new Date();var o=parseInt((n.getTime()-l)/1000,10);var m="";if(o<60){m=o+" seconds ago"}else{if(o<120){m="a minute ago"}else{if(o<(45*60)){m=(parseInt(o/60,10)).toString()+" minutes ago"}else{if(o<(2*60*60)){m="an hour ago"}else{if(o<(24*60*60)){m=""+(parseInt(o/3600,10)).toString()+" hours ago"}else{if(o<(48*60*60)){m="a day ago"}else{m=(parseInt(o/86400,10)).toString()+" days ago"}}}}}}return"about "+m}function f(l){if(l.match(/^(@([A-Za-z0-9-_]+)) .*/i)){return k.auto_join_text_reply}else{if(l.match(b)){return k.auto_join_text_url}else{if(l.match(/^((\w+ed)|just) .*/im)){return k.auto_join_text_ed}else{if(l.match(/^(\w*ing) .*/i)){return k.auto_join_text_ing}else{return k.auto_join_text_default}}}}}function d(){var m=("https:"==document.location.protocol?"https:":"http:");var l=(k.fetch===null)?k.count:k.fetch;if(k.list){return m+"//"+k.twitter_api_url+"/1/"+k.username[0]+"/lists/"+k.list+"/statuses.json?page="+k.page+"&per_page="+l+"&callback=?"}else{if(k.favorites){return m+"//"+k.twitter_api_url+"/favorites/"+k.username[0]+".json?page="+k.page+"&count="+l+"&callback=?"}else{if(k.query===null&&k.username.length==1){return m+"//"+k.twitter_api_url+"/1/statuses/user_timeline.json?screen_name="+k.username[0]+"&count="+l+(k.retweets?"&include_rts=1":"")+"&page="+k.page+"&callback=?"}else{var n=(k.query||"from:"+k.username.join(" OR from:"));return m+"//"+k.twitter_search_url+"/search.json?&q="+encodeURIComponent(n)+"&rpp="+l+"&page="+k.page+"&callback=?"}}}}function h(l){var m={};m.item=l;m.source=l.source;m.screen_name=l.from_user||l.user.screen_name;m.avatar_size=k.avatar_size;m.avatar_url=l.profile_image_url||l.user.profile_image_url;m.retweet=typeof(l.retweeted_status)!="undefined";m.tweet_time=i(l.created_at);m.join_text=k.join_text=="auto"?f(l.text):k.join_text;m.tweet_id=l.id_str;m.twitter_base="http://"+k.twitter_url+"/";m.user_url=m.twitter_base+m.screen_name;m.tweet_url=m.user_url+"/status/"+m.tweet_id;m.reply_url=m.twitter_base+"intent/tweet?in_reply_to="+m.tweet_id;m.retweet_url=m.twitter_base+"intent/retweet?tweet_id="+m.tweet_id;m.favorite_url=m.twitter_base+"intent/favorite?tweet_id="+m.tweet_id;m.retweeted_screen_name=m.retweet&&l.retweeted_status.user.screen_name;m.tweet_relative_time=g(m.tweet_time);m.tweet_raw_text=m.retweet?("RT @"+m.retweeted_screen_name+" "+l.retweeted_status.text):l.text;m.tweet_text=a([m.tweet_raw_text]).linkUrl().linkUser().linkHash()[0];m.tweet_text_fancy=a([m.tweet_text]).makeHeart().capAwesome().capEpic()[0];m.user=j('<a class="tweet_user" target="_blank" href="{user_url}">{screen_name}</a>',m);m.join=k.join_text?j(' <span class="tweet_join">{join_text}</span> ',m):" ";m.avatar=m.avatar_size?j('<a class="tweet_avatar" target="_blank" href="{user_url}"><img src="{avatar_url}" height="{avatar_size}" width="{avatar_size}" alt="{screen_name}\'s avatar" title="{screen_name}\'s avatar" border="0"/></a>',m):"";m.time=j('<span class="tweet_time"><a target="_blank" href="{tweet_url}" title="view tweet on twitter">{tweet_relative_time}</a></span>',m);m.text=j('<span class="tweet_text">{tweet_text_fancy}</span>',m);m.reply_action=j('<a class="tweet_action tweet_reply" target="_blank" href="{reply_url}">reply</a>',m);m.retweet_action=j('<a class="tweet_action tweet_retweet" target="_blank" href="{retweet_url}">retweet</a>',m);m.favorite_action=j('<a class="tweet_action tweet_favorite" target="_blank" href="{favorite_url}">favorite</a>',m);return m}return this.each(function(m,p){var o=a('<ul class="tweet_list">').appendTo(p);var n='<p class="tweet_intro">'+k.intro_text+"</p>";var l='<p class="tweet_outro">'+k.outro_text+"</p>";var q=a('<p class="loading">'+k.loading_text+"</p>");if(k.username&&typeof(k.username)=="string"){k.username=[k.username]}if(k.loading_text){a(p).append(q)}a(p).bind("tweet:load",function(){a.getJSON(d(),function(r){if(k.loading_text){q.remove()}if(k.intro_text){o.before(n)}o.empty();var s=a.map(r.results||r,h);s=a.grep(s,k.filter).sort(k.comparator).slice(0,k.count);o.append(a.map(s,function(t){return"<li>"+j(k.template,t)+"</li>"}).join("")).children("li:first").addClass("tweet_first").end().children("li:odd").addClass("tweet_even").end().children("li:even").addClass("tweet_odd");if(k.outro_text){o.after(l)}a(p).trigger("loaded").trigger((s.length===0?"empty":"full"));if(k.refresh_interval){window.setTimeout(function(){a(p).trigger("tweet:load")},1000*k.refresh_interval)}})}).trigger("tweet:load")})}})(jQuery);
