<!--
/*******************************************************************************
* システム名：HELP@RESULT
* 著作権：Copyright(C) Ace JAPAN
* プログラム名：common.js
* 説明：共通JavaScriptファイル
*******************************************************************************/


	/****************************************************************
	* 機能：ボタン２度押し抑止
	* 引数：フォームオブジェクト
	*
	* 使用方法
	* ボタン２度押し制御を有効にする場合、ボタンのonClickイベントに
	* sendCheck(this)をセットする
	* 2パターンの制御方法があります。
	* ▼イメージ制御
	* 下記のタグを制御したいソースに埋め込みます。
	* <div id="CoverIMG" style="position:absolute;top:0px;left:0px;z-index:-1;">
	* 	<img src="./spacer.gif" width="100%" alt="">
	* </div>
	* ▼各ボタン制御
	* sendCheck(this)をセットするだけです。
	****************************************************************/
	var ahref = new Array();
	function sendCheck(form){

		// イメージ画像が見つかった場合は、画像制御を行う
		if (document.getElementById('CoverIMG') == null) {
			// まずはリンク情報を格納する
			var aobj = document.getElementsByTagName('A');
			for (i = 0; aobj.length>i; i++) {
				ahref[i] = aobj[i].getAttribute('href');
			}

			len = document.forms.length;
			for (j = 0; j < len; j++) {
				formex = document.forms[j];
				// フォーム内の各要素をチェックする
				for (i = 0; i < formex.elements.length; i++) {
					type = formex.elements[i].type;
					// 要素のタイプが｢submit｣｢button｣｢reset｣の場合、抑止にする
					if (type == "submit" || type == "button" || type == "reset") {
						formex.elements[i].disabled = true;
					}
					// 要素のタイプが｢radio｣｢checkbox｣の場合、抑止にする
					else if (type == "radio" || type == "checkbox") {
//						formex.elements[i].disabled = true;
					}
					// 要素のタイプが｢text｣｢textarea｣｢select-one｣｢select-multiple｣の場合、抑止にする
					else if (type == "text" || type == "textarea" || type == "select-one"
							|| type == "select-multiple") {
						formex.elements[i].readOnly = true;
						formex.elements[i].style.color = "#999999";
					}
				}
			}

			// リンクを無効にする
			var aobj = document.getElementsByTagName('A');
			for (i = 0; aobj.length>i; i++) {
				aobj[i].removeAttribute('href');
			}
		} else {
			// 画像で制御を行う
			document.getElementById('CoverIMG').style.zIndex = "3";
		}

		form.submit();
	}



	/****************************************************************
	* 機能：キー操作による制御を行う
	* 引数：なし
	* 使用方法
	* 各制御説明を参照
	****************************************************************/
	function nextForm(){

		// -------------------------------------------------
		// Enterキーによる誤送信防止 
		// 使用方法
		// Enterキーを有効にしたい場合は、id='none'にする
		// TEXTAREAとボタンはデフォルトでスルーされる
		// -------------------------------------------------
		// TEXTAREAの場合のみ、Enter処理を実行させる
		if (event.keyCode == 13 && document.activeElement.type != "textarea"
				&& document.activeElement.id != "none"
				&& document.activeElement.type != "button"
				&& document.activeElement.type != "submit") {
			return false;

		// -------------------------------------------------
		// Escキーによるボタン２度押し抑止解除
		// Escキーを押下されたらボタン２度押し抑止を解除する
		// 使用方法
		// このファイルを設置するだけで動作する
		// -------------------------------------------------
		} else if (event.keyCode == 27) {
			// イメージ画像が見つかった場合は、画像制御の解除を行う
			if (document.getElementById('CoverIMG') == null) {
				len = document.forms.length;
				for (j = 0; j < len; j++) {
					formex = document.forms[j];
					// フォーム内の各要素をチェックする
					for (i = 0; i < formex.elements.length; i++) {
						type = formex.elements[i].type;
						// 要素のタイプが｢submit｣｢button｣｢reset｣の場合、抑止にする
						if (type == "submit" || type == "button" || type == "reset") {
							formex.elements[i].disabled = false;
						}
						// 要素のタイプが｢radio｣｢checkbox｣の場合、抑止にする
						else if (type == "radio" || type == "checkbox") {
							formex.elements[i].disabled = false;
						}
						// 要素のタイプが｢text｣｢textarea｣｢select-one｣｢select-multiple｣の場合、抑止にする
						else if (type == "text" || type == "textarea" || type == "select-one"
								|| type == "select-multiple") {
							formex.elements[i].readOnly = false;
							formex.elements[i].style.color = "#000000";
						}
					}
				}
				// リンクを有効にする
				var aobj = document.getElementsByTagName('A');
				for( i = 0; aobj.length>i; i++) {
					aobj[i].setAttribute('href',ahref[i]);
				}
			} else {
				// 画像で制御を解除する
				document.getElementById('CoverIMG').style.zIndex = "-1";
			}
		}
		return true;
	}
	window.document.onkeydown = nextForm;



	/****************************************************************
	* 機能：日付リストの日付の制御を行う
	* 引数：obj				this
	*
	* 使用方法
	* 年・月のリストボックスにonChangeイベントをセットする
	* onChange='setDay(this);'
	****************************************************************/
	function setDay(obj){
		obj = obj.form;
		var years = parseInt(obj.years.options[obj.years.selectedIndex].value);
		var months = obj.months.options[obj.months.selectedIndex].value;
		var lastday = monthday(years,months);
		var itemnum = obj.days.length;
		if (lastday - 1 < obj.days.selectedIndex) {
			obj.days.selectedIndex = lastday - 1;
		}
		obj.days.length = lastday;
		for (cnt = itemnum + 1;cnt <= lastday;cnt++) {
			obj.days.options[cnt - 1].text = cnt;
		}
	}
	function monthday(years,months){
		var lastday = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
		if (((years % 4 == 0) && (years % 100 != 0)) || (years % 400 == 0)){
			lastday[1] = 29;
		}
		return lastday[months - 1];
	}



	/****************************************************************
	* 機能：別画面表示
	* 引数：ID				URLパラメータ引数
	*     ：frame			遷移先URL
	*
	* 使用方法
	* showWindow("URLパラメータ引数", "遷移先URL")
	****************************************************************/
	function showWindow(ID, frame) {
		var act = frame + '?ID=' + ID;
		window.open(
			act,   //移動先
			'new',
			'width=650px, height=570px, resizable=no'
		);
	}

	/****************************************************************
	* 機能：別画面表示
	* 引数：ID				URLパラメータ引数
	*     ：frame			遷移先URL
	*
	* 使用方法
	* showWindow("URLパラメータ引数", "遷移先URL")
	****************************************************************/
	function showWindowResize(ID, frame) {
		var act = frame + '?ID=' + ID;
		window.open(
			act,   //移動先
			'new',
			'width=650px, height=570px, resizable=yes'
		);
	}

	// マウスポインタの変更
	function setCSR(mType) {
		document.body.style.cursor = mType;
	}



	/****************************************************************
	* 機能：テーブルなど選択された背景色を変更する
	* 引数：obj				this
	*     ：id				変更id番号
	*     ：Cnt				変更項目id数
	*     ：color			元のカラー
	*
	* 使用方法
	* 背景変更をする部分に｢id='(テーブル数)rowxx'｣をセットする
	* change_tb_bgcolor(this, "(id:位置番号)", "テーブル数", "元カラー")
	****************************************************************/
	function change_tb_bgcolor(obj, id, Cnt, color) {
		form = obj.form;
		idnumber = "id"+id;
		if (form.document.all(idnumber).checked == false) {
			var bgcolor = color;
		} else {
			var bgcolor = "#FFFF99";
		}
		for(var i = 0; i < Cnt; i++) {
			tdnumber = i+"row"+id;
			form.document.getElementById(tdnumber).style.backgroundColor = bgcolor;
		}
	}



	/****************************************************************
	* 機能：テーブルなど選択された背景色を変更する
	* 引数：id				変更id番号
	*     ：color			変更カラー
	*     ：selectid		選択済みid
	*
	* 使用方法
	* 背景変更をする部分に｢id='(テーブル数)rowxx'｣をセットする
	* change_bgcolor("(id:位置番号)", "変更カラー", "選択済みid")
	****************************************************************/
	function change_bgcolor(id, color, selectid) {

		if (id != selectid) {
			//選択背景を変更する
			document.getElementById(id).style.backgroundColor = color;
		}
	}



	/****************************************************************
	* 機能：全チェックボックスの切り替えを行う
	* 引数：obj				this
	*     ：switch			ON / OFF切り替え (True / False)
	*     ：mode			全て / 一部指定 (All / Select)
	*
	* 使用方法
	* チェックボックスの全チェック及び、全解除を行うForm内にボタンを
	* 設置します。
	* modeをSelectにした場合、class='auto_check'をチェックボックスに
	* 設定してください。
	* onclick="allcheck(this, (true / false), '(All / Select)');"
	****************************************************************/
	function allcheck(obj, tf, mode) {

		form = obj.form;
		// チェックボックスの数
		var ElementsCount = form.elements.length;
		for (i = 0; i < ElementsCount; i++) {
			var element = form.elements[i].className;
			// Typeがcheckboxの時だけ処理を行う
			if (form.elements[i].type == "checkbox") {
				if (mode == "Select") {
					if (element == "auto_check") {
						form.elements[i].checked = tf;
					}
				} else {
					form.elements[i].checked = tf;
				}
			}
		}
	}



	/****************************************************************
	* 機能：全チェックボックスの切り替えを行い、背景色を変更する
	* 引数：obj				this
	*     ：switch			ON / OFF切り替え (True / False)
	*     ：mode			全て / 一部指定 (All / Select)
	*     ：id				変更id番号
	*     ：Cnt				変更項目id数
	*     ：color			元のカラー
	*
	* 使用方法
	* チェックボックスの全チェック及び、全解除を行うForm内にボタンを
	* 設置します。
	* modeをSelectにした場合、class='auto_check'をチェックボックスに
	* 設定してください。
	* onclick="allcheck(this, (true / false), '(All / Select)');"
	****************************************************************/
	function allcheck_plus(obj, tf, mode, id, Cnt, color) {

		form = obj.form;
		var j = 0;
		// チェックボックスの数
		var ElementsCount = form.elements.length;
		for (i = 0; i < ElementsCount; i++) {
			var element = form.elements[i].className;
			// Typeがcheckboxの時だけ処理を行う
			if (form.elements[i].type == "checkbox") {
				if (mode == "Select") {
					if (element == "auto_check") {
						form.elements[i].checked = tf;
						change_tb_bgcolor(obj, j, Cnt, color);
					}
				} else {
					form.elements[i].checked = tf;
					change_tb_bgcolor(obj, j, Cnt, color);
				}
				j = j + 1;
			}
		}
	}
//-->
