
	window.onload = ff_init;

	// 確認画面時にコントロールの情報をストック
	var stockHtml = {};
	var system_file = "ff_system/ff_system.php";
	var err_msg = "";

	function ff_init() {
		// 状態管理用値の設定値
		new Insertion.Top("ff_form", "<input type='hidden' id='ff_state' name='ff_state' value='0'>");

		// 送信ボタンのイベント設定
		$("ff_submit").observe("click", ff_submit_click);

		// 取消ボタンのイベント設定
		$("ff_cancel").observe("click", ff_cancel_click);

		// 入力欄の親エレメントにIDをつける
		for (var elem in elem_list) {
			$(elem).parentNode.id = elem +"_area";
		}

		// 入力欄にイベント設定
		ff_input_event();
	}

	// 入力欄にイベント設定
	function ff_input_event () {
		for (var elem in elem_list) {
			// 入力チェックイベント設定
			switch (elem_list[elem]) {
				// 必須チェック用イベント
				case "null":
					$(elem).observe("focus", function () { form_reset(this.id); });
					$(elem).observe("blur",  function () { check_null(this.id); });
					break;
				// メールチェック用イベント
				case "mail":
					$(elem).observe("focus", function () { form_reset(this.id); });
					$(elem).observe("blur",  function () { check_mail(this.id); });
					break;
				// メールチェック用イベント
				case "tel":
					$(elem).observe("focus", function () { form_reset(this.id); });
					$(elem).observe("blur",  function () { check_tel(this.id); });
					break;
				// メールチェック用イベント
				case "zip":
					$(elem).observe("focus", function () { form_reset(this.id); });
					$(elem).observe("blur",  function () { check_zip(this.id); });
					break;
				// メールチェック用イベント
				case "mail_null":
					$(elem).observe("focus", function () { form_reset(this.id); });
					$(elem).observe("blur",  function () { if (check_null(this.id) == true) { check_mail(this.id); } });
					break;
				// メールチェック用イベント
				case "tel_null":
					$(elem).observe("focus", function () { form_reset(this.id); });
					$(elem).observe("blur",  function () { if (check_null(this.id) == true) { check_tel(this.id); } });
					break;
				// メールチェック用イベント
				case "zip_null":
					$(elem).observe("focus", function () { form_reset(this.id); });
					$(elem).observe("blur",  function () { if (check_null(this.id) == true) { check_zip(this.id); } });
					break;
			}
		}
	}

	function ff_submit_click() {
		var tmp = "";

		switch ($F("ff_state")) {
			// 入力画面からの確認画面へ遷移
			case "0":
				// エラーチェック
				err_msg = "";
				for (var elem in elem_list) {
					switch (elem_list[elem]) {
						case "null": check_null(elem, true); break;
						case "mail": check_mail(elem, true); break;
						case "tel":  check_tel(elem, true); break;
						case "zip":  check_zip(elem, true); break;
						case "mail_null": if (check_null(elem, true) == true) { check_mail(elem, true); } break;
						case "tel_null":  if (check_null(elem, true) == true) { check_tel(elem, true); } break;
						case "zip_null":  if (check_null(elem, true) == true) { check_zip(elem, true); } break;
					}
				}
				disp_msg(err_msg);

				// エラーがあったら処理終了
				for (var elem in elem_list) {
					switch (elem_list[elem]) {
						case "null": if (check_null(elem) == false) { return; } break;
						case "mail": if (check_mail(elem) == false) { return; } break;
						case "tel":  if (check_tel(elem) == false)  { return; } break;
						case "zip":  if (check_zip(elem) == false)  { return; } break;
						case "mail_null": if (check_null(elem) == false || check_mail(elem) == false) { return; } break;
						case "tel_null":  if (check_null(elem) == false || check_tel(elem) == false)  { return; } break;
						case "zip_null":  if (check_null(elem) == false || check_zip(elem) == false)  { return; } break;
					}
				}

				for (var elem in elem_list) {
					stockHtml[elem+"_area"] = $(elem+"_area").innerHTML;
					tmp = $F(elem);
					//tmp = tmp.stripScripts();
					tmp = tmp.stripTags();
					if ($(elem).type == "textarea") {
						tmp = tmp.replace(/(\r|\n)/g, "<br />");
					}
					$(elem+"_area").innerHTML = tmp;
				}
				$("ff_state").value = "1";
				break;

			// 確認画面から送信処理を実行
			case "1":
				var elem_data = {};

				for (var elem in elem_list) {
					tmp = $(elem+"_area").innerHTML
					elem_data[elem] = tmp.replace('<br />', '\n').stripTags();
				}

				new Ajax.Request( system_path + system_file, {
					method: 'post',
					parameters: $H( elem_data ).toQueryString(),
					onSuccess: function( request ) {
						switch (request.responseText) {
							case "err_mail": form_error('ff_mail'); break;
							case "err_data": end_msg("情報する情報がありません。"); break;
							case "success" : end_msg("送信が完了しました。"); break;
							default: end_msg("送信に失敗しました。"); break;
						}
					},
					onFailure: function( request ) { end_msg("送信に失敗しました。"); }
				} );
				break;
		}
	}

	function ff_cancel_click() {

		switch ($F("ff_state")) {
			// 入力内容のクリア
			case "0":
				for (var elem in elem_list) {
					if ($(elem).type == "select-one") {
						$(elem).selectedIndex = 0;
					} else {
						$(elem).value = "";
					}
				}
				break;
			// 確認画面から入力画面に遷移
			case "1":
				for (var elem in elem_list) {
					$(elem+"_area").innerHTML = stockHtml[elem+"_area"];
				}
				// 入力欄にイベント設定
				ff_input_event();
				$("ff_state").value = "0";
				break;
		}
	}

	function check_null(elem, logflg) {
		if ($(elem).value == "") {
			if (logflg) err_msg += elem_name[elem] + "を入力してください。<br>\n";
			form_error(elem); return false;
		}
		else { form_reset(elem); return true; }
	}

	function check_mail(elem, logflg) {
		if ($(elem).value != "" && $(elem).value.match(/^(\S+)@(\S+\.\S+)$/) == null) {
			if (logflg) err_msg += elem_name[elem] + "を正しく入力してください。<br>\n";
			form_error(elem); return false;
		}
		else { form_reset(elem); return true; }
	}

	function check_tel(elem, logflg)  {
		if ($(elem).value != "" && $(elem).value.match(/^\d{2,4}-\d{2,4}-\d{4}$/) == null) {
			if (logflg) err_msg += elem_name[elem] + "を正しく入力してください。<br>\n";
			form_error(elem); return false;
		}
		else { form_reset(elem); return true; }
	}

	function check_zip(elem, logflg)  {
		if ($(elem).value != "" && $(elem).value.match(/^\d{3}-\d{4}$/) == null) {
			if (logflg) err_msg += elem_name[elem] + "を正しく入力してください。<br>\n";
			form_error(elem); return false;
		}
		else { form_reset(elem); return true; }
	}

	function form_reset(elem) { $(elem).style.backgroundColor="#fff"; }
	function form_error(elem) { $(elem).style.backgroundColor="#fcc"; }

	function disp_msg(msg) {
		$("ff_alert").innerHTML = "<div style='margin:0px 0px 10px 170px;text-align:left;color:#f00;'>"+msg+"<br /></div>";
	}

	function end_msg(msg) {
		disp_msg(msg);
		$("ff_submit").disabled = true;
		$("ff_cancel").disabled = true;
	}

