/******************************************************************************
	diary.js	日記用JavaScript集
		$Id: diary.js,v 1.2 2009/12/25 06:33:42 kei Exp $
******************************************************************************/


/*=============================================================================
	pasttime.js	twitter用経過時刻表示
==============================================================================*/

YAHOO.namespace("nantoka");

YAHOO.nantoka.prettyTwitterDate = function () {
	var timerId;
	var parseTimeStamp = function(ts) {
		var d = ts.substring(0, 10).split('-');
		var t = ts.substring(10).split(':');
		var date = new Date(d[0], d[1] - 1, d[2], t[0], t[1], t[2]);

		var ms = date.getTime();
		ms -= date.getTimezoneOffset() * 60 * 1000;
		ms -= 9 * 60 * 60 * 1000;
		date.setTime(ms);
		return date;
	};

	var prettyTimeStamp = function(dt) {
		if (! dt.getTime()) {
			return 'いつだっけ';
		}
		var now = new Date();
		var diff = (now.getTime() - dt.getTime()) / 1000;
		if ((diff | 0) <= 0) {
			return 'たった今';
		}
		if (diff <= 60) {
			return (diff | 0) + '秒前';
		}
		diff = (diff / 60) | 0;
		if (diff <= 60) {
			return diff + "分前";
		};
		diff = (diff / 60) | 0;
		if (diff < 24) {
			return "約" + diff + "時間前";
		}
		return dt.toLocaleString();
	};

	var update = function() {
		var elms = YAHOO.util.Dom.getElementsByClassName("twitterDateTime");
		var elmnum = elms.length;
		for (var i = 0; i < elmnum; i++) {
			if (elms[i].firstChild) {
				var a = elms[i].firstChild;
				a.innerHTML = prettyTimeStamp(a.TimeStamp);
			}
		}
		timerId = setTimeout(update, 60 * 1000);
		return true;
	};


	return  {
		Init: function () {
			var elms = YAHOO.util.Dom.getElementsByClassName("twitterDateTime");
			var elmnum = elms.length;
			for (var i = 0; i < elmnum; i++) {
				if (elms[i].firstChild) {
					var a = elms[i].firstChild;
					a.TimeStamp = parseTimeStamp(a.firstChild.data);
				}
			}
			update();
			return true;
		},

		Finish: function() {
			if (timerId) {
				clearTimeout(timerId);
			}
			timerId = null;
		},
	};

}(); // the parens here cause the anonymous function to execute and return


YAHOO.util.Event.onDOMReady(
	YAHOO.nantoka.prettyTwitterDate.Init,
	YAHOO.nantoka.prettyTwitterDate,
	true
);



/*=============================================================================
	背景変化
==============================================================================*/

YAHOO.namespace("nantoka");

YAHOO.nantoka.changeBackgroundImage = function () {
	var color_new = [102,102,102];
	var color_old = [160, 82, 45];
	var getDays = function() {
		var l = window.location.href;
		var m = (l.match(/\?(\d+)/) || [])[1];
		if (! m) {
			m = (l.match(/\/(\d+)\.html/) || [])[1];
		}
		if (m) {
			var d;
			if (m.length >= 8) {
				d = new Date(m.substr(0, 4), m.substr(4, 2)-1, m.substr(6, 2));
			}
			else if (m.length == 6) {
				d = new Date(m.substr(0, 4), m.substr(4, 2)-1, '01');
			}
			if (d) {
				var now = new Date();
				var diff = (now.getTime() - d.getTime()) / 1000 / 60 / 60 / 24;
				if (diff > 365 * 3) {
					return 5;
				}
				if (diff > 365) {
					return 4;
				}
				if (diff > 90) {
					return 3;
				}
				if (diff > 30) {
					return 2;
				}
				if (diff > 7) {
					return 1;
				}
				return 0;
			}
		}
		return;
	};

	return  {
		Init: function () {
			var elms = document.getElementsByTagName('body');
			if (! elms.length) {
				return;
			}
			var body = elms[0];
			var o = getDays();
			if (o) {
				var rgb = [];
				for (var i = 0; i < 3; i++) {
					rgb[i] = color_new[i] + (color_old[i] - color_new[i]) * o / 5;
				}
				body.style.color = 'rgb(' + ~~(rgb[0]) + ',' + ~~(rgb[1]) + ',' + ~~(rgb[2]) + ')';
				var bg = 'url(../images/paper' + o + '.jpg)';
				body.style.backgroundImage = bg;
			}
		}
	};

}(); // the parens here cause the anonymous function to execute and return


