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) 
  {
  return m.link(m);
  });
};

String.prototype.linkuser = function() 
{
  return this.replace(/[@]+[A-Za-z0-9-_]+/g, function(u) 
  {
    var username = u.replace("@","")
    return u.link("http://twitter.com/"+username);
  });
};

String.prototype.linktag = function() 
{
  return this.replace(/[#]+[A-Za-z0-9-_]+/, function(t) 
  {
    var tag = t.replace("#","%23")
    return t.link("http://search.twitter.com/search?q="+tag);
  });

}; 
function fetch_tweets(elem)
{
		elem = $(elem);
		input = elem.attr('title');
		
		input = input.replace('Searching Twitter for: ','');
		
		lang = elem.attr('lang');
	
		var url = "/monitter/search.php?q="+input+"&lang="+lang+"&since_id="+window.twitter['last_id'+input];

		$.getJSON(url, function(json)
		{			
			$('div.tweet:gt('+window.twitter['limit']+')',elem).hide();
			
			$(json.results).reverse().each(function()
			{		
 				if($('#tw'+this.id).length == 0)
				{
					window.twitter['tweetstack'+this.search].push(this);
				}
			});			
		});
		input = escape(input);
		rrp = 1;
		setTimeout(function(){fetch_tweets(elem)},10000);
		
		return(false);
	}

function show_tweets()
{
	
	$('div.monitter').each(function()
	{
		var elem = $(this);
		var q = elem.attr('title');
		
		q = q.replace('Searching Twitter for: ','');
		if(window.twitter['tweetstack'+q].length > 0)
		{
			tweet = window.twitter['tweetstack'+q].pop();
			while($('#tw'+tweet.id,elem).length != 0)
			{
				if(window.twitter['tweetstack'+q].length > 0)
					tweet = window.twitter['tweetstack'+q].pop();
				else
					break;
			}
 			if(tweet != undefined && $('#tw'+tweet.id,elem).length == 0)
			{
				window.twitter['count-'+q]++;
	
				var thedate = new Date(Date.parse(tweet.created_at));
				var mins = ""+thedate.getMinutes();
				if(mins.length == 1) mins = "0"+mins;
				var thedatestr = thedate.getHours()+':'+mins;
				var userclass = "user-"+tweet.from_user;
				var divstr = '<div id="tw'+tweet.id+'" class="tweet '+userclass+'"><img width="48" height="48" src="'+tweet.profile_image_url+'" ><p class="text">'+tweet.text.linkify().linkuser().linktag()+'<br />&nbsp;<b><a href="http://twitter.com/'+tweet.from_user+'" target="_blank">'+tweet.from_user+'</a></b> &nbsp;-&nbsp;<b>'+thedatestr+'</b></p></div>';
	
				window.twitter['last_id'+q] = tweet.id;
		
				elem.prepend(divstr);
				$('#tw'+tweet.id,elem).hide();
				$('#tw'+tweet.id+' img',elem).hide();
				$('#tw'+tweet.id+' img',elem).fadeIn(4000);
				$('#tw'+tweet.id,elem).fadeIn('slow');
			}
		}
	});
	
	setTimeout(function(){show_tweets()},10000);
	
	return(false);	
}


$(document).ready(function(){

	window.twitter = {};

	window.twitter['limit'] = 10;
	$('.monitter').each(function(e)	{
		
		rrp = 6;
		var input = $(this).attr('title');
		
		input = input.replace('Searching Twitter for: ','');
		window.twitter['tweetstack'+input] = [];
		window.twitter['last_id'+input] = 0;
		window.twitter['count-'+input] = 11;
		fetch_tweets(this);
	});

	show_tweets();
});