//■press(短信ライブラリ機能)

// 指定されたJSON・Xmlのファイルから取得した
// データを保持する変数
var org_data;
// 新着情報の判定基準フラグ(true：個数/false：日付)
var nFlg = false;
// 新着情報の個数基準値
var NumNew = 5;
// 新着情報の日付基準値(現在の日時から何日前までかを指定する)
var DayNew = -180;



//------------------------------
// 年度選択DropDownListの作成
//------------------------------
function createSelect(data) {
	// 年度選択DropDownListの表示領域となる
	// ルートElementを取得する
	// ルートElementが見つからない場合は、
	// 新規作成(<div id='divSelect'>要素)して追加する
	var elmDiv = document.getElementById('divSelect');
	if (null == elmDiv) {
		// <div>要素を新規作成
		elmDiv = document.createElement('div');
		// 新規作成した<div>要素のid属性の設定を行う
		elmDiv.id = 'divSelect';
		// <body>要素に追加
		document.body.appendChild(elmDiv);
	}

	// 年度選択DropDownList(<select id='yearSelect' name='yearSelect'>)を取得する
	var elmSel = document.getElementById('yearSelect');
	// 年度選択DropDownListが既に存在する場合は
	// 何も処理をしない
	if (null != elmSel && undefined != elmSel) {
		return;
	}

	// 年度のリストを取得する
	var arr = GetYearList(data);

	// リストの中で最大の年度を取得する
	var max = GetMaxOrMinYear(arr, true);
	// リストの中で最小の年度を取得する
	var min = GetMaxOrMinYear(arr, false);

	// 年度選択DropDownList(<select id='yearSelect' name='yearSelect'>要素)を新規に作成する
	elmSel = document.createElement('select');
	// <select>要素のid属性の設定を行う
	elmSel.id = 'yearSelect';
	// <select>要素のname属性の設定を行う
	elmSel.name = 'yearSelect';
	elmSel.size = 1;
	// DropDownList内の項目が切り替えられた時の
	// イベントハンドラを追加する
	addEventListener(elmSel, 'change', function(){selIndex()});

	// 「最新１年分」の選択項目Element(<option>要素)を新規に作成する
	var elmOpt = document.createElement('option');
	// Valueの設定
	elmOpt.value = '0';
	// Textの設定
	elmOpt.appendChild(document.createTextNode('最新1年分'));
	// DropDownList(<select>要素)に追加する
	elmSel.appendChild(elmOpt);

	// 各年度の選択項目Element(<option>要素)を新規に作成・追加する
	for (var i = max; i >= min; i--) {
		elmOpt = document.createElement('option');
		// Valueの設定
		elmOpt.value = i;
		// Textの設定
		elmOpt.appendChild(document.createTextNode('　' + i + '年　'));
		// DropDownList(<select>要素)に追加する
		elmSel.appendChild(elmOpt);
	}

	// 年度選択DropDownListの表示領域にElementを追加する
	elmDiv.appendChild(elmSel);
}



