var form_err = new Array();
var form_state;

$(function() {
	form_state = "input";
	$('#contact_form').formtips();
	$('form input.date:text').mask('9999/99/99');
	$('form input.time:text').mask('99:99');
	$('form input.zipcode:text').mask('999-9999');
	form_check();
	$('form input, form select').blur(form_check);  // $('form input, select, textarea')
	$('#btn_next').click(form_next);
	$('#btn_back').click(form_back);
});

function form_check () {
	// エラー初期化
	form_err = new Array();
	$('div.alertmsg, span.alertmsg').remove();
	$('#empty_alert').hide();

	// 入力チェック(フォーム毎別)
	if ('function' === typeof input_check) {
		input_check();
	}

	if (form_err.length > 0) {
		$('#empty_alert').html('<div class="title">ご入力いただいていない必須項目があります</div>' + form_err.join('&nbsp;&nbsp;'));
		$('#empty_alert').show();
		return false;
	}

	return true;
}

function form_next () {
	switch (form_state) {
		case "input":
			if (form_check() == false) {
				$('#empty_alert').hide();
				$('#empty_alert').fadeIn(1000);
				return false;
			}
			if ($('#form_agreement').attr('checked') == false) {
				alert('個人情報の利用目的をご確認頂き\n同意するにチェックをしてください。');
				$(window).scroll(0,200);
				return false;
			}
			clear_formtips();	// 入力例チップをクリア
			confirm_mode();		// 確認モードへ移行
			form_state = "confirm";
			break;

		case "confirm":
			if ($('#form_agreement').attr('checked') == false) {
				alert('個人情報の利用目的をご確認頂き\n同意するにチェックをしてください。');
				$(window).scroll(0,200);
				return false;
			}
			$('#contact_form').append('<input type="hidden" name="send" value="enter" />');
			$('#contact_form').submit();
			form_state = "submit";
			break;

	}
}



function form_back () {
	switch (form_state) {
		case "input":
			if (confirm('お問い合わせ内容をリセット致します。') == true) {
				location.href = location.href;
			}
			break;

		case "confirm":
			input_mode();		// 入力モードへ移行
			form_state = "input";
			break;
	}
}

function alertMsg (element, message, tagname) {
	if (!tagname) tagname = "div";
	if (objModel[element.replace('#', '')] != null) {
		form_err.push('<label for="' + element.replace('#', '') + '">' + objModel[element.replace('#', '')] + '</label>');
	}
	$(element).after('<' + tagname + ' class="alertmsg">' + message + '</' + tagname + '>');
}

function get_errmsg (type) {
	switch (type) {
		case "Equal": return "同じものを入力してください";
		case "Empty": return "必須入力です";
		case "OneEmpty": return "どちらかを入力してください";
		case "Num":   return "半角数値のみ有効です";
		case "Eisu":  return "半角英数のみ有効です";
		case "Kana":  return "全角カタカナのみ有効です";
		case "Zip":   return "郵便番号をご確認ください";
		case "Phone": return "番号をご確認ください";
		case "Mail":  return "アドレスをご確認ください";
	}
}

function clear_formtips () {
	// untip 'em
	$('.tipped', '#contact_form').each(function() {
		var elem = $(this);
		var val = $(this).attr('title');
		if($(elem).val() == val) {
			$(elem).val('').removeClass('tipped');
		}
	});
}

function set_formtips () {
	// untip 'em
	$('.tipped', '#contact_form').each(function() {
		var elem = $(this);
		var lv = $(this).attr('title');
		if($(elem).is('textarea')) {
			if($(elem).text() == lv) {
				$(elem).text('').removeClass('tipped');
			}
		} else {
			if($(elem).val() == lv) {
				$(elem).val('').removeClass('tipped');
			}
		}
	});
}

function input_mode () {
	$('.caution').show();
	$('span.form_val').remove();

	// テキストボックス･テキストエリア･セレクトボックス
	jQuery.each ( $('input:text, textarea, select', '#contact_form'), function () {
		$(this).show();
	});

	// ラジオボタン
	jQuery.each ( $('div.radiogroup', '#contact_form'), function () {
		$(this).show();
	});

	// チェックボックス
	jQuery.each ( $('div.checkgroup', '#contact_form'), function () {
		$(this).show();
	});

	// 送信・リセットボタン
	$('#btn_next').attr('src', $('#btn_next').attr('src').replace('btn_form_send', 'btn_form_confirm'));
	$('#btn_back').attr('src', $('#btn_back').attr('src').replace('btn_form_back', 'btn_form_reset'));
}

function confirm_mode () {
	$('.caution').hide();

	// テキストボックス･テキストエリア･セレクトボックス
	jQuery.each ( $('input:text, select', '#contact_form'), function () {
		$(this).after('<span class="form_val">' + $(this).val() + '</span>');
		$(this).hide();
	});

	// テキストエリア
	jQuery.each ( $('textarea', '#contact_form'), function () {
		$(this).after('<span class="form_val">' + $(this).val().replace(/\r\n/g, "<br />").replace(/(\n|\r)/g, "<br />") + '</span>');
		$(this).hide();
	});

	// ラジオボタン
	jQuery.each ( $('div.radiogroup', '#contact_form'), function () {
		$(this).after('<span class="form_val">' + $('input:radio:checked', this).val() + '</span>');
		$(this).hide();
	});

	// チェックボックス
	jQuery.each ( $('div.checkgroup', '#contact_form'), function () {
		var checked = $('input:checkbox:checked', this).map( function() { return this.value; }).get();
		$(this).after('<span class="form_val">' + checked.join('/') + '</span>');
		$(this).hide();
	});

	// 送信・リセットボタン
	$('#btn_next').attr('src', $('#btn_next').attr('src').replace('btn_form_confirm', 'btn_form_send'));
	$('#btn_back').attr('src', $('#btn_back').attr('src').replace('btn_form_reset', 'btn_form_back'));
}

