/*
 DMXzone Twitter Widget
 Version: 1.0.0
 (c) 2011 DMXzone.com
 @build 08-11-2011 19:07:09
*/
(function(c){c.fn.dmxTwitter=function(i){function e(b,a){if(typeof b==="string"){var c=b,e;for(e in a)var f=a[e],c=c.replace(RegExp("{"+e+"}","g"),f===null?"":f);return c}else return b(a)}function f(b,a){return function(){var e=[];this.each(function(){e.push(this.replace(b,a))});return c(e)}}function k(b){var a=parseInt(((arguments.length>1?arguments[1]:new Date).getTime()-b)/1E3,10),c="",c=a<60?a+" seconds ago":a<120?"a minute ago":a<2700?parseInt(a/60,10).toString()+" minutes ago":a<7200?"an hour ago":
a<86400?""+parseInt(a/3600,10).toString()+" hours ago":a<172800?"a day ago":parseInt(a/86400,10).toString()+" days ago";return"about "+c}function l(){var c="https:"==document.location.protocol?"https:":"http:",a=b.fetch===null?b.count:b.fetch;if(b.list)return c+"//"+b.twitter_api_url+"/1/"+b.username[0]+"/lists/"+b.list+"/statuses.json?page="+b.page+"&per_page="+a+"&callback=?&suppress_response_codes=1";else if(b.favorites)return c+"//"+b.twitter_api_url+"/favorites/"+b.username[0]+".json?page="+
b.page+"&count="+a+"&callback=?&suppress_response_codes=1";else if(b.query===null&&b.username.length==1)return c+"//"+b.twitter_api_url+"/1/statuses/user_timeline.json?screen_name="+b.username[0]+"&count="+a+(b.retweets?"&include_rts=1":"")+"&page="+b.page+"&callback=?&suppress_response_codes=1";else{var e=b.query||"from:"+b.username.join(" OR from:");return c+"//"+b.twitter_search_url+"/search.json?&q="+encodeURIComponent(e)+"&rpp="+a+"&page="+b.page+"&callback=?&suppress_response_codes=1"}}function g(b,
a){return a?"user"in b?b.user.profile_image_url_https:g(b,!1):b.profile_image_url||b.user.profile_image_url}function m(d){var a={};a.item=d;a.source=d.source;a.screen_name=d.from_user||d.user.screen_name;a.avatar_size=b.avatar_size;a.avatar_url=g(d,document.location.protocol==="https:");a.retweet=typeof d.retweeted_status!="undefined";a.tweet_time=Date.parse(d.created_at.replace(/^([a-z]{3})( [a-z]{3} \d\d?)(.*)( \d{4})$/i,"$1,$2$4$3"));a.join_text=b.join_text=="auto"?d.text.match(/^(@([A-Za-z0-9-_]+)) .*/i)?
b.auto_join_text_reply:d.text.match(h)?b.auto_join_text_url:d.text.match(/^((\w+ed)|just) .*/im)?b.auto_join_text_ed:d.text.match(/^(\w*ing) .*/i)?b.auto_join_text_ing:b.auto_join_text_default:b.join_text;a.tweet_id=d.id_str;a.twitter_base="http://"+b.twitter_url+"/";a.user_url=a.twitter_base+a.screen_name;a.tweet_url=a.user_url+"/status/"+a.tweet_id;a.reply_url=a.twitter_base+"intent/tweet?in_reply_to="+a.tweet_id;a.retweet_url=a.twitter_base+"intent/retweet?tweet_id="+a.tweet_id;a.favorite_url=
a.twitter_base+"intent/favorite?tweet_id="+a.tweet_id;a.retweeted_screen_name=a.retweet&&d.retweeted_status.user.screen_name;a.tweet_relative_time=k(a.tweet_time);a.tweet_raw_text=a.retweet?"RT @"+a.retweeted_screen_name+" "+d.retweeted_status.text:d.text;a.tweet_text=c([a.tweet_raw_text]).linkUrl().linkUser().linkHash()[0];a.tweet_text_fancy=c([a.tweet_text]).makeHeart().capAwesome().capEpic()[0];a.user=e('<a class="dmxTwitter_user" href="{user_url}">{screen_name}</a>',a);a.join=b.join_text?e(' <span class="dmxTwitter_join">{join_text}</span> ',
a):" ";a.avatar=a.avatar_size?e('<a class="dmxTwitter_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>',a):"";a.time=e('<span class="dmxTwitter_time"><a href="{tweet_url}" title="view tweet on twitter">{tweet_relative_time}</a></span>',a);a.text=e('<p class="dmxTwitter_text">{tweet_text_fancy}</p>',a);a.reply_action=e('<a class="dmxTwitter_action dmxTwitter_reply" href="{reply_url}">reply</a>',
a);a.retweet_action=e('<a class="dmxTwitter_action dmxTwitter_retweet" href="{retweet_url}">retweet</a>',a);a.favorite_action=e('<a class="dmxTwitter_action dmxTwitter_favorite" href="{favorite_url}">favorite</a>',a);return a}var b=c.extend({width:null,height:null,username:null,list:null,favorites:!1,query:null,avatar_size:32,count:3,fetch:null,page:null,retweets:!1,intro_text:null,outro_text:null,join_text:"auto",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:"Loading tweets ...",refresh_interval:60,twitter_url:"twitter.com",twitter_api_url:"api.twitter.com",twitter_search_url:"search.twitter.com",template:"{avatar}{time} {join}{text}",comparator:function(b,a){return a.tweet_time-b.tweet_time},filter:function(){return!0}},i),h=/\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`!()\[\]{};:'".,<>?\u00ab\u00bb""'']))/gi;
c.extend({dmxTwitter:{t:e}});c.fn.extend({linkUrl:f(h,function(b){return'<a href="'+(/^[a-z]+:/i.test(b)?b:"http://"+b)+'">'+b+"</a>"}),linkUser:f(/(^|[\W])@(\w+)/gi,'$1@<a href="http://'+b.twitter_url+'/$2">$2</a>'),linkHash:f(/(?:^| )[\#]+([\w\u002e\u002d\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff\u0600-\u06ff]+)/gi,' <a href="http://'+b.twitter_search_url+"/search?q=&tag=$1&lang=all"+(b.username&&b.username.length==1&&!b.list?"&from="+b.username.join("%2BOR%2B"):"")+'">#$1</a>'),capAwesome:f(/\b([A|a]wesome)\b/gi,
'<span class="awesome">$1</span>'),capEpic:f(/\b([E|e]pic)\b/gi,'<span class="epic">$1</span>'),makeHeart:f(/(\u003C)+[3]/gi,"<tt class='heart'>&#x2665;</tt>")});return this.each(function(d,a){var f=b.height?isNaN(b.height)?c('<div id="dmxTwitterContainer" style="overflow:auto;width:100%;height:'+b.height+'"></div>').appendTo(a):c('<div id="dmxTwitterContainer" style="overflow:auto;width:100%;height:'+b.height+'px"></div>').appendTo(a):c('<div id="dmxTwitterContainer" style="overflow:auto;width:100%"></div>').appendTo(a);
b.width&&(isNaN(b.width)?c(a).css({width:b.width}):c(a).css({width:b.width+"px"}));var g=c('<ul class="dmxTwitter_list">').appendTo(f),h='<p class="dmxTwitter_intro">'+b.intro_text+"</p>",i='<p class="dmxTwitter_outro">'+b.outro_text+"</p>",j=c('<div class="dmxTwitter_loading">'+b.loading_text+"</div>");if(b.username&&typeof b.username=="string")b.username=[b.username];b.loading_text&&f.append(j);c(a).bind("tweet:load",function(){c.ajax({async:!0,type:"GET",url:l(),dataType:"json",timeout:15E3,success:function(d){d.error?
(c(".dmxTwitter_loading").remove(),d.error=="Not found"?c(a).append("<div class='dmxTwitter_error'>Username or user list were not found.</div>"):c(a).append("<div class='dmxTwitter_error'>"+d.error+"</div>")):(b.loading_text&&j.remove(),b.intro_text&&c("div#"+c(a).attr("id")+" p.dmxTwitter_intro").length===0&&f.before(h),g.empty(),d=c.map(d.results||d,m),d=c.grep(d,b.filter).sort(b.comparator).slice(0,b.count),g.append(c.map(d,function(a){return"<li>"+e(b.template,a)+"</li>"}).join("")).children("li:first").addClass("dmxTwitter_first").end().children("li:odd").addClass("dmxTwitter_even").end().children("li:even").addClass("dmxTwitter_odd"),
b.outro_text&&c("div#"+c(a).attr("id")+" p.dmxTwitter_outro").length===0&&f.after(i),c(a).trigger("loaded").trigger(d.length===0?"empty":"full"),b.refresh_interval&&window.setTimeout(function(){c(a).trigger("tweet:load")},1E3*b.refresh_interval),c(a).bind("empty",function(){c(this).append("No matching tweets found")}))},error:function(){c(".dmxTwitter_loading").remove();c(a).append("<div class='dmxTwitter_error'>An unknown error occurred.</div>")}})}).trigger("tweet:load")})}})(jQuery);

