/*
 * 検索条件入力画面で対象データベース：NACSISを選択したとき
 * NACSIS検索項目以外の検索項目を非表示にするスクリプト
 */

//画面再読み込み時にスクリプトを実行する。
addEvent(window, "load", function() {
	onLoad();
});

// NII検索項目
var niifield = new Array("keyword", "title", "author", "publisher", "subject",
		"language", "isbn", "issn", "ncid", "listLimit");

// 画面再読み込み時
function onLoad() {
	var databasetarget = document.getElementById("databasetarget-nii");
	if (databasetarget != null && databasetarget.checked) {
		selectNiiField(true);
	}

	// キーワード項目にフォーカスを与える
	// アンカーが指定されているときはフォーカスを当てない
	if (location.hash == "") {
		var keyword = document.getElementById("keyword");
		if (keyword != null) {
			keyword.focus();
		}
	}
}

// NACSIS項目選択時
function selectNiiField(value) {
	for (i = 0; i < document.forms.length; i++) {
		if (document.forms[i].name == "InputActionForm"
				|| document.forms[i].name == "LocalResultActionForm") {
			var form = document.forms[i];
			break;
		}
	}

	if (form) {
		for (i = 0; i < form.elements.length; i++) {
			element = form.elements[i];

			// submitボタンは無視
			if (element.type == "submit") {
				continue;
			}

			// hiddenタグは無視
			if (element.type == "hidden") {
				continue;
			}

			// 対象データベースは無視
			if (element.name == "databasetarget") {
				continue;
			}

			// 資料の種類は図書、雑誌以外は選択不可
			if (element.name == "searchtarget" || element.name == "fulltext") {
				if (value) {
					if (element.id == "searchtarget-BK"
							|| element.id == "searchtarget-MG") {
						continue;
					} else {
						document.getElementById(element.id).checked = "";
						document.getElementById(element.id).disabled = "disabled";
						var labelElement = document.getElementById(element.id
								+ "-label");
						labelElement.className = "searchtarget-disable";
					}
				} else {
					document.getElementById(element.id).disabled = "";
					var labelElement = document.getElementById(element.id
							+ "-label");
					labelElement.className = "";
				}
				continue;
			}

			// NII項目かどうか判定
			for (j = 0; j < niifield.length; j++) {
				if (niifield[j] == element.name) {
					isNiiField = true;
					break;
				}
				isNiiField = false;
			}

			// NII項目以外の項目は非表示
			if (document.getElementById("f-" + element.name)) {
				if (value && !isNiiField) {
					document.getElementById("f-" + element.name).style.display = "none";
				} else {
					document.getElementById("f-" + element.name).style.display = "";
				}
				continue;
			}

			// キーワードのandor項目は選択不可
			if (element.name == "keywordandor" && form.keywordandor.options) {
				if (value) {
					form.keywordandor.options[0].selected = "selected";
					form.keywordandor.disabled = "disabled";
				} else {
					form.keywordandor.disabled = "";
				}
			}

			// タイトルのandor項目は選択不可
			if (element.name == "titleandor" && form.titleandor.options) {
				if (value) {
					form.titleandor.options[0].selected = "selected";
					form.titleandor.disabled = "disabled";
				} else {
					form.titleandor.disabled = "";
				}
			}

			// 編著者名のandor項目は選択不可
			if (element.name == "authorandor" && form.authorandor.options) {
				if (value) {
					form.authorandor.options[0].selected = "selected";
					form.authorandor.disabled = "disabled";
				} else {
					form.authorandor.disabled = "";
				}
			}

			// 件名のandor項目は選択不可
			if (element.name == "subjectandor" && form.subjectandor.options) {
				if (value) {
					form.subjectandor.options[0].selected = "selected";
					form.subjectandor.disabled = "disabled";
				} else {
					form.subjectandor.disabled = "";
				}
			}
		}
		// 一覧表示項目のソート順を非表示
		if (document.getElementById("display-listOrder")) {
			if (value) {
				document.getElementById("display-listOrder").style.display = "none";
			} else {
				document.getElementById("display-listOrder").style.display = "";
			}
		}
	}
}

// 画面読み込み時にスクリプトを実行する
// 複数のjsライブラリのwindow.onloadを有効にするためのメソッド
function addEvent(element, listener, func) {
	if (element.addEventListener) {
		// IE以外のブラウザのとき
		element.addEventListener(listener, func, false);
	} else {
		if (element.attachEvent) {
			// IEのとき
			element.attachEvent('on' + listener, func);
		}
	}
}