//------------------------------
// JSON/Xmlから取得したデータを表示するメインAPI
//------------------------------
function drawDataArea(data) {
	// データ表示箇所のルートElementを取得する
	var elmDiv = document.getElementById('divDataArea');
	if (null == elmDiv) {
		elmDiv = document.createElement('div');
		elmDiv.id = 'divDataArea';
		document.body.appendChild(elmDiv);
	}

	if (true == elmDiv.hasChildNodes()) {
		for (i = 0; i < elmDiv.childNodes.length; i++) {
			if (null != elmDiv.childNodes[i].nodeName && undefined != elmDiv.childNodes[i].nodeName) {
				if (elmDiv.childNodes[i].nodeName.toUpperCase() == 'dl'.toUpperCase()) {
					elmDiv.removeChild(elmDiv.childNodes[i]);
					break;
				}
			}
		}
	}
	var elmDl = document.createElement('dl');
	elmDiv.appendChild(elmDl);

	// 年度選択DropDownList(<select>要素)をIDの値で検索し、
	// 取得する
	var elmSel = document.getElementById('yearSelect');
	var total = 0;

	// 各表示項目をループして表示/非表示を切り替える
	for (i = 0; i < data.item.length; i++) {
		// 対象の項目が新着情報に該当するかどうか判定する
		// ※新着かどうかの判定に使う基準値は
		//   ファイル上部の定数に定義してあるので、
		//   そこの値を編集して表示を調節して下さい。
		var IsNew = IsNewItem(i, data.item[i]);
		
		if (data.item[i].date.substr(0, 4) == elmSel.options[elmSel.selectedIndex].value) {
			// DropDownListで選択された年度に該当する
			// データを表示する処理
			createData(elmDl, data.item[i], IsNew);
			total += 1;
		} else if ("0" == elmSel.options[elmSel.selectedIndex].value) {
			// 「最新１年分」に該当するデータかどうか判定する
			if (IsOneYearAgo(new Date(), data.item[i].date)) {
				// 「最新１年分」に該当するデータを表示する処理
				createData(elmDl, data.item[i], IsNew);
				total += 1;
			}
		}
	}
	// データが１件も存在しない場合
	if (total == 0) {
		elmDl.appendChild(document.createTextNode('データが存在しません'));;
	}
}
//------------------------------
// 各表示項目が新着情報に該当するかどうかを判定する
// 【パラメータ】
// i：各表示項目のIndex番号
// item：JSON/Xmlデータの各項目(item)
//------------------------------
function IsNewItem(i, item) {
	// nFlgがtrueの場合は個数で新着情報かを判定し、
	// falseの場合は基準日で新着情報かを判定する
	// ※ファイル上部の定数で定義しているので
	//   その値を切り替えて調整して下さい
	if (nFlg) {
		// 個数で新着情報を判定する
		if (i < NumNew) {
			return true;
		}
	} else {
		// 日付で新着情報を判定する

		// 各表示項目のdateの値をyyyyMMddにフォーマット
		var fDate = GetFormatDate(item.date);
		// 新着かどうか判定するための基準日を取得する
		var cDate = GetComputeDate();

		if (fDate != null) {
			// 各表示項目のdateの値と新着の基準日と比較して
			// 新しければ新着とみなす
			if (fDate >= cDate) {
				return true;
			}
		}
	}

	// ここを通る場合は、必ず新着情報ではない
	return false;
}
//------------------------------
// 年月日と加算日からn日後、n日前を求める関数
//------------------------------
function GetComputeDate() {
	myD = new Date();
	myD = new Date(myD.getFullYear(), myD.getMonth(), myD.getDate() + DayNew);

	myYear = myD.getFullYear();
	myMonth = myD.getMonth() + 1;
	myDate = myD.getDate();

	return myYear.toString() + formatNum(2, myMonth) + formatNum(2, myDate);
}
//------------------------------
// 各表示項目のdateの値(yyyy/MM/dd hh:mm:ss)を
// yyyyMMddにフォーマットして返す関数
//------------------------------
function GetFormatDate(date) {
	return date.substr(0, 4) + date.substr(5, 2) + date.substr(8, 2);
}
//------------------------------
// 表示桁数のフォーマット関数
//------------------------------
function formatNum(keta, num) {
	var src = new String(num);
	var cnt = keta - src.length;
	if (cnt <= 0) return src;
	while (cnt-- > 0) src = "0" + src; return src;
}



//------------------------------
// JSON/Xmlから取得したデータの各項目を表示させる関数
// 表示データ作成(１データ毎)
// 【パラメータ】
// element：
// item：JSON/Xmlデータの各項目(item)
// IsNew：新着の項目かどうか
//------------------------------
function createData(element, item, IsNew) {
	// <dt>要素を新規に作成する
	var elmDt = document.createElement('dt');
	// 作成した<dt>要素に各表示項目の「format_date」の値を追加する
	elmDt.appendChild(document.createTextNode(item.format_date));

	// パラメータで渡されてきた<dl>要素に<dt>要素を追加する
	element.appendChild(elmDt);

	// <dd>要素を新規に作成する
	var elmDd = document.createElement('dd');

	// 各表示項目の「link_tanshin」の値が設定されている場合は
	// <dd>要素に<a>要素を追加する
	// 「link_tanshin」が設定されていない場合は
	// <dd>要素に各表示項目の「title」の値のみを追加する
	if (item.link_tanshin.length > 0) {
		var elmA = document.createElement('a');
		elmA.href = item.link_tanshin;
		elmA.target = '_blank';
		elmA.appendChild(document.createTextNode(item.tanshin_type));
		elmDd.appendChild(elmA);
	} else {
		elmDd.appendChild(document.createTextNode(item.tanshin_type));
	}

	// ファイルタイプの<img>要素を新規に作成する
	var elmImg = document.createElement('img');
	elmImg.setAttribute('src', '../JS/pdf_icon.gif');
	elmImg.setAttribute('align', 'absmiddle');
	elmDd.appendChild(elmImg);

	// ファイルサイズあり
	if (item.tanshin_size.length > 0) {
		elmDd.appendChild(document.createTextNode('（' + item.tanshin_size + 'KB）'));
	}

	// 新着情報
//	if (IsNew) {
//		var elmImg2 = document.createElement('img');
//		elmImg2.setAttribute('src', 'img/new_icon.gif');
//		elmImg2.setAttribute('align', 'absmiddle');
//		elmDd.appendChild(elmImg2);
//	}

	element.appendChild(elmDd);
}






