/*
 * offdata.js - シーズンオフ関連更新情報 表示用スクリプト
 */
if ( typeof(WriteOffdata) == 'undefined' ) WriteOffdata = function() {};

// WriteOffdataオブジェクト生成
var offdata = new WriteOffdata();

// シーズンオフ用変数群
WriteOffdata.prototype.DISP_NEWS_NO  = 1;
WriteOffdata.prototype.DISP_EVENT_NO = 1000;

/*** Script Start  ***/
// OnLoad Function (Main)
WriteOffdata.display = function () {
	// キャッシュ対策用タイムスタンプ
	var set_date = new Date();
	var set_time = Date.parse(set_date).toString();
	var set_param = '?' + set_time.substring(0, 10);
	
	// XML URL Path
	var url = new Array(
		"../xml/topnews.xml"  + set_param,
		"../xml/schedule.xml" + set_param
	);
	
	// Parse Each XMLs
	for (i=0; i<url.length; i++){
		var http = new JKL.ParseXML(url[i]);
		// 出力データの全配列化
		http.setOutputArrayAll();
		var func = "";
		
		// トップニュース
		if (i == 0){
			func = function(data){
				// データの有無をチェック
				if(!offdata.isEmpty(data.itemList)){
					offdata.news(data.itemList[0]);
				}else{
					// HTML書き込み(div id='topnews')
					var element = document.getElementById('topnews');
					if(element){ element.innerHTML = '<p></p>\n'; }
				}
			}
		}
		// イベントスケジュール
		if (i == 1){
			func = function(data){
				// データの有無をチェック
				if(!offdata.isEmpty(data.schedules[0].teamSchedule)){
					offdata.event(data.schedules[0].teamSchedule[0]);
				}else{
					// HTML書き込み(div id='eventschedule')
					var element = document.getElementById('eventschedule');
					if(element){ element.innerHTML = '<p></p>\n'; }
				}
			}
		}
		http.async(func);
		http.parse();
	}
}

// functions
/**
 * トップニュース表示用関数
 */
WriteOffdata.prototype.news = function(data_node) {
	var str = '';
	var item = data_node.item;
	var len = item.length;
	// アイテム数が表示件数より多い場合
	if(len > offdata.DISP_NEWS_NO){ len = offdata.DISP_NEWS_NO };
	
	for(var i=0;i<len;i++){
		// タイトル
		str += '<h4>' + item[i].title[0] + '</h4>\n';
		// 本文
		if(!offdata.isEmpty(item[i].body)){
			str += '<p>' + offdata.changeLineCode(item[i].body[0]);
			// リンク先
			if(!offdata.isEmpty(item[i].url)){ str += ' <a href="' + item[i].url[0] + '">...more</a>' };
			str += '</p>\n';
		}
	}
	// HTML書き込み(div id='topnews')
	var element = document.getElementById('topnews');
	if(element){ element.innerHTML = str; }
}

/**
 * イベントスケジュール表示用関数
 */
WriteOffdata.prototype.event = function(data_node) {
	var str = '';
	var schedule = data_node.schedule;
	
	if(!offdata.isEmpty(schedule)){
		var len = schedule.length;
		// アイテム数が表示件数より多い場合
		if(len > offdata.DISP_EVENT_NO){ len = offdata.DISP_EVENT_NO };
		
		// 日付比較用変数
		var prev_date, this_date;
		for(var i=0;i<len;i++){
			if(i!=0){ prev_date = parseInt(schedule[i-1].date[0], 10) };
			this_date = parseInt(schedule[i].date[0], 10);
			
			str += '<p style="margin: 0px; padding: 2px 10px;">\n';
			str += '<span class="dotline">\n';
			
			// 直前データの日付と今回の日付が一致しない場合、日付を表示
			if(i==0 || prev_date != this_date){
				var this_week = offdata.getWeek(schedule[i].date[0]);
				
				// 日付 MM月DD日(W)
				str += '<b>'
					+  parseInt(schedule[i].date[0].substring(4,6), 10) + '月'
					+  parseInt(schedule[i].date[0].substring(6,8), 10) + '日'
					+  '(' + this_week + ')'
					+  '</b><br/>\n';
			}
			// タイトル
			if(!offdata.isEmpty(schedule[i].title)){
				str += '<b>' + schedule[i].title[0] + '</b><br/>\n';
			}
			// 本文
			if(!offdata.isEmpty(schedule[i].body)){ str += offdata.changeLineCode(schedule[i].body[0]) + '\n' };
			
			str += '</span>\n';
			str += '</p>\n';	
		}
		// HTML書き込み(div id='eventschedule')
		var element = document.getElementById('eventschedule');
		if(element){ element.innerHTML = str; }
	}else{
		// HTML書き込み(div id='eventschedule')
		var element = document.getElementById('eventschedule');
		if(element){ element.innerHTML = '<p></p>\n'; }
	}
}

/**
 * 曜日データ取得用関数
 * yyyymmdd ：日付データ(YYYYMMDD)
 */
WriteOffdata.prototype.getWeek = function(yyyymmdd){
	var week_name   = new Array( "日","月","火","水","木","金","土" );
	var set_date    = new Date(yyyymmdd.substring(0,4) ,yyyymmdd.substring(4,6) - 1 ,yyyymmdd.substring(6,8) );
	var search_week = set_date.getDay();
	return week_name[search_week];
}

/**
 * 改行コード(LF)→<br>変換用関数
 */
WriteOffdata.prototype.changeLineCode = function(str){
	var returnCode = '';
	
	// Firefoxのみ
	if(navigator.userAgent.indexOf("Firefox") != -1){
		returnCode = str.replace(/\n\n/g,"\n");
	}else{
		returnCode = str;
	}
	REbr = new RegExp(String.fromCharCode(10),"g");
	returnCode = returnCode.replace(REbr,"<br>");
	return returnCode;
}

/**
 * 空判定
 */
WriteOffdata.prototype.isEmpty = function(obj){ return (obj == null || obj == undefined || obj == '')? true: false; }
