jQuery.fn.reverse = Array.prototype.reverse;
String.prototype.linkify = function() 
{
  return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/g, function(m) 
  {
  	m = m.link(m);
  	m = m.replace('href="','target="_blank" href="');
  	return m;
  });
};

String.prototype.linkuser = function() 
{
  return this.replace(/[@]+[A-Za-z0-9-_]+/g, function(us) 
  {
    var username = us.replace("@","");
    
    us = us.link("http://twitter.com/"+username);
  	us = us.replace('href="','target="_blank" onclick="loadProfile(\''+username+'\');return(false);"  href="');
    return us;
  });
};

String.prototype.linktag = function() 
{
  return this.replace(/[#]+[A-Za-z0-9-_]+/g, function(t) 
  {
    var tag = t.replace("#","%23");
    t = t.link("http://search.twitter.com/search?q="+tag);
  	t = t.replace('href="','target="_blank" href="');
  	return t;
  });

}; 

function fetch_tweets(elem)
{
	elem=$(elem);input=elem.attr('id');
	lang=elem.attr('lang');
	
	if(input!=window.monitter['text-'+input])
	{
		window.monitter['last_id'+input]=0;
		window.monitter['text-'+input]=input;
		window.monitter['count-'+input]=12;
	}
	if(window.monitter['count-'+input]>10)
	{
		elem.prepend('<div class="smalltext-gray" style="text-align:right"><img src="http://monitter.com/widget/favicon.gif" align="absmiddle" /> real time twitter by: <a href="http://monitter.com" target="_blank">monitter.com</a></div>');window.monitter['count-'+input]=0;
	}
	
	var url="http://search.twitter.com/search.json?q="+input+"&lang="+lang+"&rpp="+rrp+"&since_id="+window.monitter['last_id'+input]+"&callback=?";
	$.getJSON(url,function(json)
	{
		$('div.tweet:gt('+window.monitter['limit']+')',elem).each(function(){$(this).fadeOut('slow')});$(json.results).reverse().each(function()
	
		{
			if($('#tw'+this.id,elem).length==0)
			{
				window.monitter['count-'+input]++;
				var thedate = new Date(Date.parse(this.created_at));
				var hourstr = thedate.getHours();
				var minustr = new String(thedate.getMinutes());
				if(minustr.length<=1)
					minustr = '0'+minustr;
				var thedatestr = hourstr+':'+minustr;

	
				var divstr='<div id="tw'+this.id+'"><div class="twtr-widget"><div class="twtr-tweets"><div class="twtr-tweet"><div class="twtr-tweet-wrap"><div class="twtr-avatar"><div class="twtr-img"><a href="http://twitter.com/'+this.from_user+'" target="_blank"><img src="'+this.profile_image_url+'" title="'+this.from_user+'" /></a></div></div><div class="twtr-tweet-text"><p><a href="http://twitter.com/'+this.from_user+'" title="" target="_blank">'+this.from_user+'</a> '+this.text.linkify().linkuser().linktag()+' <i><a href="http://twitter.com/'+this.from_user+'/status/'+this.id+'" target="_blank" style="color:#444444">'+thedatestr+'</a>&nbsp;&nbsp;<a href="http://twitter.com/home?status=RT%20@'+this.from_user+'%20'+this.text+'" target="_blank" style="color:#444444">retweet</a>&nbsp;&nbsp;<a href="http://twitter.com/?status=@'+this.from_user+'%20&in_reply_to_status_id='+this.id+'&in_reply_to='+this.from_user+'" target="_blank" style="color:#444444">reply</a></i></p></div></div></div></div></div></div>';
		
				window.monitter['last_id'+input]=this.id;elem.prepend(divstr);
				$('#tw'+this.id,elem).hide();
				$('#tw'+this.id+' img',elem).hide();
				$('#tw'+this.id+' img',elem).fadeIn(4000);
				$('#tw'+this.id,elem).fadeIn('slow');
			}
		});
		
		input=escape(input);
		rrp=1;
		setTimeout(function(){fetch_tweets(elem)},2000);});return(false);
	}
	
	$(document).ready(function(){window.monitter={};$('.monitter').each(function(e){rrp=10;fetch_tweets(this);});});