//------------------------------
// 年度選択DropDownListの項目が
// 切り替えられた時のイベントハンドラ
//------------------------------
function selIndex(index) {
	// 表示データの更新を行う
	drawDataArea(org_data);
}



//------------------------------
// JSON・Xmlから取得したデータの
// 年度のリストを取得するためのサポート関数
//------------------------------
function GetYearList(data) {
	// 年度の配列格納用の変数を新規に宣言
	var arr = new Array();

	// JSON(またはXml)のデータをループして、
	// 各データの「date」で指定されている値を取得し、
	// 配列に格納する。
	for (i = 0; i < data.item.length; i++) {
		var year = data.item[i].date.substr(0, 4);
		if (!(year in arr)) {
			arr[year] = year;
		}
	}

	return arr;
}
//------------------------------
// 取得した年度のリストから
// 最大(または最小)の年度を取得するためのサポート関数
// 【パラメータ】
// IsMax：最大(または最小)の切り替えフラグ
//------------------------------
function GetMaxOrMinYear(arr, IsMax) {
	if (IsMax) {
		// 年度リストを降順に並びかえ
		arr.reverse();
	} else {
		// 年度リストを昇順に並びかえ
		arr.sort();
	}
	return arr[0];
}
//------------------------------
// 【クロスブラウザ対応】
// 各ブラウザによって、
// 年度選択DropDownListへのイベントの追加方法が違うため、
// それをカバーするサポート関数
// 【パラメータ】
// Target：イベントの追加対象になるElement
// type：イベント名から「on」を除いた名前
// func：イベントが発生した時に実行させる関数
//------------------------------
function addEventListener(target, type, func) {
	if(target.attachEvent) {
		// 【IE対応】イベント追加処理
		target.attachEvent("on" + type, func);
	} else if(target.addEventListener) {
		// 【FireFox対応】イベント追加処理
		target.addEventListener(type, func, true);
	} else {
		//イベントリスナが使えない場合は on○○ 属性を上書きで妥協（今時あんまり無いと思うが・・・
		target["on" + type] = func;
	}
}





//------------------------------
// 年度選択DropDownListで
// 「最新１年分」が指定されている場合に
// 各データが最新１年のデータかどうか判定するサポート関数
//------------------------------
function IsOneYearAgo(CurDate, CompDate) {
	var y = CompDate.substr(0, 4);
	var m = CompDate.substr(5, 2);
	var d = CompDate.substr(8, 2);

	var year = CurDate.getYear();
	if (year < 2000) year += 1900;
	var mon = CurDate.getMonth() + 1;
	var date = CurDate.getDate();

	NewDate = new Date(year - 1, mon, date);
	if (NewDate <= new Date(y, m, d)) {
		return true;
	}
	return false;
}



//------------------------------
// CallBack関数
// 【！注意！】
// この関数の関数名と、
// JSON・Xmlに記載されているCallBack関数名は
// 必ず一致するように設定して下さい。
// また、関数名に「-」が入っている場合は、
// 「_」などに置き換えて下さい。
// (「_」は関数名に利用できないため)
//------------------------------
function eolparts_press_4(data) {
	// 取得データが存在しない場合は
	// 何も処理をせず
	if (data.item_count <= 0) {
		return;
	}

	// グローバル変数にデータを保持しておく
	org_data = data;

	// 年度選択DropDownListの作成
	createSelect(data);

	// 取得データの表示処理
	drawDataArea(data);

}
document.write('<script type="text/javascript" src="http://v4.eir-parts.net/V4Public/EIR/8200/ja/press/press_4.js" charset="UTF-8"></script>');

