function gatherTwitterData(divName, refreshTime, query, avatarSize){
	$('#'+divName+' .content').slideUp('fast', function(){$('#'+divName+' .content').html('')});
	$.ajax({
		url: "http://search.twitter.com/search.json?q="+query+"&with_twitter_user_id=true",		
		dataType: "jsonp", 
		success: function(data){			
			var resultSet = data.results;
			if(resultSet.length > 0){
				for(var i= 0; i < resultSet.length; i ++){					
					 $('#'+divName+' .content').append(parseTwitterResult(resultSet[i], avatarSize));
				}
				$('#'+divName+' .content').slideDown('fast');
			}else{
				$(divName+' .loading').html("Empty");
			}
		}, 
		error: function(){
			$(divName+' .loading').html("Error");
		}
	});
	setTimeout("gatherTwitterData('"+divName+"','"+refreshTime+"','"+query+"', '"+avatarSize+"')",refreshTime);
}

function parseTwitterResult(data, avatarSize){
	var ret = '<div class="item">';
	var retweet = parseRetweet(data.text);
	var user = '<a target="_blank" href="http://www.twitter.com/#!/'+data.from_user+'">@'+data.from_user+'</a>'
	ret += '<a target="_blank" href="http://www.twitter.com/#!/'+data.from_user+'"><img src="'+data.profile_image_url+'" width="'+avatarSize+'" height="'+avatarSize+'" alt="'+data.from_user+'"/></a>';
	
	if(retweet){
		ret += '<div class="body"><p>'+retweet+' <span class="date">' + dateToHowLong(data.created_at) + '</span>';
	}else{
		ret += '<div class="body"><p>'+user+' <span class="date">' + dateToHowLong(data.created_at) + '</span>';
	}
	ret += '</p>';
	ret += '<p><span class="text">'+parseLinks(data.text)+'</span></p>';
	if(retweet){	
		ret += '<p><span class="retweet">by '+user+'</span></p>';
	}
	ret += '</div></div>';
	return ret;
}

function dateToHowLong(dateText){		
	var currentDate = new Date();
	var date = new Date(dateText);
	var difference = Math.round((currentDate.getTime() - date.getTime()) / 1000);
	if(difference > (86400*3)){
		var hours = date.getHours();
		var minutes = date.getMinutes();
		if(hours < 10)
			hours = "0"+hours;
		if(minutes < 10)
			minutes = "0"+minutes;
		return date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear() + " - "+ hours + ":" + minutes; 
	}else if(difference > 86400){
		return "Yesterday";
	}else{
		var hours = Math.floor(difference / 3600);
		difference -= hours * 3600;
		var minutes = Math.floor(difference / 60);
		difference -= minutes * 60;
		if(hours > 5){
			return hours + " hours ago";
		}else{
			var ret = "";
			if(hours == 1){
				ret += hours + " hour and ";
			}else if(hours > 1){
				ret += hours + " hours and ";
			}
			if(minutes == 1){
				ret += minutes + " minute ago";
			}else{
				ret += minutes + " minutes ago";
			}
			return ret;
		}
	}
}

function parseRetweet(s){
	var pattern = new RegExp(/RT\s\@(([a-z]|[A-Z]|[0-9]|(_)|(-))*):/g);
	if(pattern.test(s)){
		var m = s.split(':');
		s=m[0].replace(/RT./, '');
		s=s.replace(/\@(([a-z]|[A-Z]|[0-9]|(_)|(-))*)/g, "<a target='_blank' href='http://twitter.com/#!/$1'>@$1</a>");		
		return s;
	}else{
		return false;
	}
}

function parseLinks(s){
	s=s.replace(/RT.\@(([a-z]|[A-Z]|[0-9]|(_)|(-))*):/g, "");
	s=s.replace(/(https?:\/\/(([a-z]|[A-Z]|[0-9]|(_)|(-))*).(([a-z]|[A-Z]|[0-9]|(_)|(-))*)(([a-z]|[A-Z]|[0-9]|(_)|(-)|\/)*))/g,"<a target='_blank' href=\"$1\">$1</a>");
	s=s.replace(/\#(([a-z]|[A-Z]|[0-9]|(_)|(-))*)/g, "<a target='_blank' href='http://twitter.com/search?q=%23$1'>#$1</a>");
	s=s.replace(/\@(([a-z]|[A-Z]|[0-9]|(_)|(-))*)/g, "<a target='_blank' href='http://twitter.com/#!/$1'>@$1</a>");
	//if(s.indexOf(':')>1) s=s.replace(/^(([^:]*))\:/,"<a target='_blank' class='from' href='http://twitter.com/$1'>$1</a>:");
	return s;
}
