	/* ==========================================================================
	 * submit関数
	 * ==========================================================================
	 * submitの前に画面制御を行い、指定したアクションでsubmitします。
	 * <P>
	 * document内にCONTENTSブロック、WAITブロック、FREEZE_PANEブロックが存在する場合は、
	 * 画面フリーズ処理を行います。
	 * <P>
	 * form内にボタンが存在する場合は、ボタンをdisabledに変更します。
	 * 指定したオブジェクトを優先的にdisabledにするので、ボタン押下時に使用する時は、
	 * 二度押し対応のため押下したボタンのオブジェクト(this)をパラメータ($param)に指定して下さい。
	 * <P>
	 * submit時(POST時)にdisabledの項目もPOSTしたい場合は、パラメータ($bfFlg)に
	 * trueを指定してください。
	 * <P>
	 * @param <code>$param  </code> 画面制御するform名 or form内のオブジェクト
	 * @param <code>$action </code> submitするアクション（/コントローラー名/メソッド名）
	 * @param <code>$bfFlg  </code> 前処理フラグ（true：submit前にenabled処理を行う、false：submit前にenabled処理を行わない）
	 */
	function goSubmit($param, $action, $bfFlg) {

		// 画面フリーズ処理
		var $result = freezeScreen();

		// 画面フリーズ処理を実行していない場合、ボタン制御を行う
		if (!$result) {
			disableAllButton($param);
		}

		// 前処理フラグがtrueの場合、SUBMIT前の画面制御を行う
		if ($bfFlg) {
			bfSubmit($param);
		}

		// formオブジェクトの取得
		var $form = getFormObj($param);
		if ($form == null) return;

		// 指定したアクションでsubmit
		$form.action = $action;
		$form.submit();

	}// end goSubmit()

	/* ==========================================================================
	 * URI変更関数
	 * ==========================================================================
	 * location.hrefでURIを変更する前に画面制御を行い、指定したURIに移動します。
	 * <P>
	 * document内にCONTENTSブロック、WAITブロック、FREEZE_PANEブロックが存在する場合は、
	 * 画面フリーズ処理を行います。
	 * <P>
	 * form内にボタンが存在する場合は、ボタンをdisabledに変更します。
	 * 指定したオブジェクトを優先的にdisabledにするので、ボタン押下時に使用する時は、
	 * 二度押し対応のため押下したボタンのオブジェクト(this)をパラメータ($param)に指定して下さい。
	 * <P>
	 * @param <code>$param  </code> 画面制御するform名 or form内のオブジェクト
	 * @param <code>$uri    </code> 移動先のURI
	*/
	function goHref($param, $uri) {

		// 画面フリーズ処理
		var $result = freezeScreen();

		// 画面フリーズ処理を実行していない場合、ボタン制御を行う
		if (!$result) {
			disableAllButton($param);
		}

		// 指定したURIに移動
		location.href = $uri;

	}// end goHref()

	/* ==========================================================================
	 * 画面フリーズ関数
	 * ==========================================================================
	 * document内にCONTENTSブロック(コンテンツ内容)とWAITブロック(Wait表示部分)が
	 * 存在する場合、CONTENTSブロックをWAITブロックに切り替えます。
	 * <P>
	 * またFREEZE_PANEブロック(前面表示パネル)が存在する場合、
	 * Window前面に表示し、画面操作ができないようにします。
	 * <P>
	 * CONTENTSブロック、WAITブロック、FREEZE_PANEブロックが存在しない場合、
	 * 何の処理も行いません。
	 * <P>
	 * @return フリーズ処理結果（true:実行済, false：未実行）
	 */
	function freezeScreen() {

		var $rtn =false;

		// 画面制御するdivブロックの取得
		var $contents	= document.getElementById("CONTENTS");		// コンテンツ内容
		var $wait		= document.getElementById("WAIT");			// Wait表示部分
		var $outerPane	= document.getElementById("FREEZE_PANE");	// Window前面に表示するパネル

		// コンテンツ内容ブロックとWait表示部分ブロックが存在する場合、表示切替
		if ($contents && $wait) {
			$contents.style.display="none";		// コンテンツ内容を非表示
			$wait.style.display="block";		// Wait表示部分を表示
			scroll(0,0);
			$rtn = true;
		}
		// 前面表示パネルが存在する場合、Window前面に表示し、画面操作できないようにする
		if ($outerPane) {
			$outerPane.className = "freeze_on";
			scroll(0,0);
			$rtn = true;
		}

		return $rtn;

	}// end freezeScreen()

	/* ==========================================================================
	 * form内のボタン制御関数
	 * ==========================================================================
	 * 指定したform(※1)内の全てのボタン(BUTTON, SUBMIT, RESET)をdisabledに変更します。
	 * ※1：パラメータがオブジェクトの場合、指定したオブジェクトが存在するform
	 * <P>
	 * パラメータがオブジェクトの場合、指定したオブジェクトを優先的にdisabledにします。
	 * <P>
	 * ボタン押下時に使用する場合は、二度押し対応のため、
	 * 押下したボタンのオブジェクト(this)をパラメータに指定して下さい。
	 * <P>
	 * @param <code>$param   </code> 画面制御するform名 or form内のオブジェクト
	 */
	function disableAllButton($param) {

		// パラメータがオブジェクトの場合
		if (typeof($param) == "object") {
			// 指定したオブジェクトをdisabledに変更
			$param.disabled = true;
		}

		// formオブジェクトの取得
		var $form = getFormObj($param);
		if ($form == null) return;

		// form内のオブジェクトの設定
		for($i=0; $i < $form.elements.length; $i++) {
			var $elem = $form.elements[$i];

			try {
				$tagname = $elem.tagName.toUpperCase();
				if ( $tagname == "INPUT" || $tagname == "TEXTAREA" || $tagname == "SELECT" || $tagname == "BUTTON") {
					switch ($elem.type.toUpperCase()) {
						// ボタン（BUTTON, SUBMIT, RESET）の場合、disabledに変更
						case "BUTTON":
						case "SUBMIT":
						case "RESET":
							$elem.disabled = true;
							break;
					}
				}
			} catch(e) {
				// 何もしない
			}
		}
	}// end disableAllButton()

	/* ==========================================================================
	 * form内のボタン制御関数
	 * ==========================================================================
	 * 指定したform(※1)内の全てのボタン(BUTTON, SUBMIT, RESET)をenabledに変更します。
	 * ※1：パラメータがオブジェクトの場合、指定したオブジェクトが存在するform
	 * <P>
	 * @param <code>$param   </code> 画面制御するform名 or form内のオブジェクト
	 */
	function enableAllButton($param) {

		// formオブジェクトの取得
		var $form = getFormObj($param);
		if ($form == null) return;

		// form内のオブジェクトの設定
		for($i=0; $i < $form.elements.length; $i++) {
			var $elem = $form.elements[$i];

			try {
				$tagname = $elem.tagName.toUpperCase();
				if ( $tagname == "INPUT" || $tagname == "TEXTAREA" || $tagname == "SELECT" || $tagname == "BUTTON") {
					switch ($elem.type.toUpperCase()) {
						// ボタン（BUTTON, SUBMIT, RESET）の場合、disabledに変更
						case "BUTTON":
						case "SUBMIT":
						case "RESET":
							$elem.disabled = false;
							break;
					}
				}
			} catch(e) {
				// 何もしない
			}
		}
	}// end enableAllButton()

	/* ==========================================================================
	 * submit前の画面制御関数
	 * ==========================================================================
	 * 指定したform(※1)内のボタン以外のオブジェクトをenabledに変更します。
	 * ※1：パラメータがオブジェクトの場合、指定したオブジェクトが存在するform
	 * <P>
	 * オブジェクトがdisabledだと、POSTする時に項目の値が渡せません。
	 * disabledの項目もPOSTしたい場合は、この関数を使用して下さい。
	 * <P>
	 * @param <code>$param  </code> 画面制御するform名 or form内のオブジェクト
	 */
	function bfSubmit($param) {

		// formオブジェクトの取得
		var $form = getFormObj($param);
		if ($form == null) return;

		// form内のオブジェクトの設定
		for($i=0; $i < $form.elements.length; $i++) {
			var $elem = $form.elements[$i];

			try {
				$tagname = $elem.tagName.toUpperCase();
				if ( $tagname == "INPUT" || $tagname == "TEXTAREA" || $tagname == "SELECT" || $tagname == "BUTTON") {
					switch ($elem.type.toUpperCase()) {
						// ボタン（BUTTON, SUBMIT, RESET）の場合
						case "BUTTON":
						case "SUBMIT":
						case "RESET":
							break;
						// ボタン以外のオブジェクトをenabledに変更
						// （POSTする時にdisabledだと値が渡せないため）
						default:
							$elem.disabled = false;
							break;
					}
				}
			} catch(e) {
				// 何もしない
			}
		}

	}// end bfSubmit()


	/* ==========================================================================
	 * エレメントのクリア関数
	 * ==========================================================================
	 * 配列で指定したエレメントの値をクリアします。
	 * クリア処理を行うのは、指定したエレメントがform要素の場合です。
	 * (入力フィールド・選択フィールド・チェックフィールド)
	 * <P>
	 * 属性がreadonlyになっているか、disabledの場合は、値をクリアしません。
	 * <P>
	 * @param <code>$arrElements  </code> クリア処理を行うエレメントの配列
	 */
	function clearElements($arrElements) {

		// 指定されたエレメントに対してクリア処理を行う
		for($i=0; $i < $arrElements.length; $i++) {
			// エレメントの取得
			var $elems;
			if (typeof($arrElements[$i]) == "object") {
				$elems = new Array($arrElements[$i]);
			}
			else if (typeof($arrElements[$i]) == "string") {
				$elems = document.getElementsByName($arrElements[$i]);
			}
			else {
				continue;
			}

			for($j=0; $j < $elems.length; $j++) {
				// 例外が発生した場合、次のエレメントに対して処理を行う
				try {
					var $elem = $elems[$j];
					$tagname = $elem.tagName.toUpperCase();
					if ( $tagname == "INPUT" || $tagname == "TEXTAREA" || $tagname == "SELECT" || $tagname == "BUTTON") {
						if (!($elem.getAttribute("readonly") == true || $elem.disabled == true)) {
							switch ($elem.type.toUpperCase()) {
								// 入力フィールドの場合、valueをクリア
								case "TEXT":
								case "TEXTAREA":
								case "PASSWORD":
								case "FILE":
									$elem.value = "";
									break;
								// チェックフィールドの場合、checkedを外す
								case "CHECKBOX":
								case "RADIO":
									$elem.checked = false;
									break;
								// 選択フィールドの場合、選択行を先頭にする
								case "SELECT-ONE":
									$elem.selectedIndex = 0;
									break;
							}//end switch
						}
					}
				} catch(e) {
					// 何もしない
				}
			}//end for $j

		}//end for $i

	}// end clearElements()


	/* ==========================================================================
	 * form内のフィールドクリア関数
	 * ==========================================================================
	 * 指定したform(※1)内の全ての入力フィールド・選択フィールド・チェックフィールドの
	 * 値をクリアします。
	 * ※1：パラメータがオブジェクトの場合、指定したオブジェクトが存在するform
	 * <P>
	 * 属性がreadonlyになっているか、disabledの場合は、値をクリアしません。
	 * <P>
	 * INPUTタグのRESETボタンだと、画面表示時の初期状態に戻すだけなので、
	 * form内のフィールドの値をクリアしたい場合は、この関数を使用してください。
	 * <P>
	 * @param <code>$param  </code> クリア処理を行うform名 or form内のオブジェクト
	 */
	function clearForm($param) {

		// formオブジェクトの取得
		var $form = getFormObj($param);
		if ($form == null) return;

		// form内のオブジェクトのクリア
		clearElements($form.elements);

	}// end clearForm()

	/* ==========================================================================
	 * formのオブジェクト取得関数
	 * ==========================================================================
	 * パラメータがオブジェクトの場合、指定したオブジェクトが存在するformオブジェクトを返します。
	 * パラメータが文字列の場合、指定した名前のformオブジェクトを返します。
	 * <P>
	 * 上記以外のパラメータの場合、もしくはパラメータが不適切な場合、nullを返します。
	 * <P>
	 * @param  <code>$param  </code> 取得したいformの名前 or form内のオブジェクト
	 * @return formオブジェクト
	 */
	function getFormObj($param) {

		var $form = null;

		try {
			// パラメータがオブジェクトの場合
			if (typeof($param) == "object") {
				$form = document.forms[$param.form.name];
			}
			// パラメータが文字列の場合
			else if (typeof($param) == "string") {
				$form = document.forms[$param];
			}
		} catch(e) {
			// 何もしない
		}

		return $form;

	}// end getFormObj()
