///////////////////////////////////////////////////////////////////////////////
//	NewsArticle.js
///////////////////////////////////////////////////////////////////////////////

//ファイルの読み込み
function GetNewsArticleFile(f_id, dummyflag) {
	var fname = "./NewsArticle/" + f_id;
	var dummy = "./NewsArticle/dummy";
	if (dummyflag) { fname = dummy; }
	return(fname + "na.js?t=" + Math.random());
}

///////////////////////////////////////////////////////////////////////////////
// 関数名	:CNewsArticleコンストラクタ
// 機能		:お知らせ表示クラス
// 返り値	:なし
// 引き数	:article - (入)お知らせ定義文字列
// 機能説明	:なし
// 備考		:掲載開始年月日|掲載終了年月日|記事タイトル|記事詳細#・・・
function CNewsArticle(article) {
	if (arguments.length < 1) {
		this.m_article = null;		//お知らせ定義文字列
	} else {
		this.m_article = article;	//お知らせ定義文字列
	}
	this.m_detail_window = null;		//詳細表示ウィンドウ
	//公開メソッド
	this.DrawTodaysNews = CNewsArticle_DrawTodaysNews;
	//非公開メソッド
	this.DetailOnClick = CNewsArticle_DetailOnClick;
}
///////////////////////////////////////////////////////////////////////////////
// 関数名	:DrawTodaysNews
// 機能		:本日のお知らせを表示する
// 返り値	:なし
// 引き数	:なし
// 機能説明	:なし
// 備考		:なし
function CNewsArticle_DrawTodaysNews() {
	if (this.m_article == null) return;
	if (li){
		var today = new Date(li.m_target_date.getFullYear(), li.m_target_date.getMonth(), li.m_target_date.getDate());
	} else {
		var today = new Date(svdt.getFullYear(), svdt.getMonth(), svdt.getDate());
	}
	var AvailArticles = GetAvailArticles(this.m_article, today);
	if (AvailArticles.length != 0) {
		DrawArticles(AvailArticles, today);
		this.m_availarticle = AvailArticles;
	}
}
///////////////////////////////////////////////////////////////////////////////
// 関数名	:DetailOnClick
// 機能		:詳細ボタンクリックイベント処理
// 返り値	:なし
// 引き数	:detail - (入)記事詳細
// 機能説明	:なし
// 備考		:なし
function CNewsArticle_DetailOnClick(event, detail) {
	var left, top, width, height, options;
	var win = this.m_detail_window;

 	left = event.screenX;
	top = event.screenY;
	if (bws.IsNavigator()) {
		width = window.outerWidth / 2;
		height = window.outerHeight / 2;
		options = "screenX=" + left + ",screenY=" + top;
	}
	if (bws.IsIE()) {
		width = document.body.clientWidth / 2;
		height = document.body.clientHeight / 2;
		options = "left=" + left + ",top=" + top;
	}
	options += ",width=" + width + ",height=" + height + ",scrollbars=yes";
	if (win == null || win.closed) {
		win = window.open("", "detail_na", options);
	} else {
		win.moveTo(left, top);
	}
	DrawDetailWindow(win.document, detail);
	win.focus();
	this.m_detail_window = win;
	return(false);
}
///////////////////////////////////////////////////////////////////////////////
// 関数名	:DrawDetailWindow
// 機能		:詳細ウィンドウ表示
// 返り値	:なし
// 引き数	:doc - (入)ドキュメント
//		 detail - (入)記事詳細
// 機能説明	:なし
// 備考		:なし
function DrawDetailWindow(doc, detail) {
	doc.open();
	var html_buf = "<html>";
	html_buf    +=  "<head>";
	html_buf    +=   "<title>";
	html_buf    +=    "お知らせ詳細";
	html_buf    +=   "</title>";
	html_buf    +=   "<link rel='stylesheet' href='ss/base.css' type='text/css' />";
	html_buf    +=  "</head>";
	html_buf    +=  "<body>";
	html_buf    +=    detail;
	html_buf    +=  "</body>";
	html_buf    += "</html>";
	doc.write(html_buf);
	doc.close();
}
///////////////////////////////////////////////////////////////////////////////
// 関数名	:DrawArticles
// 機能		:指定日付のお知らせを表示する
// 返り値	:なし
// 引き数	:articles - (入)お知らせ定義文字列
//		 target_date - (入)表示日付
// 機能説明	:なし
// 備考		:なし
function DrawArticles(articles, target_date) {
	var article = new Array();
	var items = new Array();
	var html_buf = "<div class='na-block'>";
	html_buf    +=   "<table class='na-block'>";
	html_buf    +=     "<tr>";
	html_buf    +=       "<th colspan='2'>";
	html_buf    +=        DateToString(target_date, "yyyy年m月d日（aaa）") + "のお知らせ";
	html_buf    +=     "</th>"
	html_buf    +=     "</tr>";
	article = articles.split("#");
	for (var i = 0; i < article.length; i++) {
		items = article[i].split("|");
		html_buf +=    "<tr>";
		html_buf +=      "<td>"
		html_buf +=	  "<a href='#' onclick='return na.DetailOnClick(event, \"" + items[3] + "\")' /a>";
		html_buf +=       items[2];
		html_buf +=      "</td>"
		html_buf +=    "</tr>";
	}
	html_buf    +=   "</table>"
	html_buf    += "</div>";
	document.write(html_buf);
}
///////////////////////////////////////////////////////////////////////////////
// 関数名	:GetAvailArticle
// 機能		:指定日付のお知らせ文字列を取得する
// 返り値	:有効お知らせ文字列
// 引き数	:articles - (入)お知らせ定義文字列
//		 target_date - (入)表示日付
// 機能説明	:なし
// 備考		:なし
function GetAvailArticles(articles, target_date) {
	var AvailArticles = "";
	article = articles.split("#");
	for (var i = 0; i < article.length; i++) {
		items = article[i].split("|");
		if (CheckArticleDate(items, target_date)) {
			if (AvailArticles.length == 0) {
				AvailArticles += article[i]
			} else {
				AvailArticles += "#" + article[i]
			}
		}
	}
	return(AvailArticles);
}
///////////////////////////////////////////////////////////////////////////////
// 関数名	:CheckArticleDate
// 機能		:指定日付のお知らせ文字列か判定する
// 返り値	:true : 有効  false : 無効
// 引き数	:items - (入)お知らせ定義文字列
//		 target_date - (入)表示日付
// 機能説明	:なし
// 備考		:なし
function CheckArticleDate(items, target_date) {
	var sdate = new Date(parseInt(items[0].substr(0, 4), 10), 
				parseInt(items[0].substr(4, 2), 10) - 1,
				parseInt(items[0].substr(6, 2), 10));
	var edate = new Date(parseInt(items[1].substr(0, 4), 10),
				parseInt(items[1].substr(4, 2), 10) - 1,
				parseInt(items[1].substr(6, 2), 10));
	return((eval(sdate) <= eval(target_date) &&
			eval(edate) >= eval(target_date)));
}
//------<< EOF >>------
