;(function($){$.fn.twitterSearch=function(options){if(typeof options=='string')
options={term:options};return this.each(function(){var grabFlag=false,grabbing=false,$frame=$(this),text,$text,$title,$bird,$cont,height,paused=false,opts=$.extend(true,{},$.fn.twitterSearch.defaults,options||{},$.metadata?$frame.metadata():{});opts.formatter=opts.formatter||$.fn.twitterSearch.formatter;opts.filter=opts.filter||$.fn.twitterSearch.filter;if(!opts.applyStyles){for(var css in opts.css)
opts.css[css]={};}
if(opts.title===null)
opts.title=opts.term;opts.title=opts.title||'';text=opts.titleLink?('<a href="'+opts.titleLink+'">'+opts.title+'</a>'):('<span>'+opts.title+'</span>');$text=$(text);if(opts.titleLink)
$text.css(opts.css['titleLink']);$title=$('<div class="twitterSearchTitle"></div>').append($text).appendTo($frame).css(opts.css['title']);if(opts.bird){$bird=$('<img class="twitterSearchBird" src="'+opts.birdSrc+'" />').appendTo($title).css(opts.css['bird']);if(opts.birdLink)
$bird.wrap('<a href="'+opts.birdLink+'"></a>');}
$cont=$('<div class="twitterSearchContainter"></div>').appendTo($frame).css(opts.css['container']);cont=$cont[0];if(opts.colorExterior)
$title.css('background-color',opts.colorExterior);if(opts.colorInterior)
$cont.css('background-color',opts.colorInterior);$frame.css(opts.css['frame']);if(opts.colorExterior)
$frame.css('border-color',opts.colorExterior);height=$frame.innerHeight()-$title.outerHeight();$cont.height(height);if(opts.pause)
$cont.hover(function(){paused=true;},function(){paused=false;});$('<div class="twitterSearchLoading">Loading tweets..</div>').css(opts.css['loading']).appendTo($cont);grabTweets();function grabTweets(){var url=opts.url+opts.term;grabFlag=false;grabbing=true;$.getJSONP({url:url,timeout:30000,error:function(xhr,status,e){failWhale(e);},complete:function(){grabbing=false;if(opts.refreshSeconds)
setTimeout(regrab,opts.refreshSeconds*1000);},success:function(json){if(json.error){failWhale(json.error);return;}
$cont.fadeOut('fast',function(){$cont.empty();$.each(json.results,function(i){if(!opts.filter.call(opts,this))
return;var $img,$text,w,tweet=opts.formatter(this,opts),$tweet=$(tweet);$tweet.css(opts.css['tweet']);$img=$tweet.find('.twitterSearchProfileImg').css(opts.css['img']);$tweet.find('.twitterSearchUser').css(opts.css['user']);$tweet.find('.twitterSearchTime').css(opts.css['time']);$tweet.find('a').css(opts.css['a']);$tweet.appendTo($cont);$text=$tweet.find('.twitterSearchText').css(opts.css['text']);if(opts.avatar){w=$img.outerWidth()+parseInt($tweet.css('paddingLeft'));$text.css('paddingLeft',w);}});$cont.fadeIn('fast');if(json.results.length<2){if(opts.refreshSeconds)
setTimeout(grabTweets,opts.refreshSeconds*1000);return;}
setTimeout(go,opts.timeout);});}});};function regrab(){grabFlag=true;}
function failWhale(msg){var $fail=$('<div class="twitterSearchFail">'+msg+'</div>').css(opts.css['fail']);$cont.empty().append($fail);};function go(){if(paused||grabbing){setTimeout(go,500);return;}
var h,$el=$cont.children(':first'),el=$el[0];$el.animate(opts.animOut,opts.animOutSpeed,function(){h=$el.outerHeight();$el.animate({marginTop:-h},opts.animInSpeed,function(){$el.css({marginTop:0,opacity:1});/*@cc_on
try{el.style.removeAttribute('filter');}
catch(smother){}
@*/$el.css(opts.css['tweet']).show().appendTo($cont);setTimeout(grabFlag?grabTweets:go,opts.timeout);});});}});};$.fn.twitterSearch.filter=function(tweet){return true;};$.fn.twitterSearch.formatter=function(json,opts){var str,pretty,text=json.text;if(opts.anchors){text=json.text.replace(/(http:\/\/\S+)/g,'<a href="$1">$1</a>');text=text.replace(/\@(\w+)/g,'<a href="http://twitter.com/$1">@$1</a>');}
str='<div class="twitterSearchTweet">';if(opts.avatar)
str+='<img class="twitterSearchProfileImg" src="'+json.profile_image_url+'" />';str+='<div><span class="twitterSearchUser"><a href="http://www.twitter.com/'+json.from_user+'/status/'+json.id+'">'+json.from_user+'</a></span>';pretty=prettyDate(json.created_at);if(opts.time&&pretty)
str+=' <span class="twitterSearchTime">('+pretty+')</span>'
str+='<div class="twitterSearchText">'+text+'</div></div></div>';return str;};$.fn.twitterSearch.defaults={url:'http://search.twitter.com/search.json?callback=?&q=',anchors:true,animOutSpeed:500,animInSpeed:500,animOut:{opacity:0},applyStyles:true,avatar:true,bird:true,birdLink:false,birdSrc:'http://cloud.github.com/downloads/malsup/twitter/tweet.gif',colorExterior:null,colorInterior:null,filter:null,formatter:null,pause:false,refreshSeconds:0,term:'',time:true,timeout:4000,title:null,titleLink:null,css:{a:{textDecoration:'none',color:'#3B5998'},bird:{width:'50px',height:'20px',position:'absolute',left:'-30px',top:'-20px',border:'none'},container:{overflow:'hidden',backgroundColor:'#eee',height:'100%'},fail:{background:'#6cc5c3 url(http://cloud.github.com/downloads/malsup/twitter/failwhale.png) no-repeat 50% 50%',height:'100%',padding:'10px'},frame:{border:'10px solid #C2CFF1',borderRadius:'10px','-moz-border-radius':'10px','-webkit-border-radius':'10px'},tweet:{padding:'5px 10px',clear:'left'},img:{'float':'left',margin:'5px',width:'48px',height:'48px'},loading:{padding:'20px',textAlign:'center',color:'#888'},text:{},time:{fontSize:'smaller',color:'#888'},title:{backgroundColor:'#C2CFF1',margin:0,padding:'0 0 5px 0',textAlign:'center',fontWeight:'bold',fontSize:'large',position:'relative'},titleLink:{textDecoration:'none',color:'#3B5998'},user:{fontWeight:'bold'}}};$.getJSONP=function(s){s.dataType='jsonp';$.ajax(s);var $script=$(document.getElementsByTagName('head')[0].firstChild);var url=$script.attr('src')||'';var cb=(url.match(/callback=(\w+)/)||[])[1];if(!cb)
return;var t=0,cbFn=window[cb];$script[0].onerror=function(e){$script.remove();handleError(s,{},"error",e);clearTimeout(t);};if(!s.timeout)
return;window[cb]=function(json){clearTimeout(t);cbFn(json);cbFn=null;};t=setTimeout(function(){$script.remove();handleError(s,{},"timeout");if(cbFn)
window[cb]=function(){};},s.timeout);function handleError(s,o,msg,e){($.ajax.handleError||$.handleError)(s,o,msg,e);}};function prettyDate(time){var date=new Date((time||"").replace(/-/g,"/").replace(/TZ/g," ")),diff=(((new Date()).getTime()-date.getTime())/1000),day_diff=Math.floor(diff/86400);if(isNaN(day_diff)||day_diff<0||day_diff>=31)
return;var v=day_diff==0&&(diff<60&&"just now"||diff<120&&"1 minute ago"||diff<3600&&Math.floor(diff/60)+" minutes ago"||diff<7200&&"1 hour ago"||diff<86400&&Math.floor(diff/3600)+" hours ago")||day_diff==1&&"Yesterday"||day_diff<7&&day_diff+" days ago"||day_diff<31&&Math.ceil(day_diff/7)+" weeks ago";if(!v)
window.console&&console.log(time);return v?v:'';}})(jQuery);
