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