/*
1 - From a user
2 - Mentioning a user
3 - Replying to a user
4 - Containing a word
5 - Containing a hashtag
*/
var _key;
var _atualize;
var _timeout;
var _tammax;
var _nohRetorno;
var _option;

function Twitter(key, atualize, timeout, tammax, nohRetorno, option) {
	_key = key;
	_atualize = atualize;
	_timeout = timeout;
	_tammax = tammax;
	_nohRetorno = nohRetorno;
	_option = option;
	execute();
}

function execute() {
	if (this._atualize) {
		setInterval('_updateTwitts();', _timeout * 1000);
	}
	_updateTwitts();
}

function _updateTwitts() {
	var s = "<scr"+"ipt src=\"http://search.twitter.com/search.json?callback=_up"+_option+"&";
	switch(_option)
	{
		case 1:
			s += "q=from:"+ _key;
			break;
		case 2:
			s += "q=%40"+ _key;
			break;
		case 3:
			s += "q=to:"+ _key;
			break;
		case 4:
			s += "q="+ _key;
			break;
		case 5:
			s += "q=%23"+ _key;
			break;
		default:
	} 
	s += "&c="+Math.random()+"\"></scr"+"ipt>";
	$("head").append(s);
}

function _up1(d){
	var t = "";
	if (d.results) {
		var tamlst = d.results.length;
		var max = _tammax;
		if (tamlst < max) {
			max = tamlst;
		}
		for (var ix=0;ix<max;ix++) {
			t = "<div>";
			//t += "<a href=\"http://twitter.com/"+d.results[ix]['from_user']+"\" rel=\"external\"><img src=\""+d.results[ix]['profile_image_url']+"\" /></a> ";
			t += "<strong><a href=\"http://twitter.com/"+d.results[ix]['from_user']+"\" rel=\"external\">@"+d.results[ix]['from_user']+"</a></strong> ";
			t += _getLink(d.results[ix]['text']);
			t += "<span>"+_formatDateTw(d.results[ix]['created_at'])+"</span>";
			t += "</div>";
		}
	}
	$("#"+_nohRetorno).html(t);
	$('a[rel=external]').attr('target','_blank');
}

function _up2(d){
	var t = "";
	if (d.results) {
		var tamlst = d.results.length;
		var max = _tammax;
		if (tamlst < max) {
			max = tamlst;
		}
		for (var ix=0;ix<max;ix++) {
			t += "<li>";
			t += "<div>";
			t += "<a href=\"http://twitter.com/"+d.results[ix]['from_user']+"\" rel=\"external\"><img src=\""+d.results[ix]['profile_image_url']+"\" /></a> ";
			t += "<strong><a href=\"http://twitter.com/"+d.results[ix]['from_user']+"\" rel=\"external\">@"+d.results[ix]['from_user']+"</a></strong> ";
			t += _getLink(d.results[ix]['text']);
			t += "<span>"+_formatDateTw(d.results[ix]['created_at'])+"</span>";
			t += "</div>";
			t += "</li>";
		}
	}
	$("#"+_nohRetorno).html(t);
	$('a[rel=external]').attr('target','_blank');
}

function _up3(d){
	var t = "";
	if (d.results) {
		var tamlst = d.results.length;
		var max = _tammax;
		if (tamlst < max) {
			max = tamlst;
		}
		for (var ix=0;ix<max;ix++) {
			t += "<li>";
			t += "<div>";
			t += "<a href=\"http://twitter.com/"+d.results[ix]['from_user']+"\" rel=\"external\"><img src=\""+d.results[ix]['profile_image_url']+"\" /></a> ";
			t += "<strong><a href=\"http://twitter.com/"+d.results[ix]['from_user']+"\" rel=\"external\">@"+d.results[ix]['from_user']+"</a></strong> ";
			t += _getLink(d.results[ix]['text']);
			t += "<span>"+_formatDateTw(d.results[ix]['created_at'])+"</span>";
			t += "</div>";
			t += "</li>";
		}
	}
	$("#"+_nohRetorno).html(t);
	$('a[rel=external]').attr('target','_blank');
}

