// **************************************************************************
// Blog 日付表示スクリプト
// **************************************************************************
// Blog の RSS から最新記事の日付を取得してページに埋め込むためのスクリプト
// です。
// 

// --------------------------------------------------------------------------
// XMLHttpRequest インスタンスの参照
// --------------------------------------------------------------------------
// XMLHttpRequest (通信用のクラス) はブラウザによって生成方法が異なるため、
// この関数の中で吸収する。
// 
function createRequest(){
	var xmlhttp = false;

	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	// JScript gives us Conditional compilation, we can cope with old IE versions.
	// and security blocked creation of the objects.
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
		}
	}
	@end @*/
	if(! xmlhttp && typeof XMLHttpRequest != 'undefined'){
		try{
			xmlhttp = new XMLHttpRequest();
		} catch(e){
			xmlhttp = false;
		}
	}
	if(! xmlhttp && window.createRequest){
		try{
			xmlhttp = window.createRequest();
		} catch(e){
			xmlhttp = false;
		}
	}
	return xmlhttp;
}

// --------------------------------------------------------------------------
// 日付の取得
// --------------------------------------------------------------------------
// 指定された UTC 日時から RSS 用の日時を取得します。
// 
function getRSSDate(utc){
	var date = new Date();
	date.setTime(utc);
	var y = date.getFullYear() + "";
	y = y.substring(2);
	return y + "." + (date.getMonth()+1) + "." + date.getDate();
}

// --------------------------------------------------------------------------
// Blog 更新日付の設定
// --------------------------------------------------------------------------
// 全ての Blog の更新日時を設定します。ブログのサイトとこのサイトが異なるドメ
// インのため、セキュリティ上直接通信することは出来ません。振替手段として自宅
// のサーバで RSS を取得しこのサイトにアップロードするという処理を定期的に行っ
// ています。
// 
function setAllBlogModified(){

	var xmlhttp = createRequest();

	// 取得に失敗したら何もしない
	if(! xmlhttp){
		return;
	}

	// 通信の実行
	xmlhttp.open("GET", "etc/rsscatalog.jspx", true);
	xmlhttp.onreadystatechange = function(){

		// 4 (通信完了) でない呼び出しなら何もしない
		if(xmlhttp.readyState != 4 || ! xmlhttp.responseXML || ! xmlhttp.responseXML.documentElement){
			return;
		}

		// RSS の DOM をたどって dc:date を参照
		var node = xmlhttp.responseXML.documentElement.firstChild;
		while(node){
			if(node.tagName == "rss"){
				var id = node.getAttribute("id");
				var utc = node.getAttribute("utc");
				var elem = document.getElementById(id);
				if(elem){
					elem.innerHTML = getRSSDate(utc);
				}
			}
			node = node.nextSibling;
		}

		// 該当なし
		return;
	}

	// 通信処理の実行
	xmlhttp.send(null);
	return;
}


