// twide ver.0.9 : 2011 / 9 / 17



// ===============================================
// user timeline
// ===============================================

$.fn.getTwideName = function(list_user){

	var _ary = new Array();
	var n_num = 6;//１回の読み込みで更新する件数
	var maxItem = 6;//最大表示件数
	var timerNum = 300000;//インターバル(ミリ秒///1000=1秒)

	var obj= $(this);
	
	getTweetName(obj,list_user, n_num);
	
	var t = setInterval(function(){getTweetName(obj, list_user, n_num);}, timerNum);

	function getTweetName(obj,lu,n){

		var tweeturl='http://api.twitter.com/1/statuses/user_timeline/'+lu+'.json?callback=?';
		var htmlParts = "";
		
		
		$.getJSON(tweeturl, function(data){
									 
		for (var i=0; i<data.length; i++) {
	
			tw_ID= data[i].id;
		
			if($.inArray(tw_ID, _ary)==-1){
				data[i].org_created_at = org_date2(data[i].created_at);
				data[i].twitter_user_name = data[i].user.screen_name;
				
				htmlParts += template(mTemplate, data[i]);
				_ary.push(tw_ID);
				
			}
		}
		
		if(htmlParts!=""){ setTweetParts(obj, htmlParts,maxItem); }
		
		});
	}
};


// ===============================================

function setTweetParts(obj, htmlParts,maxItem){
	
	obj.append('<ul>' + htmlParts + '</ul>');
	overObj = obj.find("li:gt(" + ( maxItem -1 ) + ")");
	overObj.remove();
	obj.find("li.tw").hide().fadeIn().removeClass("tw");
}

//テンプレート化
function template(str, obj, replacement) {
	
	obj.text = textedit(obj.text);
	
	return str.replace(/#\{(.+?)\}/g, function() {
		try {
    	return eval('obj.' + arguments[1]);
		} catch (e) {
		return replacement ? replacement : '';
		};
	});
}

//リンク変換
function textedit(str){
	var newText = str
	.replace(/(https?:\/\/[-a-z0-9._~:\/?#@!$&\'()*+,;=%]+)/ig,'<a href="$1" target="_blank">$1</a>')
    .replace(/@+([_A-Za-z0-9-]+)/ig, '<a href="http://twitter.com/$1" target="_blank">@$1</a>')
    .replace(/#+([_A-Za-z0-9-]+)/ig, '<a href="http://search.twitter.com/search?q=%23$1" target="_blank">#$1</a>');
	return newText;
}

//日付変換

function org_date(dateStr){
	
	var d = dateStr.split(" ");
	var post_date = d[0]+" "+d[2]+" "+d[1]+" "+d[3]+" "+d[4];
	var date = new Date(post_date);
	date.setHours(date.getHours() + 9);
	
	return setDateStr(date);	
}

function org_date2(dateStr){
	
	var d = dateStr.split(" ");
	var post_date = d[1]+" "+d[2]+" "+d[5]+" "+d[3]+" "+d[4];
	var date = new Date(post_date);
	
	return setDateStr(date);
}

function setDateStr(date){
	
	var dateStr = date.getFullYear();
	
	dateStr += "/" + ( date.getMonth() + 1) + "/" + date.getDate() +"&nbsp;";
	dateStr += ("0"+date.getHours()).slice(-2) + ":" + ("0"+date.getMinutes()).slice(-2);
	
	return dateStr;
}

// ===============================================
// html template 
// ===============================================
// 「"」「/」の前に「\」でエスケープ

var mTemplate  = '<li>';
	mTemplate += '#{text}';
	mTemplate += '<span>#{org_created_at}<\/span>';
	mTemplate += '<\/li>';
	
	
