/**
 * twitter汎用JS
 */
(function($) {
	//既に定義済みであれば終了
	if($.isFunction($.twitterCommon)){
		return;
	}

	$.twitterCommon = {
		
		//URL部分にリンク
		convertTextLinkUrl: function(str, linkTarget) {
			var regexp = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?([\w\-\.\/]+)(:[0-9]+)?(\/|\/([\w#!:\.\?+=&%@!\-\/]))?)/gi;
			return str.replace(regexp,"<a href=\"$1\" target=\"" + linkTarget + "\">$1</a>");;
		},

		//ユーザ部分にリンク
		convertTextLinkUser: function (str, linkTarget) {
			var regexp = /[\@]+([A-Za-z0-9\-_]+)/gi;
			return str.replace(regexp,"<a href=\"http://twitter.com/$1\" target=\"" + linkTarget + "\">@$1</a>");;
		},

		//ハッシュ部分にリンク
		convertTextLinkHash: function (str, linkTarget) {
			var regexp = / [\#]+([A-Za-z0-9-_]+)/gi;
			return str.replace(regexp, ' <a href="http://search.twitter.com/search?q=&tag=$1&lang=all" target=\"" + linkTarget + "\">#$1</a>');
		},
		
		//ハート部分にリンク
		convertTextHeart: function (str) {
			return str.replace(/[&lt;]+[3]/gi, "<tt class='heart'>&#x2665;</tt>");;
		},

		//相対時間を取得
		relativeTime: function (datetime, texts) {
			var relativeTo = new Date();
			var delta = parseInt((relativeTo.getTime() - (Date.parse(datetime))) / 1000);
			if(delta < 60) {
				return texts.lessThanMinute;
			} else if(delta < 120) {
				return texts.aboutMinuteAgo;
			} else if(delta < (45*60)) {
				return texts.aboutMinutesAgo.replace("%%NUM%%", (parseInt(delta / 60)).toString());
			} else if(delta < (90*60)) {
				return texts.aboutHourAgo;
			} else if(delta < (24*60*60)) {
				return texts.aboutHoursAgo.replace("%%NUM%%", (parseInt(delta / 3600)).toString());
			} else if(delta < (48*60*60)) {
				return texts.aboutDayAgo;
			} else {
				return texts.aboutDaysAgo.replace("%%NUM%%", (parseInt(delta / 86400)).toString());
			}
		},

		//返信リンクURL
		getReplyUrl: function(userName, tweetId) {
			return "http://twitter.com/?status=@" + userName + "%20&in_reply_to_status_id=" + tweetId + "&in_reply_to=" + userName;
		},

		//日付文字列の正規化（REST APIの日付文字列の変換）
		normalizeDatetime: function (str){
			//      0   1   2  3        4     5
			//from "Fri Dec 04 01:06:08 +0000 2009"
			//to   "Fri, 04 Dec 2009 01:06:08 +0000"
			var d = str.split(" ");
			var weekday = d[0],
				mon     = d[1],
				day     = d[2],
				time    = d[3],
				tz      = d[4],
				year    = d[5];
			return weekday + ", " + day + " " + mon + " " + year + " " + time + " " + tz;
		}

	};

})(jQuery);