function _up4(d){
	var t = "";
	if (d.results) {
		var tamlst = d.results.length;
		var max = _tammax;
		if (tamlst < max) {
			max = tamlst;
		}
		for (var ix=0;ix<max;ix++) {
			t += "<li>";
			t += "<div>";
			t += "<a href=\"http://twitter.com/"+d.results[ix]['from_user']+"\" rel=\"external\"><img src=\""+d.results[ix]['profile_image_url']+"\" /></a> ";
			t += "<strong><a href=\"http://twitter.com/"+d.results[ix]['from_user']+"\" rel=\"external\">@"+d.results[ix]['from_user']+"</a></strong> ";
			t += _getLink(d.results[ix]['text']);
			t += "<span>"+_formatDateTw(d.results[ix]['created_at'])+"</span>";
			t += "</div>";
			t += "</li>";
		}
	}
	$("#"+_nohRetorno).html(t);
	$('a[rel=external]').attr('target','_blank');
}

function _up5(d){
	var t = "";
	if (d.results) {
		var tamlst = d.results.length;
		var max = _tammax;
		if (tamlst < max) {
			max = tamlst;
		}
		for (var ix=0;ix<max;ix++) {
			t += "<li>";
			t += "<div>";
			t += "<a href=\"http://twitter.com/"+d.results[ix]['from_user']+"\" rel=\"external\"><img src=\""+d.results[ix]['profile_image_url']+"\" /></a> ";
			t += "<strong><a href=\"http://twitter.com/"+d.results[ix]['from_user']+"\" rel=\"external\">@"+d.results[ix]['from_user']+"</a></strong> ";
			t += _getLink(d.results[ix]['text']);
			t += "<span>"+_formatDateTw(d.results[ix]['created_at'])+"</span>";
			t += "</div>";
			t += "</li>";
		}
	}
	$("#"+_nohRetorno).html(t);
	$('a[rel=external]').attr('target','_blank');
}

function _formatDateTw(time){
	var timeAtual = (new Date()).getTime();
	var date = new Date(time);
	var timeTw = date.getTime();
	var diff = ((timeAtual - timeTw) / 1000);
	var day_diff = Math.floor(diff / 86400);

	if ( isNaN(day_diff) || day_diff < 0 || day_diff >= 31 )
		return;
			
	return day_diff == 0 && (
			diff < 60 && "just now" ||
			diff < 120 && "1 minute ago" ||
			diff < 3600 && Math.floor( diff / 60 ) + " minutes ago" ||
			diff < 7200 && "1 hour ago" ||
			diff < 86400 && Math.floor( diff / 3600 ) + " hours ago") ||
		day_diff == 1 && "Yesterday" ||
		day_diff < 7 && day_diff + " days ago" ||
		day_diff < 31 && Math.ceil( day_diff / 7 ) + " weeks ago";
}

function _getLink(str) {
	var strFinal = "";
    var regExpUrl = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi;
    var regExpTwt = /[\@]+([A-Za-z0-9-_]+)/gi;
    var regExpTag = /(?:^| )[\#]+([A-Za-z0-9-_]+)/gi;
	var arrStr = str.split(' ');
	for (var i=0;i<arrStr.length;i++) {
		var parte = arrStr[i];
		parte = parte.replace(regExpUrl,"<a href=\"$1\" rel=\"external\">$1</a>");
		parte = parte.replace(regExpTwt,"<a href=\"http://twitter.com/$1\" rel=\"external\">@$1</a>");
		parte = parte.replace(regExpTag,"<a href=\"http://search.twitter.com/search?q=&tag=$1\" rel=\"external\">#$1</a>");
		strFinal += parte + " ";
    }
	return strFinal;
}

