// 共通JSスクリプト(肥大化したら分割を考えること)
// header.tpl で このJSを読む前に、PHPで取得できるモノを_config におさめている

	//===========================================================
	// 共通イベント制御
	//===========================================================

	// INPUT TEXTのENTERによるsubmitを抑制
	// →IE6とFireFox2で動作確認済み (prototype.jsは素晴らしい)
	function cancelEnter4OnKeyPress(event) {
		var element = Event.element(event);
		var tagName = element.tagName;
		var type = element.type;
		if (event) {
			// ボタン及びリンク以外でEnterキーが押された場合、Enterキーをキャンセル
			if (event.keyCode == Event.KEY_RETURN && !((tagName == "INPUT" && (type == "submit" || type == "image" || type == "button" || type == "file" || element.name == "id" || element.name == "password")) || tagName == "TEXTAREA" ||tagName == "A")) {
				Event.stop(event);		  // ここでEnterキーのコードを無効化しています
			}
		}
	}
	Event.observe(document, "keypress", cancelEnter4OnKeyPress);

	//===========================================================
	// ダイアログ表示系
	//===========================================================

	// IEのバージョン取得
	function getIEVersion(){
		var uName = navigator.userAgent;
		var sPtr = uName.indexOf("MSIE");
		var ePtr = uName.indexOf(";",sPtr);
		var ver = uName.substring(sPtr+5,ePtr);
		return eval(ver);
	}

	var objOpenDialogObjects;
	var _DIALOG_NAME = "alaList";
	var dialogObject = "";

	// ダイアログの存在を確認
	function existsDialog(dialog) {
		var uName = navigator.userAgent;
		if (dialog) {
			if (uName.indexOf('MSIE 4')!=-1 && uName.indexOf('Win')!=-1) {
				return !dialog.closed;
			} else {
				return typeof dialog.document == "object";
			}
		} else {
			return false;
		}
	}

	// ダイアログ表示
	function openDialog(listParam, width, height, windowName, objects) {
		if (existsDialog(dialogObject)) {
			dialogObject.close();
		}

		var url = _config.url + _config.adminIndex + "/dialog/" + listParam;
		var features = "width="+ width +",height="+ height + ",left=" + (window.screen.width-width)/2 + ",top=" + (window.screen.height-height)/2 + ",scrollbars=yes";
		objOpenDialogObjects = objects;
		dialogObject = window.open(url, windowName, features);
	}
	function callbackOpenDialog() {
		return objOpenDialogObjects;
	}

	// モーダルダイアログ表示
	function openModalDialog(url, width, height) {
		var sendValues = new Object();
		if(parseInt(getIEVersion())>=7){
			// IE7の場合のサイズ調整
			// 幅調整
			width = width - 6;
			// 高さ調整
			height = height - 32;
		}
		var uri = _config.url + _config.adminIndex + "/dialog/frame?url=" + url;
		var features = "dialogWidth:"+ width +"px;dialogHeight:"+ height +"px;help:off; status:off; edge:sunken ;unadorned:on ; resizable:off";
		var obj = showModalDialog(uri,sendValues,features);
		if(!obj) {
			obj = new Object();
			obj.closeMode = false;	// 画面終了モード
		}
		return obj;
	}

	// 法人・病院一覧
	function openHospitalList(hospital_id, corporate_name, hospital_name) {
		var objects = new Array(hospital_id, corporate_name, hospital_name);
		openDialog("hospital", 800, 750, _DIALOG_NAME, objects);
	}
	// 求人一覧
	function openJobList(job_id, job_title, job_occupational, hospital_id, corporate_name, hospital_name) {
		var objects = new Array(job_id, job_title, job_occupational, hospital_id, corporate_name, hospital_name);
		openDialog("job", 1000, 800, _DIALOG_NAME, objects);
	}

	//===========================================================
	// TABLE操作系
	//===========================================================

	// 指定テーブルの最下行にデータ追加
	function addTableRow(table, rowTable) {
		return insertTableRow(table, rowTable, table.rows.length);
	}

	// 行挿入
	// ※ 追加したrowオブジェクトを返す
	//    → 追加されたオブジェクト検索を可能にするため
	function insertTableRow(table, rowTable, insRowNum) {
		for (var cnt = 0; cnt < rowTable.rows.length; cnt++){
			var row = table.insertRow(insRowNum + cnt);
			var baseRow = rowTable.getElementsByTagName('TR').item(cnt);
			for (var i = 0;i < baseRow.cells.length;i++) {
				var cell = row.insertCell(i);
				cell.innerHTML = baseRow.getElementsByTagName('TD').item(i).innerHTML;
				cell.align = baseRow.getElementsByTagName('TD').item(i).align;
				cell.rowSpan = baseRow.getElementsByTagName('TD').item(i).rowSpan;
				cell.colSpan = baseRow.getElementsByTagName('TD').item(i).colSpan;
			}
		}
		return row;
	}

	// 行削除
	function deleteTableRow(table, delRowNum) {
		table.deleteRow(delRowNum);
	}

	//===========================================================
	// 共通利用メソッド系
	//===========================================================

	// 選択されているRADIOの配列番号を返す
	function getSelectedIndex4Radio(radioObjects) {
		if (!radioObjects) return -1;

		if (!radioObjects.length) {
			if (radioObjects.checked) {
				return 0;
			}
		}
		for (var i = 0;i < radioObjects.length;i++) {
			if (radioObjects[i].checked) {
				return i;
			}
		}
		return -1;
	}

	// 選択されているRADIOのvalueを返す
	function getSelectedValue4Radio(radioObjects) {
		if (!radioObjects) return null;

		if (!radioObjects.length) {
			if (radioObjects.checked) {
				return radioObjects.value;
			}
		}
		for (var i = 0;i < radioObjects.length;i++) {
			if (radioObjects[i].checked) {
				return radioObjects[i].value;
			}
		}
		return null;
	}

	// RADIOの一番最初の要素を選択状態にする
	function selectFirstIndex4Radio(radioObjects) {
		if (!radioObjects) return;

		if (!radioObjects.length) {
			radioObjects.checked = true;
		} else {
			radioObjects[0].checked = true;
		}
	}

	// 指定クラス名のフォーム値をクリアする
	// parentElement は省略可能 ※（指定したほうが圧倒的に初回処理は早い）
	function clearFormValue(targetClassName, parentElement) {
		var objects = document.getElementsByClassName(targetClassName, parentElement);
		var cnt = objects.length;
		for (var i = 0;i < cnt;i++) {
			var obj = objects[i];
			if (obj.type == "text") {
				obj.value = "";
			} else if (obj.type == "select-one") {
				obj.selectedIndex = 0;
			} else if (obj.type == "checkbox") {
				obj.checked = false;
			}
		}
	}

	// 指定クラス名のフォーム値をクリアする
	// parentElement は省略可能 ※（指定したほうが圧倒的に初回処理は早い）
	function clearFormValueEx(targetClassName, parentElement) {
		var objects = document.getElementsByClassName(targetClassName, parentElement);
		var cnt = objects.length;
		for (var i = 0;i < cnt;i++) {
			var obj = objects[i];
			if (obj.type == "text") {
				obj.value = obj.defaultValue;
			} else if (obj.type == "select-one") {
				obj.selectedIndex = 0;
			} else if (obj.type == "checkbox") {
				obj.checked = false;
			}
		}
	}

	// 指定クラス名対象のEvent.observe
	function setEventObserve4ElementsByClassName(targetClassName, parentElement, eventType, method) {
		var objects = document.getElementsByClassName(targetClassName, parentElement);
		for (var i = 0;i < objects.length;i++) {
			Event.observe(objects[i], eventType, method);
		}
	}

	// チェックボックスをラジオボタンの用に制御する
	function onlyCheckBox(e,className){
		var element = Event.element(e);
		if (element.checked) {
			var obj = document.getElementsByClassName(className);
			for (var i = 0;i < obj.length;i++) {
				if (obj[i].id != element.id && obj[i].checked) {
					obj[i].checked = false;
				}
			}
		}
	}

	// チェックボックスを全てクリアする
	function clearCheckBox(className){
		var obj = document.getElementsByClassName(className);
		for (var i = 0;i < obj.length;i++) {
			if (obj[i].checked) {
				obj[i].checked = false;
			}
		}
	}
	// チェックボックスを全て選択する
	function allCheckBox(className){
		var obj = document.getElementsByClassName(className);
		for (var i = 0;i < obj.length;i++) {
			if (!obj[i].checked) {
				obj[i].checked = true;
			}
		}
	}

	// NodeList かどうかの判定
	function isNodeList(obj){
		return !!obj &&
			typeof obj.length != 'undefined' &&
			typeof obj.item != 'undefined';
	}

	// NodeListから指定オブジェクトのインデックス取得
	function getNodeListIndex(nodeList,obj){
		var idx = -1;
		for(var i=0; i<nodeList.length; i++) {
			var elmNode = nodeList.item(i);
			if (elmNode == obj) {
				idx = i;
				break;
			}
		}
		return idx;
	}

	// NodeListから指定インデックスのオブジェクト削除
	function removeNodeList(nodeList,idx){
		for(var i=idx; i<nodeList.length; i++) {
			if (i + 1 < nodeList.length) {
				nodeList[i] = nodeList[i+1];
			} else {
//				nodeList[i] = null;
			}
		}
		return nodeList;
	}

	// 指定オブジェクトのインデックス取得
	// NodeList対応版
	function getListIndex(objList,element){
		var idx = 0;

		if (!isNodeList(objList)) {
			idx = objList.indexOf(element);
		} else {
			idx = getNodeListIndex(objList,element);
		}
		return idx;
	}

	// 指定文字で文字埋め(LPAD)
	// str		対象文字列
	// length	文字埋め後の文字長さ
	// padStr	埋める文字
	function pad(str, length, padStr) {
		while (str.length < length) str = padStr + str;
		return str;
	}

	// 指定年月の末日を取得
	// year		年
	// month	月
	function getLastday(year, month) {
		var day=1;
		switch(month) {
			case  1: day = 31; break;
			case  2:
				//4で割り切れる年はうるう年
				if((year % 4) == 0) {
					day = 29;
				} else {
					day = 28;
				}
				//100で割り切れる年はうるう年から除外
				if((year % 100) == 0) { day = 28; }
				//400で割り切れる年はうるう年
				if((year % 400) == 0) { day = 29; }
				break;
			case  3: day = 31; break;
			case  4: day = 30; break;
			case  5: day = 31; break;
			case  6: day = 30; break;
			case  7: day = 31; break;
			case  8: day = 31; break;
			case  9: day = 30; break;
			case 10: day = 31; break;
			case 11: day = 30; break;
			case 12: day = 31; break;
		}
		return day;
	}


