

var twitter = {
	
	callback: function(json) {
	
		if(!json.results) { return;}
		
		var statuses = [];
		
		var results = json.results;
		var i = 0;
		while(results[i]) {
			
			var status = {};
			status.from_user = results[i].from_user;
			status.created_at = results[i].created_at;
			status.profile_image_url = results[i].profile_image_url;
			status.text = this._addTweetLink(results[i].text);

			statuses.push(status);
			
			i++
		}
		
		this._drawTimeline(statuses);
	},

	
	//callbackによって処理された配列を受け取り描画する。
	_drawTimeline:  function(statuses) {
		
		for(var i = 0, l=statuses.length; i<l; i++) {
			$("#statuses").append(
				'<li><div class="thumb"><a href="http://twitter.com/'+statuses[i].from_user+'" target="_blank"><img src="'+ statuses[i].profile_image_url +'" width="48" height="48" /></a></div><p class="status"><a href="http://twitter.com/'+statuses[i].from_user+'" target="_blank">'+ statuses[i].from_user +'</a>  '+ statuses[i].text +'</p></li>'
			);
		}
			
	},

	//ツイートのテキストにハッシュタグ、@、http〜から始まる文字列へのリンクを付加する。
	_addTweetLink:  function(text){
	
		var url = "((https?)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+))";
		var urlRe = new RegExp(url, "igm");
				
		text = text.replace(urlRe, '<a href="$1" target="_blank">$1</a>');
	
		var hashRe = /#([A-Za-z0-9_]+)/igm;
		text = text.replace(hashRe, '<a href="http://twitter.com/search?q=%23$1" target="_blank">#$1</a>');
		
		var userRe = /@([A-Za-z0-9_]+)/igm;
		text = text.replace(userRe, '@<a href="http://twitter.com/$1" target="_blank">$1</a>');
		
		return text;
	}
	
}