YAHOO.util.Event.onDOMReady(
	YAHOO.nantoka.changeBackgroundImage.Init,
	YAHOO.nantoka.changeBackgroundImage,
	true
);



/*=============================================================================
	twitterlink.js	twitterリンクのtargetセット
==============================================================================*/

YAHOO.namespace("nantoka");

YAHOO.nantoka.twitterLink = function () {
	return  {
		Init: function () {
			var elms = YAHOO.util.Dom.getElementsByClassName("twitterHref");
			var elmnum = elms.length;
			for (var i = 0; i < elmnum; i++) {
				elms[i].target = '_blank';
			}
			return true;
		},

		Finish: function() {
			return true;
		},
	};

}();

YAHOO.util.Event.onDOMReady(
	YAHOO.nantoka.twitterLink.Init,
	YAHOO.nantoka.twitterLink,
	true
);


/*=============================================================================
	関連文書の関連キーワードを表示する
==============================================================================*/

YAHOO.namespace("nantoka");

YAHOO.nantoka.DispRefKeyword = function () {
	var oToolTip;
	var callbackReq = {
		success:  function(o) {
			var data = null;
			if (o.responseText) {
				data = eval('(' + o.responseText + ')');
			}
			var from = data.from_article;
			var to = data.to_article;
			if ((from) && (to)) {
				var e = document.getElementById('tt_keywords_' + from + '_' + to);
				var html = '';
				if ((e) && (data)) {
					html += '<ul>';
					for (var i = 0; i < data.keywords.length; i++) {
						var keyword = data.keywords[i];
						html += '<li>' + keyword['keyword']
							+ '<span class="tt-score">' + keyword['score'] + '</span>'
							+ '</li>'
					}
					html += '</ul>';
					e.innerHTML = html;
				}
			}
			return;
		},
		failure:  function(o) {
			return;
		}
	};
	return  {
		Init: function () {
			var elms = YAHOO.util.Dom.getElementsByClassName("keyword-link");
			oToolTip = new YAHOO.widget.Tooltip("tt_keyword", { context: elms});
			YAHOO.util.Dom.setStyle(oToolTip.body, "opacity", 0.9);
			oToolTip.contextTriggerEvent.subscribe(
				function(type, args) {
					var html = '<span class="tt-title">' + args[0].innerHTML + '</span>';
					if (args[0].parentNode) {
						var e = YAHOO.util.Dom.getElementsByClassName('ref-date', 'span', args[0].parentNode);
						if (e.length) {
							html += '<span class="tt-date">' + e[0].innerHTML + '</span>';
						}
					}
					if (args[0].getAttribute('data-score')) {
						html += '<span class="tt-score">[score:' + args[0].getAttribute('data-score') + ']</span>';
					}
					var from = args[0].getAttribute('data-from-article');
					var to = args[0].getAttribute('data-to-article');
					if ((from) && (to)) {
						html += '<div id="tt_keywords_' + from + '_' + to + '">...</div>';
					}
					this.cfg.setProperty("text", html);
					if ((from) && (to)) {
						var requrl = '/~kei/diary/refkeyword.cgi?from_article=' + from + '&to_article=' + to;
						var con = YAHOO.util.Connect.asyncRequest('GET', requrl, callbackReq);
					}
				}
			);
			return true;
		},

		Finish: function() {
			return true;
		},
	};

}();

YAHOO.util.Event.onDOMReady(
	YAHOO.nantoka.DispRefKeyword.Init,
	YAHOO.nantoka.DispRefKeyword,
	true
);



