// schedule.js - スケジュール表示
// Copyright(c) 2007 Nippon Data Corporation / All Rights Reserved
// Programmed by Tsuyoshi Wada
//
// History
// -------
// 2007-05-01 着手 (T.Wada)
// 2007-05-21 会員ネットワーク登録情報参照機能を追加 (T.Wada)
// 2010-03-21 jQuery 対応 (T.Wada)
// 2011-02-19 一般公開フラグ対応 (T.Wada)

// ロード後に実行される初期化処理
$(function(){
	// 外部ファイルのロードを開始
	$.get('./admin/schedule.tsv', displayDataSch);

	// ロードした外部ファイルを解析して表示
	function displayDataSch(responseText)
	{
		var lines = null;
		var fields = null;
		var summaryHTML = '';
		var topicHTML = '';
		var topicNum = 0;
		var htmlVar = '';
		// 項目の位置を定義する定数
		var IDX_PUBLIC      = 0;    // FLAG
		var IDX_DATE        = 1;    // 日付
		var IDX_TIME        = 2;    // 時刻
		var IDX_NAME        = 3;    // 行事名
		var IDX_COMMENT     = 4;    // 備考
		var IDX_TITLE       = 5;    // トピックタイトル
		var IDX_DETAIL_URL  = 6;    // 詳細ページURL
		var IDX_SUBTITLE    = 7;    // トピックサブタイトル
		var IDX_IMG_URL     = 8;    // 画像ファイルURL
		var IDX_IMG_DESC    = 9;    // 画像ファイル説明
		var IDX_ABSTRACT    = 10;   // 概略
		// レコード区切りは LF
		lines = responseText.split('\n');
		for (var i = 0; i < lines.length; ++i) {
			// 先頭が '###' で始まる行はコメント扱い
			if (lines[i].substr(0, 3) == '###') {
				continue;
			}
			// 項目区切りは TAB
			fields = lines[i].split('\t');
			// 先頭の 5 項目は必須
			if (5 <= fields.length) {
				++topicNum;
				// 先頭項目の日付フォーマットおよびサマリ必須項目をチェック
				if (fields[IDX_DATE].match(/(\d{4})\/(\d{1,2})\/(\d{1,2})/i) && chkFldVal(fields, IDX_NAME) && chkFldVal(fields, IDX_COMMENT)) {
					// サマリ表示あり
					schDate = new Date(RegExp.$1, RegExp.$2 - 1, RegExp.$3);
					yearStr = String(schDate.getFullYear());
					monthStr = String(schDate.getMonth() + 1);
					dateStr = String(schDate.getDate());
					dayStr = '日月火水木金土'.charAt(schDate.getDay());
					// JavaScript に sprintf 相当の機能が無いなんて知らなかった……
					if (monthStr.length < 2) {
						monthStr = '0' + monthStr;
					}
					if (dateStr.length < 2) {
						dateStr = '0' + dateStr;
					}
					// サマリの作成
					if (summaryHTML.length <= 0) {
						summaryHTML += '<table class="mgn_btm_20" cellspacing="0">';
						summaryHTML += '<tr>';
						summaryHTML += '<td class="sdl_cp" colspan="2">日時</td>';
						summaryHTML += '<td class="sdl_cp">予定</td>';
						summaryHTML += '<td class="sdl_cp">備考</td>';
						summaryHTML += '</tr>';
					}
					// サマリ - ヘッダ
					summaryHTML += '<tr class="sdl_tr">';
					// サマリ - IDX_DATE:日付 (必須)
					htmlVar = chkFldVal(fields, IDX_DETAIL_URL)? 'date_more_icn.gif': 'date_icn.gif';   // トピック情報の有無でアイコンを切り替える
					summaryHTML += '<td class="sdl_date"><img src="_common/img/' + htmlVar + '" class="mgn_rgt_05" />' + monthStr + '/' + dateStr + '(' + dayStr + ')</td>';
					// サマリ - IDX_TIME:時刻 (省略可)
					htmlVar = chkFldVal(fields, IDX_TIME)? (fields[IDX_TIME] + '～'): '&nbsp;';
					summaryHTML += '<td class="sdl_time">' + htmlVar + '</td>';
					// サマリ - IDX_NAME:行事名 (必須)
					if (chkFldVal(fields, IDX_DETAIL_URL)) {
						// トピック情報あり
						// リンク先を「トピック情報」から「詳細ページURL」に変更 (T.Wada 2009/03/22)
//                      htmlVar = '<a href="#topic-' + topicNum + '" target="_blank">' + fields[IDX_NAME] + '</a>';
						htmlVar = '<a href="' + fields[IDX_DETAIL_URL] + '" target="_blank">' + fields[IDX_NAME] + '</a>';
					} else {
						// トピック情報なし
						htmlVar = fields[IDX_NAME];
					}
					summaryHTML += '<td class="sdl_event">' + htmlVar + '</td>';
					// サマリ - IDX_COMMENT:備考 (必須)
					summaryHTML += '<td class="sdl_place">' + (fields[IDX_PUBLIC]=='1'? '一般公開': fields[IDX_COMMENT]) + '</td>';
					// サマリ - フッタ
					summaryHTML += '</tr>';
				}
				// トピックの作成
				// トピックを表示しないように変更 (T.Wada 2011/02/19)
				if (false) {
// 				if (( chkFldVal(fields, IDX_DATE) &&  chkFldVal(fields, IDX_NAME) &&  chkFldVal(fields, IDX_COMMENT) && chkFldVal(fields, IDX_DETAIL_URL)) ||
// 					(!chkFldVal(fields, IDX_DATE) && !chkFldVal(fields, IDX_NAME) && !chkFldVal(fields, IDX_COMMENT) && chkFldVal(fields, IDX_TITLE) && chkFldVal(fields, IDX_ABSTRACT))) {
					// トピック - ヘッダ
					topicHTML += '<ul class="mgn_btm_10">';
					// トピック - IDX_TITLE:トピックタイトル
					htmlVar = chkFldVal(fields, IDX_TITLE)? fields[IDX_TITLE]: fields[IDX_NAME];
					if (chkFldVal(fields, IDX_DETAIL_URL)) {
						htmlVar = '<a href="' + fields[IDX_DETAIL_URL] + '" target="_blank">' + htmlVar + '</a>';
					}
					topicHTML += '<li class="sdl_dtl_event"><img src="_common/img/date_more_icn.gif" class="val_mdl mgn_rgt_05" />' + htmlVar + '</li>';
					// トピック - IDX_SUBTITLE:トピックサブタイトル
					if (chkFldVal(fields, IDX_SUBTITLE)) {
						// 未定義時は表示しない
						topicHTML += '<li class="sdl_dtl_comment">' + fields[IDX_SUBTITLE] + '</li>';
					}
					if (chkFldVal(fields, IDX_IMG_URL)) {
						// 画像あり
//                         topicHTML += '<table cellspacing="0">';
//                         topicHTML += '<tr>';
//                         topicHTML += '<td class="EVENT-TXT">';
//                         // トピック - IDX_COMMENT:備考
//                         if (chkFldVal(fields, IDX_COMMENT)) {
//                             topicHTML += '■' + fields[IDX_COMMENT];
//                             topicHTML += '<br>';
//                             needBlankLine = true;
//                         }
//                         // トピック - IDX_DATE:日付 / IDX_TIME:時刻
//                         if (chkFldVal(fields, IDX_DATE)) {
//                             topicHTML += yearStr + '年' + monthStr + '月' + dateStr + '日 (' + dayStr + ')' + (chkFldVal(fields, IDX_TIME)? (' ' + fields[IDX_TIME] + '～'): '');
//                             needBlankLine = true;
//                         }
//                         // トピック - IDX_ABSTRACT:概略
//                         if (chkFldVal(fields, IDX_ABSTRACT)) {
//                             if (needBlankLine) {
//                                 topicHTML += '<br>';
//                                 topicHTML += '<br>';
//                             }
//                             topicHTML += fields[IDX_ABSTRACT];
//                         }
//                         topicHTML += '</td>';
//                         // トピック - IDX_IMG_URL:画像ファイルURL / IDX_IMG_DESC:画像ファイル説明
//                         topicHTML += '<td class="EVEVT-IMG"><a href="topic.html?src=' + escape(fields[IDX_IMG_URL]) + (chkFldVal(fields, IDX_IMG_DESC)? ('&alt=' + escape(fields[IDX_IMG_DESC])): '') + '" onClick="window.open(this.href, \'_blank\', \'width=510,height=440,status=1\'); return false;"><img src="' + fields[IDX_IMG_URL] + '" width="125"' + (chkFldVal(fields, IDX_IMG_DESC)? (' alt="' + fields[IDX_IMG_DESC] + '"'): '') + '></a></td>';
//                         topicHTML += '</tr>';
//                         topicHTML += '</table>';
					} else {
						// 画像なし
						// トピック - IDX_COMMENT:備考
						if (chkFldVal(fields, IDX_COMMENT)) {
							topicHTML += '<li class="sdl_dtl_place">' + fields[IDX_COMMENT] + '</li>';
						}
						// トピック - IDX_DATE:日付 / IDX_TIME:時刻
						if (chkFldVal(fields, IDX_DATE)) {
							htmlVar = yearStr + '年' + monthStr + '月' + dateStr + '日 (' + dayStr + ')' + (chkFldVal(fields, IDX_TIME)? (' ' + fields[IDX_TIME] + '～'): '');
							topicHTML += '<li class="sdl_dtl_date">' + htmlVar + '</li>';
						}
//                         // トピック - IDX_ABSTRACT:概略
//                         if (chkFldVal(fields, IDX_ABSTRACT)) {
//                             if (needBlankLine) {
//                                 topicHTML += '<br>';
//                                 topicHTML += '<br>';
//                             }
//                             topicHTML += fields[IDX_ABSTRACT];
//                         }
					}
					// トピック - IDX_DETAIL_URL:詳細ページURL
					if (chkFldVal(fields, IDX_DETAIL_URL)) {
						topicHTML += '<li class="dl_dtl_readmore"><img src="_common/img/arr_orange.gif" class="val_mdl mgn_rgt_05" /><a href="' + fields[IDX_DETAIL_URL] + '" class="orglink" target="_blank">詳しくはこちら</a></li>';
					}
					// トピック - フッタ
					topicHTML += '</ul>';
				}
			}
		}
		if (summaryHTML.length) {
			summaryHTML += '</table>';
		}
		// 作成した HTML を出力
		if ($('#schedule').length && (summaryHTML.length || topicHTML.length)) {
			$('#schedule').html(summaryHTML + topicHTML);
		}
	}

	// 設定ファイルの項目値を調査
	function chkFldVal(fieldVal, idxVal)
	{
		return (idxVal < fieldVal.length) && fieldVal[idxVal].length;
	}
});

