var last_twid='';var last_twid_older='';var last_index=0;var counter_new_tweets=0;var Twits=Array();var twitts_per_page=3;var pages_at_start=5;var total_twitts=twitts_per_page*pages_at_start;var first_time=true;var twitter_timer;var last_len=0;var twitter_manual_search=false;var tags_news_association;var tags_news_assoc;function twitter_set_defaults(){clearTimeout(twitter_timer);twitter_manual_search=true;search_tw_tag=D.get('search_tag').value;search_tw_tag=search_tw_tag.replace(/^\s*|\s*$/g,'');last_twid='';last_twid_older='';last_index=0;counter_new_twitts=0;Twits=Array();first_time=true;last_len=0;}
function get_new_tweets(twobj)
{var got_error=false;if(!twobj)
{got_error=true;}
if(!got_error)
{var results=twobj.results;if(results.length)
{last_twid=last_twid_older=results[0].id;for(var i=(results.length-1);i>=0;i--)
{Twits.unshift(results[i]);}
if(first_time)
{if(document.getElementById('twitter_box').innerHTML==''||document.getElementById('twitter_box').innerHTML=='&nbsp;'||document.getElementById('twitter_box').innerHTML=='loading...')
{var twitLabel=' On Twitter:';var twitLabelWidth='90px';if(typeof search_tw_authname!=='undefined'&&search_tw_authname){twitLabel=search_tw_authname+' On Twitter:';twitLabelWidth='275px';}
document.getElementById('twitter_box').innerHTML='<div id="twitter_content"><div id="twitter_header"><div id="twitterord" style="text-align: right; float: right; width: 200px; display: inline;"><span style="" id="twitter_counter">&nbsp;</span><span style="" id="twitter_pagination">&nbsp;</span></div><div style="clear: both"></div></div><div id="twitter_entries"></div></div><div style="clear:both"></div>';}
first_time=false;render_tweets_page(1,true);}
else
{counter_new_tweets=counter_new_tweets+results.length;if(counter_new_tweets>0)
{update_fade_inout('twitter_counter',counter_new_tweets+'+ <a href="javascript:render_tweets_page(1,true)">refresh</a> | ');}}}else{if(twitter_manual_search){update_fade_inout('twitter_counter','');update_fade_inout('twitter_pagination',pagination_tweets(1,1));update_fade_inout('twitter_entries','Nothing were found');}}}
twitter_timer=setTimeout("new_twitter_call(\""+search_tw_tag+"\", \""+last_twid+"\")",20000);}
function new_twitter_call(tag,last_twid)
{var q='http://search.twitter.com/search.json?q='+tag+'+-filter%3Alinks&callback=get_new_tweets&lang=en&rpp='+total_twitts;if(last_twid!='')
{q+='&since_id='+last_twid;}
var script=document.createElement('script');script.setAttribute('src',q);script.setAttribute('type','text/javascript');document.getElementsByTagName('head')[0].appendChild(script);}
function render_tweets_page(page,refresh)
{if(refresh)
{update_fade_inout('twitter_counter','');last_len=Twits.length;counter_new_tweets=0;}
tweets='';var curr_len=Twits.length;twarr=Twits.slice(curr_len-last_len);var ftw=(page-1)*twitts_per_page;var ltw=ftw+twitts_per_page-1;if(ltw>=last_len)
{ltw=last_len-1;}
var date_time=new Date();var current_time=(Math.ceil((date_time.getTime()/1000))+(date_time.getTimezoneOffset()*60));for(var c=ftw;c<=ltw;c++)
{var tweetAssociation='';if(tags_news_association==true){for(var tag in tags_news_assoc){if(twarr[c].text.match(eval('/('+tag.replace(' ','|')+')/i'))){var link=tags_news_assoc[tag].link;var image_src=tags_news_assoc[tag].image_url;var title=tags_news_assoc[tag].title;tweetAssociation='<a href="'+link+'"><img src="'+image_src+'" title="'+title+'" border="0" style="position:relative;bottom:5px;"></a>';}}}
var last=(c==ltw)?'last':'';var source=twarr[c].source.replace(/&lt;/gi,'<').replace(/&gt;/gi,'>').replace(/&quot;/gi,'"').replace(/&amp;/gi,'&');var current_date=new Date();var twitt_created_at=new Date(twarr[c].created_at);var minutes_passed=Math.floor((current_date-twitt_created_at)/1000/60);if(minutes_passed==0){minutes_passed='less than a minute';}else if(minutes_passed==1){minutes_passed+=' minute';}else if(minutes_passed>1&&minutes_passed<60){minutes_passed+=' minutes';}else if(minutes_passed>=60&&minutes_passed<1440){minutes_passed=Math.floor(minutes_passed/60);if(minutes_passed==1){minutes_passed+=' hour';}else{minutes_passed+=' hours';}}else if(minutes_passed>=1440){minutes_passed=Math.floor(minutes_passed/1440);if(minutes_passed==1){minutes_passed+=' day';}else{minutes_passed+=' days';}}
tweets+='<div class="single_twitt">';tweets+='  <div class="twitter_left_part">';tweets+='    <div>';tweets+='      <img src="'+twarr[c].profile_image_url+'" width="48" height="48">';tweets+='    </div>';tweets+='  </div>';tweets+='  <div class="twitter_content">';tweets+='    <a rel="nofollow" href="http://twitter.com/'+twarr[c].from_user+'/status/'+twarr[c].id+'">'+twarr[c].from_user+'</a>';tweets+=': '+twarr[c].text+'<div class="twitt_status">'+minutes_passed+' ago from <span class="twitt_source">'+source+'</span></div>';tweets+='  </div>'
tweets+='  <div class="twitter_right_part">';tweets+='    <div>';tweets+=tweetAssociation;tweets+='    </div>';tweets+='  </div>';tweets+='</div>';tweets+='<div class="twitter_seperator '+last+'"/></div>';}
var pagination=pagination_tweets(page,last_len);document.getElementById('twitter_pagination').innerHTML=pagination;update_fade_inout('twitter_entries',tweets);}
function pagination_tweets(page,total)
{var pagination='Pages: ';var epsilon=5;var per_page=twitts_per_page;if(1<(page-epsilon)){pagination+='<a href="javascript:render_tweets_page(1);">1</a> ';if(1<(page-epsilon-1)){pagination+='... ';}}
var pages=Math.ceil(total/per_page);var first=page-epsilon;if(first<1){first=1;}
var last=page+epsilon;if(last>pages){last=pages;}
for(var i=first;i<=last;i++){var p=(i-1)*4;if(i==page){pagination+=i+' ';}else{pagination+='<a href="javascript:render_tweets_page('+i+');">'+i+'</a> ';}}
if((page+epsilon)<pages){if((page+epsilon+1)<pages){pagination+='... ';}
pagination+='<a href="javascript:render_tweets_page('+pages+');">'+pages+'</a> ';}
return pagination;}
function update_fade_inout(id,msg)
{var fadeOut=new YAHOO.util.Anim(id,{opacity:{to:0}},0.5);var fadeIn=function(type,args){document.getElementById(id).innerHTML=msg;if(!(id=='twitter_counter'&&msg=='')){var fadeIn=new YAHOO.util.Anim(id,{opacity:{to:1}},0.5);fadeIn.animate();}};fadeOut.onComplete.subscribe(fadeIn);fadeOut.animate();}
var HuffPoTwitter=function(name,container)
{this.Name=((name==undefined)?'':name);this.SearchTag='';this.MaxResultsNumber=10;this.LastTweetID='';this.Twits=Array();this.TwitterTimer='';this.FirstCallBackRun=true;this.HighlightTags=false;this.SearchAuthorTweetsOnly=false;this.TagsNewsAssociation=undefined;this.Container=((container==undefined)?'twitter_box':container);this.CounterNewTweets=0;this.TweetsPerPage=3;this.CallbackFunctionName=this.Name+'.CallBack';this.PaginatorId=undefined;this.CounterText=undefined;this.NarrowModuleID=undefined;this.ShowNoResultsFoundMessage=false;this.NarrowTitle='';this.FilterLinks=true;}
HuffPoTwitter.prototype.SetDefaults=function()
{clearTimeout(this.TwitterTimer);this.LastTweetID='';this.Twits=Array();this.FirstCallBackRun=true;this.CounterNewTweets=0;}
HuffPoTwitter.prototype.TwitterCall=function(search_tag,last_tweet_id,callback_function_name)
{if(this.TwitterTimer!='')
{clearTimeout(this.TwitterTimer);}
if(this.NarrowModuleID)
{var module=document.getElementById(this.NarrowModuleID);this.CounterText='%d+ <a href="javascript:'+this.Name+'.RenderTweetsPage(1,true)">refresh</a> ';module.innerHTML='';D.addClass(module,'r-column');D.addClass(module,'narrow_twitter_module')
var greenHeader=document.createElement('div');D.addClass(greenHeader,'mpbox-green-title');if(this.NarrowTitle.length){greenHeader.innerHTML=this.NarrowTitle;if(this.NarrowTitle.length>25){greenHeader.style.fontSize="16px";}}else{greenHeader.innerHTML='Live from Twitter';}
greenHeader.style.fontWeight='bold';var wrapper=document.createElement('div');D.addClass(wrapper,'mpbox-green');wrapper.setAttribute('id','twitter_module_wrapper');wrapper.style.paddingTop='10px';var searchForm='';searchForm+='<div id="twitter_search_header">';searchForm+='<form onSubmit="SetDefaults(twitter); return false;" id="featured_twitter_form">';searchForm+='<table>';searchForm+='  <tr>';searchForm+='    <td valign="middle"><input id="twitter_search_input" class="twitter_narrow_input" type="text" onblur="addTwitterImg(this);" onfocus="clearSearchFld(this);" value=""/></td>';searchForm+='    <td valign="middle"><input type="image" value="Search" src="/images/header/button-search.gif" style="margin-bottom: 10px;vertical-align:middle;"/></td>';searchForm+='  </tr>';searchForm+='</table>';searchForm+='</form>';searchForm+='</div>';var narrowModule=searchForm;narrowModule+='<div id="twitter_box">';narrowModule+='   <div id="twitter_content">';narrowModule+='       <div id="twitter_entries"></div>';narrowModule+='       <div id="twitter_top_links"></div>';narrowModule+='       <div id="twitterord">';narrowModule+='           <span id="twitter_counter"></span>';narrowModule+='           <span id="twitter_pagination">&nbsp;</span>';narrowModule+='       </div>';narrowModule+='   </div>';narrowModule+='   <div style="clear:both"></div>';narrowModule+='</div>'
wrapper.innerHTML=narrowModule;module.appendChild(wrapper);module.insertBefore(greenHeader,wrapper);$('twitter_counter').style.padding='0';$('twitter_counter').style.margin='0';$('twitter_counter').style.backgroundColor='#FFF';$('twitter_entries').style.margin='0';this.NarrowModuleID=undefined;}
this.SearchTag=((search_tag==undefined)?this.SearchTag:search_tag);if(this.SearchAuthorTweetsOnly==true&&/^@[A-Za-z0-9_]+$/.test(this.SearchTag)){this.SearchTag='from:'+this.SearchTag.substr(1);}
var filter='';if(this.FilterLinks){filter='+-filter%3Alinks';}
this.LastTweetID=((last_tweet_id==undefined)?this.LastTweetID:last_tweet_id);this.CallbackFunctionName=((callback_function_name==undefined)?this.CallbackFunctionName:callback_function_name);var query='http://search.twitter.com/search.json?q='+this.SearchTag+filter+'&callback='+this.CallbackFunctionName+'&lang=en&rpp='+this.MaxResultsNumber.toString();if(this.LastTweetID!='')
{query+='&since_id='+this.LastTweetID;}
var script=document.createElement('script');script.setAttribute('src',query);script.setAttribute('type','text/javascript');document.getElementsByTagName('head')[0].appendChild(script);}
HuffPoTwitter.prototype.CallBack=function(twitter_object)
{var got_error=false;if(!twitter_object)
{got_error=true;}
if(!got_error)
{var results=twitter_object.results;if(results.length)
{this.LastTweetID=results[0].id;for(i=(results.length-1);i>=0;i--)
{this.Twits.unshift(results[i]);}
if(this.FirstCallBackRun)
{if(document.getElementById(this.Container)&&(document.getElementById(this.Container).innerHTML==''||document.getElementById(this.Container).innerHTML=='&nbsp;'||document.getElementById(this.Container).innerHTML=='loading...'))
{var twitter_content='';twitter_content='<div id="twitter_content">';twitter_content+='	<div id="twitter_header">';twitter_content+='		    <span id="twitter_last_created_at"></span>';twitter_content+='		    <span id="twitter_counter"></span>';twitter_content+='            <span style="float:right" id="twitter_pagination">&nbsp;</span>';twitter_content+='	</div>';twitter_content+='	<div id="twitter_entries"></div>';twitter_content+='</div>';twitter_content+='<div style="clear:both"></div>';document.getElementById(this.Container).innerHTML=twitter_content;}
this.FirstCallBackRun=false;if(this.PaginatorId){this.RenderTweetsPage(1,true);}else{this.RenderTweets(true);}}
else
{this.CounterNewTweets=this.CounterNewTweets+results.length;if(this.CounterNewTweets>0)
{var counter_text=' | '+this.CounterNewTweets+'+ <a href="javascript:'+this.Name+'.RenderTweets(true)">refresh</a>';if(this.CounterText){counter_text=this.CounterText.replace('%d',this.CounterNewTweets);}
update_fade_inout('twitter_counter',counter_text);}}}
else
{if(''==this.LastTweetID)
{update_fade_inout('twitter_entries','There is no info on Twitter for this entry for that keyword');if(this.PaginatorId)
{update_fade_inout(this.PaginatorId,'Pages: 1');}}
if(this.FirstCallBackRun&&this.ShowNoResultsFoundMessage)
{document.getElementById(this.Container).innerHTML='<i>Sorry, No results found by your request. Try another keyword.</i>';}}}
if(!got_error&&!(this.FirstCallBackRun&&twitter_object.results.length==0))
{this.TwitterTimer=this.setTwitterTimeout(20000,'TwitterCall',this.SearchTag,this.LastTweetID);}}
HuffPoTwitter.prototype.setTwitterTimeout=function(msec,method){var that=this;var args=Array.prototype.slice.apply(arguments,[2]);if(typeof method==='string'){method=that[method];}
return setTimeout(function(){method.apply(that,args);},msec);}
HuffPoTwitter.prototype.RenderTweetsPage=function(page,refresh)
{if(refresh)
{update_fade_inout('twitter_counter','');this.LastLen=this.Twits.length;this.CounterNewTweets=0;}
tweets='';var curr_len=this.Twits.length;twarr=this.Twits.slice(curr_len-this.LastLen);var ftw=(page-1)*this.TweetsPerPage;var ltw=ftw+this.TweetsPerPage-1;if(ltw>=this.LastLen)
{ltw=this.LastLen-1;}
var date_time=new Date();var current_time=(Math.ceil((date_time.getTime()/1000))+(date_time.getTimezoneOffset()*60));var shown_images=new Array();for(var c=ftw;c<=ltw;c++)
{var tweetAssociation=undefined;if(this.TagsNewsAssociation){for(var tag in this.TagsNewsAssociation){if(twarr[c].text.match(eval('/('+tag.replace(' ','|')+')/i'))){var link=this.TagsNewsAssociation[tag].link;var image_src=this.TagsNewsAssociation[tag].image_url;var title=this.TagsNewsAssociation[tag].title;if(shown_images&&!shown_images[image_src]){tweetAssociation='<a href="'+link+'"><img src="'+image_src+'" title="'+title+'" border="0"></a>';}
shown_images[image_src]=1;}}}
var last=(c==ltw)?'last':'';var first=(c==ftw)?'first':'';var source=twarr[c].source.replace(/&lt;/gi,'<').replace(/&gt;/gi,'>').replace(/&quot;/gi,'"').replace(/&amp;/gi,'&');var current_date=new Date();var twitt_created_at=new Date(twarr[c].created_at);var minutes_passed=Math.floor((current_date-twitt_created_at)/1000/60);if(minutes_passed<=0){minutes_passed='less than a minute';}else if(minutes_passed==1){minutes_passed+=' minute';}else if(minutes_passed>1&&minutes_passed<60){minutes_passed+=' minutes';}else if(minutes_passed>=60&&minutes_passed<1440){minutes_passed=Math.floor(minutes_passed/60);if(minutes_passed==1){minutes_passed+=' hour';}else{minutes_passed+=' hours';}}else if(minutes_passed>=1440){minutes_passed=Math.floor(minutes_passed/1440);if(minutes_passed==1){minutes_passed+=' day';}else{minutes_passed+=' days';}}
tweets+='<div class="single_twitt '+first+'">';tweets+='  <div class="twitter_left_part">';tweets+='    <div>';tweets+='      <img src="'+twarr[c].profile_image_url+'" width="48" height="48">';tweets+='    </div>';tweets+='  </div>';if(tweetAssociation){tweets+='  <div class="twitter_right_part">';tweets+='    <div>';tweets+=tweetAssociation;tweets+='    </div>';tweets+='  </div>';}
var text=twarr[c].text;if(this.HighlightTags){var pattern=this.SearchTag.replace(/ /g,'|');text=twarr[c].text.replace(eval("/("+pattern+")/gi"),'<span class="highlight_twitt_word">$1</span>');}
if(this.FilterLinks!=true){text=linkify.clean(text);}
tweets+='  <div class="twitter_content">';tweets+='    <a rel="nofollow" href="http://twitter.com/'+twarr[c].from_user+'/status/'+twarr[c].id+'">'+twarr[c].from_user+'</a>';tweets+=': '+text+'<div class="twitt_status">'+minutes_passed+' ago from <span class="twitt_source">'+source+'</span></div>';tweets+='  </div>'
tweets+='</div>';tweets+='<div style="clear:both"></div>';tweets+='<hr class="twitter_seperator"/>'}
var pagination=this.PaginationTweets(page,this.LastLen);document.getElementById(this.PaginatorId?this.PaginatorId:'twitter_pagination').innerHTML=pagination;update_fade_inout('twitter_entries',tweets);}
HuffPoTwitter.prototype.RenderTweets=function(refresh)
{if(refresh)
{update_fade_inout('twitter_counter','');this.CounterNewTweets=0;}
var left_tweets='<div style="width: 50%; float: left;"><ul style="border-top:1px dashed #CCCCCC; list-style-type:none; margin:0px 5px; padding:0;">';var right_tweets='<div style="width: 50%; float: right;"><ul style="border-top:1px dashed #CCCCCC; list-style-type:none; margin:0px 5px; padding:0;">';var tweets='';var tmp='';var tw_arr=this.Twits.slice(0,this.MaxResultsNumber);var created_at='';var created_at_string='';var date_time=new Date();var current_time=(Math.ceil((date_time.getTime()/1000))+(date_time.getTimezoneOffset()*60));var i=0;for(i=0;i<tw_arr.length;i++)
{created_at=((Date.parse(tw_arr[i].created_at)/1000)+(date_time.getTimezoneOffset()*60));created_at_string=this.TimeDiff(created_at,current_time);created_at_string+=' ago';tmp='<li style="border-bottom:1px dashed #CCCCCC; margin:0; overflow:hidden; padding:10px 5px;">';tmp+='	<div style="font-size:12px; line-height:15px; margin-bottom:5px;">'
tmp+='		<a rel="nofollow" href="http://twitter.com/'+tw_arr[i].from_user+'/status/'+tw_arr[i].id+'">';tmp+=tw_arr[i].from_user;tmp+='		</a>: '+tw_arr[i].text+'</span>'
tmp+='	</div>'
tmp+='	<div style="color:#777777; font-size:11px;">';tmp+='		'+created_at_string+' &middot; <a rel="nofollow" href="http://twitter.com/'+tw_arr[i].from_user+'/status/'+tw_arr[i].id+'">View Tweet</a>';tmp+='	</div>';tmp+='</li>'
if((i%2)==0)
{left_tweets+=tmp;}
else
{right_tweets+=tmp;}}
left_tweets+='</ul></div>';right_tweets+='</ul></div>';tweets+=left_tweets+right_tweets+'<div style="clear: both;"></div>';var number_string='';switch(i)
{case 1:number_string='1st';break;case 2:number_string='2nd';break;case 3:number_string='3rd';break;default:number_string=i+'th';}
created_at_string=number_string+' Tweet: '+created_at_string;update_fade_inout('twitter_last_created_at',created_at_string);update_fade_inout('twitter_entries',tweets);}
HuffPoTwitter.prototype.PaginationTweets=function(page,total)
{var pagination='Pages: ';var epsilon=5;var per_page=this.TweetsPerPage;if(1<(page-epsilon)){pagination+='<a href="javascript:'+this.Name+'.RenderTweetsPage(1);">1</a> ';if(1<(page-epsilon-1)){pagination+='... ';}}
var pages=Math.ceil(total/per_page);var first=page-epsilon;if(first<1){first=1;}
var last=page+epsilon;if(last>pages){last=pages;}
for(var i=first;i<=last;i++){var p=(i-1)*4;if(i==page){pagination+=i+' ';}else{pagination+='<a href="javascript:'+this.Name+'.RenderTweetsPage('+i+');">'+i+'</a> ';}}
if((page+epsilon)<pages){if((page+epsilon+1)<pages){pagination+='... ';}
pagination+='<a href="javascript:'+this.Name+'.RenderTweetsPage('+pages+');">'+pages+'</a> ';}
return pagination;}
HuffPoTwitter.prototype.TimeDiff=function(time_in_past,time_now)
{var diff=time_now-time_in_past;var result='';if(diff<20)
{result='less then 20 seconds';}
else if(diff<=30)
{result='half a minute';}
else if(diff<60)
{result='less then minute';}
else if(diff>=60&&diff<3600)
{minutes=Math.floor(diff/60);result=minutes+' minute'+((minutes==1)?' ':'s ');}
else if(diff>=3600&&diff<24*3600)
{hours=Math.floor(diff/3600);result='about '+hours+' hour'+((hours==1)?' ':'s ');}
else
{days=Math.floor(diff/86400);result='about '+days+' day'+((days==1)?' ':'s ');}
return result;}
function clearSearchFld(input_f)
{input_f.style.backgroundImage='none';}
function addTwitterImg(input_f)
{if(input_f.value=='')
{input_f.style.backgroundRepeat='no-repeat';input_f.style.backgroundImage='url(/images/twitter_custom_search_watermark.png)';}}
function SetDefaults(obj){obj.SetDefaults();var input_fld=D.get('twitter_search_input');if(!input_fld){input_fld=D.get('search_tag');}
if(input_fld){obj.TwitterCall(input_fld.value,'','twitter_callback_search');}else{return false;}}
window.linkify=function(){var entities={'"':'&quot;','&':'&amp;','<':'&lt;','>':'&gt;'};return{"at":function(t){return t.replace(/(^|[^\w]+)\@([a-zA-Z0-9_]{1,15})/g,function(m,m1,m2){return m1+'@<a href="http://twitter.com/'+m2+'">'+m2+'</a>';});},"hash":function(t){return t.replace(/(^|[^\w'"]+)\#([a-zA-Z0-9_]+)/g,function(m,m1,m2){return m1+'#<a href="http://search.twitter.com/search?q=%23'+m2+'">'+m2+'</a>';});},"clean":function(tweet){return this.hash(this.at(HuffPoUtil.LinkifyTextLinks(tweet)));}};}();
