/*
 * ajax.js - Display On Parsing Multiple XML Files
 *
 * 2009/01/21 h.adachi 単独データ(1XML内にアイテム数が1件でも表示可)に対応
 *
 */

// XML URL Path
var url = new Array(
	'top_information.xml',
	'top_news.xml',
	'top_newarrived.xml',
	'top_event.xml',
	'top_column.xml',
	'top_announcer.xml'
);

// 変数定義
display_new = -1000000000; // "display_new"日前の記事まで「new表示」を出す (-N:表示しない)

// 2008/09/17 ニュース表示期間用変数
var dispDateCount = 3;

/*** Script Start  ***/
// OnLoad Function (Main)
onload = function () {
	// functions
	// Parse Each XMLs
	for (var i=0; i<url.length; i++){
		var http = new JKL.ParseXML(url[i]);
		// 出力データの全配列化
		http.setOutputArrayAll();
		var func = "";
		
		// 「インフォメーション」用HTML出力関数
		if (i == 0){
			func = function(data){
				if(data.entrys[0] != undefined){ setUpdate(data, 'list_info'  , 28, 'topic') };
			}
		}
		//「ニュース」用HTML出力関数
		if (i == 1){
			func = function(data){
				if(data.entrys[0] != undefined){ setUpdate(data, 'list_news'  , 22, 'news') };
			}
		}
		//「新着情報」用HTML出力関数
		if (i == 2){
			func = function(data){
				if(data.entrys[0] != undefined){ setUpdate(data, 'list_new'   , 22, 'update') };
			}
		}
		// 「イベント・試写会」用HTML出力関数
		if (i == 3){
			func = function(data){
				if(data.entrys[0] != undefined){ setUpdate(data, 'list_event' , 20, 'update') };
			}
		}
		// 「コラム」用HTML出力関数
		if (i == 4){
			func = function(data){
				if(data.entrys[0] != undefined){ setUpdate(data, 'list_column', 28, 'topic') };
			}
		}
		// 「アナウンサー」用HTML出力関数
		if (i == 5){
			func = function(data){
				if(data.entrys[0] != undefined){ setUpdate(data, 'list_ana'   , 28, 'topic') };
			}
		}
		http.async(func);
		http.parse();
	}
}

/*
 * 更新情報テキストリスト設定用関数 setUpdate
 *
 * ○引数
 * 1:data  (バナー情報格納XML)
 * 2:div   (バナーの出力先div名)
 * 3:length(テキストの最大表示文字数)
 * 4:type  (日付表示判定用フラグ)
 */
function setUpdate(data, div, length, type){
	var str = '';
	var topics = data.entrys[0].entry;
	var len = topics.length;

	for (var i=0; i<len; i++){
		str += '<li>' + '<a href="' + topics[i].url + '">' + '<span class="pt5">';
		
		// 日付の有無に合わせて表示を振り分け
		if(type == 'topic'){
			str += '&nbsp;･&nbsp;';
		}else{
			str += topics[i].month + '/' + topics[i].day + '&nbsp;';
		}
		// 指定された文字数を超えた場合はカット
		str += CountLength(topics[i].title[0], length);
		
		//新着表記
		if(type != 'news'){
			d = new Date();
			if ( (Date.parse(topics[i].yyyymmdd[0]) + display_new * 24 * 60 * 60 * 1000) > d.getTime() ){
				str += '<img src="./images/new1.gif" height="10" width="24" border="0" />';
			}
		}
		str += '</span></a></li>';
	}
	var element = document.getElementById(div);
	if(element){ element.innerHTML = str };
}

// Functions Count String Bytes
function CountLength(str, str_length) {
	if (str.length == null ) return;
	var returnCode = "";
	var r = 0;

	for (var i = 0; i < str.length; i++) {
		var c = str.charCodeAt(i);
		// Shift_JIS: 0x0 ～ 0x80, 0xa0 , 0xa1 ～ 0xdf , 0xfd ～ 0xff
		// Unicode : 0x0 ～ 0x80, 0xf8f0, 0xff61 ～ 0xff9f, 0xf8f1 ～ 0xf8f3
		if ( (c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)) {
			r += 1;
		} else {
			r += 2;
		}
		returnCode += str.substring(i, i+1);

		if (r >= str_length) { return returnCode + "..." };
	}
	return returnCode;
}

// ニュースの表示期間判定用関数
function isDispNews(str_date) {
	var nowDate = new Date();
	var articleDate = new Date(str_date);
	// ニュース記事日付に表示期間分の日数を加算
	articleDate.setTime(articleDate.getTime() + 24 * 60 * 60 * 1000 * dispDateCount);
	// 現在時刻より新しい場合は true を返却
	return (nowDate < articleDate);
}
