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;;
	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=='carregando...')
			{
				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','Nada encontrado');
		}
	}
	}
	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+'&callback=get_new_tweets&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='menos de um minuto';
		}
		else if(minutes_passed==1)
		{
			minutes_passed+=' minuto';
		}
		else if(minutes_passed>1&&minutes_passed<60)
		{
			minutes_passed+=' minutos';
		}
		else if(minutes_passed>=60&&minutes_passed<1440)
		{
			minutes_passed=Math.floor(minutes_passed/60);
			if(minutes_passed==1)
			{
				minutes_passed+=' hora';
			}
			else
			{
				minutes_passed+=' horas';
			}
		}
		else if(minutes_passed>=1440)
		{
			minutes_passed=Math.floor(minutes_passed/1440);
			if(minutes_passed==1)
			{
				minutes_passed+=' dia';
			}
			else{minutes_passed+=' dias';}
		}
		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+' atr&aacute;s via <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='P&aacute;ginas: ';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.TopLinksId=undefined;
				this.NarrowModuleID=undefined;
				this._TopLinksIds=Array();
				this.ShowNoResultsFoundMessage=false;this.NarrowTitle='';
			}

			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)
{
	//search_tag = search_tag.replace(/\//g,"%2F");

	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);}

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+'&callback='+this.CallbackFunctionName+'&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);if(this.TopLinksId&&$(this.TopLinksId)){this.DisplayTopLinks();}}
HuffPoTwitter.prototype.DisplayTopLinks=function(){var links_ids='';YAHOO.util.Connect.asyncRequest('GET','/get_json_tweet_links.php?tag='+this.SearchTag,{success:function(o){var top_links=eval('('+o.responseText+')');var twitterObj=o.argument;if(top_links.links.length){var links='';for(i=0;i<top_links.links.length;i++){links+=top_links.links[i];links_ids+=top_links.ids[i];}
var helper=$('twitter_links_helper');if(helper&&helper.innerHTML!=links_ids){helper.innerHTML=links_ids;update_fade_inout(twitterObj.TopLinksId,links);}}else{update_fade_inout(twitterObj.TopLinksId,'');}},failure:function(o){},argument:this});}
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=='carregando...'))
{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','N&atilde;o h&aacute; resultados para esta busca.');if(this.PaginatorId)
{update_fade_inout(this.PaginatorId,'P&aacute;ginas: 1');}}
if(this.FirstCallBackRun&&this.ShowNoResultsFoundMessage)
{document.getElementById(this.Container).innerHTML='<i>Sem resultados para esta busca. Tente outra palavra-chave.</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='menos de um minuto';}else if(minutes_passed==1){minutes_passed+=' minuto';}else if(minutes_passed>1&&minutes_passed<60){minutes_passed+=' minutos';}else if(minutes_passed>=60&&minutes_passed<1440){minutes_passed=Math.floor(minutes_passed/60);if(minutes_passed==1){minutes_passed+=' hora';}else{minutes_passed+=' horas';}}else if(minutes_passed>=1440){minutes_passed=Math.floor(minutes_passed/1440);if(minutes_passed==1){minutes_passed+=' dia';}else{minutes_passed+=' dias';}}
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>');}
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+' atr&aacute;s via <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+=' atr&aacute;s';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='P&aacute;ginas: ';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='menos de 20 segundos';}
else if(diff<=30)
{result='30 segundos';}
else if(diff<60)
{result='menos de um minuto';}
else if(diff>=60&&diff<3600)
{minutes=Math.floor(diff/60);result=minutes+' minuto'+((minutes==1)?' ':'s ');}
else if(diff>=3600&&diff<24*3600)
{hours=Math.floor(diff/3600);result='cerca de '+hours+' hora'+((hours==1)?' ':'s ');}
else
{days=Math.floor(diff/86400);result='cerca de '+days+' dia'+((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='none';
	}
}

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;}
}
