/* ---------------------------------------------------------------- */
// Settings
/* ---------------------------------------------------------------- */

var feed_url = 'http://www.ayumu.ch/index.xml'; // 取得したい FEED(XML) URL
//var feed_url = 'http://check.ayumu.ch/index.xml'; // 取得したい FEED(XML) URL
//var feed_url = '/index.xml'; // 取得したい FEED(XML) URL


var disp_entry_num = 10;    // 表示する記事の最大数
var body_truncate_num = 50; // 表示する本文の文字数

var img_width = 90;  // 表示する画像のクリッピングサイズ横の長さ
var img_height = 72; // 表示する画像のクリッピングサイズ縦の長さ
// 画像は自動的に↑の大きさで、上下左右センター部分が切り抜かれる

// 表示カテゴリ情報
var categories = ["all", "topics", "media", "event"];
var category_names = {all: "newestbook", topics: "topics", media: "media", event:"event"};

// 記事に画像がないときに表示されるダミー画像
var dummy_img = document.createElement("img");
dummy_img.src = "img/ayumu.gif";

/* ---------------------------------------------------------------- */
// onload 時に呼ばれる関数
function init()
{

	createRecentEntryHeader();  // NEWS 見出し部分を生成
	createRecentEntryContent(); // NEWS 内容部分を生成

	switch_category("all");
	request_feed(feed_url, disp_entry);
}

/* ---------------------------------------------------------------- */
// RSS 情報 見出し表示部分 を生成する
function createRecentEntryHeader(){

	//	以下のような li リストを作成
	//
	//	<li>
	//		<img id="re_img_all" src="img/tab_all.gif" alt="全て" border="0">
	//		<a id="re_a_all" href="#" title="全て" style="margin:0 10px;" onclick='switch_category("all")'>全て</a>
	//	</li>
	//	<div class="delim"></div>
	//	<li>
	//		<img id="re_img_topics" src="img/tab_topics.gif" alt="最新情報" border="0">
	//		<a id="re_a_topics" href="#" title="最新情報" style="margin:0 10px;" onclick='switch_category("topics")'>最新情報</a>
	//	</li>
	//	<div class="delim"></div>
	//	<li>
	//		<img id="re_img_media" src="img/tab_media.gif" alt="メディア情報" border="0">
	//		<a id="re_a_media" href="#" title="メディア情報" style="margin:0 10px;" onclick='switch_category("media")'>メディア情報</a>
	//	</li>
	//	<div class="delim"></div>
	//	<li>
	//		<img id="re_img_event" src="img/tab_event.gif" alt="イベント情報" border="0">
	//		<a id="re_a_event" href="#" title="イベント情報" style="margin:0 10px;" onclick='switch_category("event")'>イベント情報</a>
	//	</li>
/*
	var df = document.createDocumentFragment();
	var i = 0;
	categories.each(function(cat){
		var img = document.createElement("img");
		img.id = "re_img_" + cat;
		img.src = "img/tab_" + cat + ".gif";
		img.alt = category_names[cat];
		img.border = 0;
		
		var a = document.createElement("a");
		a.id = "re_a_" + cat;
		a.href = "#";
		Event.observe(a, "click", function(){switch_category(cat);}, false);
		a.title = category_names[cat];
		a.style.margin = "0 10px";
		a.appendChild(document.createTextNode(category_names[cat]));

		var li = document.createElement("li");
		li.appendChild(img);
		li.appendChild(a);
		df.appendChild(li);

		var delim = document.createElement("div");
		delim.className = "delim";

		if(++i < categories.length) df.appendChild(delim);
	});

	var d = document.createElement("div");
	d.appendChild(df);
	$("re_category").replaceChild(d, $("re_category").firstChild);
*/
}

/* ---------------------------------------------------------------- */
// RSS 情報 内容表示部分 を生成する
function createRecentEntryContent(){

	//	以下のような div リストを作成	
	//	<div id="re_all"></div>
	//	<div id="re_topics"></div>
	//	<div id="re_media"></div>
	//	<div id="re_event"></div>

	var df_cont = document.createDocumentFragment();
	categories.each(function(cat){
		var div = document.createElement("div");
		div.id = "re_" + cat;
		df_cont.appendChild(div);
	});
	$("re_content").appendChild(df_cont);
}

/* ---------------------------------------------------------------- */
function request_feed(url, callback){

	var http = new JKL.ParseXML(url);
	http.async(callback);
	http.parse();
}

/* ---------------------------------------------------------------- */
// 指定カテゴリを表示し、その他は非表示とする
function switch_category(disp_category)
{
/* 
	categories.each(function(cat){
		if(cat == disp_category)
		{
			Element.show("re_img_"+cat);
			Element.hide("re_a_"+cat);
			Element.show("re_"+cat);
		}
		else
		{
			Element.hide("re_img_"+cat);
			Element.show("re_a_"+cat);
			Element.hide("re_"+cat);
		}
	});
*/
}

/* ---------------------------------------------------------------- */
// リクエスト結果を受けてＨＴＭＬを生成し、表示する
function disp_entry(data)
{
	data = data.rss;
	var items = (!!data.item) ? data.item : data.channel.item; // For RSS 1.0 / 2.0 
	items = (items instanceof Array) ? items : [items];

	categories.each(function(cat){
		var html ="", count = 0;

		html += '<table border="0" cellpadding="0" cellspacing="0">';

		items.detect(function(item){
			if(cat == "all") {html += get_entry_tag(item); count++;}
			if(count > disp_entry_num) return true; // break;
		});

		html += '</table>';

		$("re_" + cat).innerHTML = html;
	});

}

/* ---------------------------------------------------------------- */
// １エントリ分のＨＴＭＬを生成する
function get_entry_tag(item)
{
	var body = item["description"];

	var date = new Date(item.pubDate);
	var year = date.getFullYear();
	var month = date.getMonth() + 1;
	var day = date.getDate();

	if(String(month).length == 1) month = "0" + month;
	if(String(day).length == 1) day = "0" + day;
	
	var d = document.createElement("div");
	d.innerHTML = body;
	var imgs =d.getElementsByTagName("img");
	var img = (0 < imgs.length) ? imgs[0] : dummy_img;

	imgPreloader = new Image();
	imgPreloader.src = img.src;

	var html = "";

	html += '<tr valign="top">';
	html += '<td><img src="img/icon_' + category_names[item.category["#text"]] + '.gif" width="80" height="15" border="0" alt=""></td>';
	html += '<td nowrap>[ ' + year + '.' + month + '.' + day + ' ]</td>';
	html += '<td><a href="'+ item.link +'" title="'+item.title+'">'+item.title+'</a></td>';
	html += '</tr>';


	return html;
}