/* **************************************************************************
 * @説明@   メールフォーム用スクリプト
 *
 * @制作@   H.Tanaka 2008/00/00
 * @編集@
 * @編集@
 * @編集@
 * @ver@    1.00
 * @phpver@ 5.2.4
 * ************************************************************************** */

/* ==========================================================================
 * @名前@ hbMailFormCheck
 * @説明@ 入力チェック
 *
 * @引数@ object _form フォームオブジェクト
 * @戻値@ bool         送信可不可
 * ========================================================================== */
function hbMailFormCheck ( _form ) {
	var _formVals = [
		 "usrName"
		,"usrMail"
		,"mailBody"
	];

	for ( var i in _formVals ) {
		if ( typeof _form [_formVals[i]] != "undefined" ) {
			if ( _form [_formVals[i]].value == "" ) {
				alert ( "お名前、メールアドレス、内容の欄は、必ずご記入ください" );
					return false;
			}
		}
	}
	if (
		   typeof _form ["usrMail"] != "undefined"
		&& !mailchk ( _form ["usrMail"].value )
	) {
		alert ( "入力されたメールが正しくありません" );
		return false;
	}
	return true;
}

/* ==========================================================================
 * @名前@ hbMailFormCheck2
 * @説明@ 入力チェック2(エントリーフォーム用）
 *
 * @引数@ object _form フォームオブジェクト
 * @戻値@ bool         送信可不可
 * ========================================================================== */
function hbMailFormCheck2 ( _form ) {
	var _formVals2 = [
		 "usrName"
		,"usrKana"
		,"usrCategory"
		,"usrMail"
		,"usrTell"
		,"usrIncome"
		,"usrContact"
	];

	for ( var i in _formVals2 ) {
		if ( typeof _form [_formVals2[i]] != "undefined" ) {
			if ( _form [_formVals2[i]].value == "" ) {
				alert ( "必須項目が未入力です" );
					return false;
			}
		}
	}
	if (
		   typeof _form ["usrMail"] != "undefined"
		&& !mailchk ( _form ["usrMail"].value )
	) {
		alert ( "入力されたメールが正しくありません" );
		return false;
	}
	return true;
}

/* ==========================================================================
 * @名前@ hbMailFormReset
 * @説明@ フォーム値リセット（修正不要）
 *
 * @引数@ object _form1 対象フォームオブジェクト
 * @戻値@
 * ========================================================================== */
function hbMailFormReset ( _form1 ) {
	if ( confirm (
		  "ご入力いただいたデータがすべてリセットされます。\n"
		+ "実行してよろしいですか？"
	) ) {
		// リセットフォームオブジェクト
		var _form2 = document.getElementById ( "ResetForm" );

		// リセットフォーム要素の数だけループ
		var _len = _form2.elements.length;
		var _el1 = null;
		var _el2 = null;
		var _nm  = null;
		var _list = {};

		// 分割されたhiddenを統合
		for ( var i = 0; i < _len; i++ ) {
			_el2 = _form2.elements[i];
			_nm = _el2.name;
			if ( typeof _list[_nm] == "undefined" ) {
				_list[_nm] = _el2.value;
			}
			else {
				_list[_nm] += "||" + _el2.value;
			}
		}

		for ( _nm in _list ) {
			// 対象フォーム要素があれば実行
			if ( typeof _form1[_nm] != "undefined" ) {
				_el1 = _form1[_nm];
				// 値が複数
				if ( typeof _el1.type == "undefined" ) {
					for ( var j = 0; j < _el1.length; j++ ) {
						if (
							( "||" + _list[_nm] + "||" ).indexOf (
								"||" + _el1[j].value + "||"
							) != -1
						) {
							_el1[j].checked = true;
						}
						else {
							_el1[j].checked = false;
						}
					}
				}
				// 値が単数
				else {
					_el1.value = _list[_nm];
				}
			}
		}
	}
}




function mailchk (emailStr) {
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
		//alert("Email address seems incorrect (check @ and .'s)")
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	if (user.match(userPat)==null) {
		//alert("The username doesn't seem to be valid.")
		return false
	}
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		// this is an IP address
		  for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				//alert("Destination IP address is invalid!")
			return false
			}
		}
		return true
	}
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		//alert("The domain name doesn't seem to be valid.")
		return false
	}
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2) {
	   //alert("The address must end in a three-letter domain, or two letter country.")
	   return false
	}
	if (len<2) {
	   //var errStr="This address is missing a hostname!"
	   return false
	}
	return true;
}

