/** ---------------------------------------------------------------------------
 * 共通JavaScript
 * ※ あまり厳しいテストをしてないので、バグってる可能性高いです
 *
 * @author	shikata
 * @since	2005/01/20
 * @update	2006/02/09 input_chk()
 * @version 1.01
 * ----------------------------------------------------------------------------
 */

/**
 * Mail magazine用の入力チェック。
 * 
 */
function input_chk()
{
	// --------------------------------------------------
	// Check the entry
	// --------------------------------------------------
	// e-mail address
	if ( chk_input(document.post_email_form.email) == false )
	{
		alert("Please input e-mail address.");
		return false;
	}
	
	if ( chk_mail(document.post_email_form.email) == false )
	{
		alert("This e-mail address is wrong format.");
		return false;
	}
	return true;
}


function onMenuDrop(id, flg, obj, imgsrc) {

	if (flg == true) {
		document.all.item(id).style.visibility = "visible";
	} else {
		document.all.item(id).style.visibility = "hidden";
	}

	if (obj != null) {
		document.all.item(obj).src = imgsrc;
	}
}

function onShowFortune(id) {
	document.all.item("fate11").style.visibility = "visible";

	document.all.item(id).style.visibility = "visible";
}

//-----------------------------------------------------------------------------
var err_code = "000";

var err_msg = new Array();
err_msg[0] =  new Array("000" , "No Error");
err_msg[1] =  new Array("101" , "{}のいずれもが選択されていません。");
err_msg[2] =  new Array("102" , "{}が入力されていません。");
err_msg[3] =  new Array("103" , "{}は半角英数で入力してください。");
err_msg[4] =  new Array("104" , "{}は半角数字で入力してください。");
err_msg[5] =  new Array("105" , "{}は、８桁の日付（YYYYMMDD）で入力してください。");
err_msg[6] =  new Array("106" , "{}に入力されている日付は間違っています。");
err_msg[7] =  new Array("107" , "{}に入力されている日付は妥当ではありません。");
err_msg[8] =  new Array("108" , "{}に入力されている文字数が最大入力文字数を超えています。");
err_msg[9] =  new Array("109" , "{}は半角カナで入力してください。");
err_msg[10] =  new Array("110" , "{}はメールアドレスのフォーマットで入力してください。");
err_msg[11] =  new Array("111" , "{}が選択されていません。");


/**
 * エラーコードをセットします。
 *
 * @param	エラーコード
 */
function set_err_code(code) {

	err_code = code;
}

/**
 * エラーコードを返します。
 *
 * @return	エラーコード
 */
function get_err_code() {

	return err_code;
}

/**
 * エラーメッセージを返します。
 *
 * @return	エラーメッセージ
 */
function get_err_msg(item) {

	var msg = "none massage > " + err_code;

	for (var i = 0; i < err_msg.length; i++) {

		if (err_code == err_msg[i][0]) {

			msg = err_msg[i][1];
			break;
		}
	}
	return msg.replace("{}", "[" + item + "] ");
}


/**
 * 必須チェック（radiobox or checkbox）を行います。
 *
 * @param	chk_obj > document.form.xxx
 * @return	true / false
 */
function chk_check(chk_obj) {

	var chk_flg = false;

	// １件だけのとき
	if (chk_obj.checked) {

		chk_flg = true;
	}

	// 複数件あるとき
	for (var i = 0; i < chk_obj.length; i++) {

		if (chk_obj[i].checked) {
			chk_flg = true;
			break;
		}
	}

	if (!chk_flg) {
		set_err_code("101");
	}
	return chk_flg;
}

/**
 * 必須入力チェックを行います。
 *
 * @param	chk_obj > document.form.xxx
 * @return	true / false
 */
function chk_input(chk_obj) {

	var chk_str = chk_obj.value;

	if (chk_str == null || chk_str == "") {

		set_err_code("102");
		chk_obj.onForcus;
		chk_obj.select();
		return false;

	} else {

		return true;
	}
}


/**
 * 必須入力チェックを行います。（セレクトボックス用）
 *
 * @param	chk_obj > document.form.xxx
 * @return	true / false
 */
function chk_input_select(chk_obj) {

	var chk_str = chk_obj.value;

	if (chk_str == null || chk_str == "") {

		set_err_code("111");
		chk_obj.onForcus;
		return false;

	} else {

		return true;
	}
}

/**
 * 半角英数チェックであるかのチェックを行います。
 *
 * @param	chk_obj > document.form.xxx
 * @return	true / false
 */
function chk_az09(chk_obj) {

	var chk_str = chk_obj.value;
	var chk = chk_str.match(/[0-9A-Za-z]/g);

	if ( chk == null || chk.length != chk_str.length) {

		set_err_code("103");
		chk_obj.onForcus;
		chk_obj.select();
		return false;

	} else {

		return true;
	}
}

/**
 * 半角数値であるかのチェックを行います。
 *
 * @param	chk_obj > document.form.xxx
 * @return	true / false
 */
function chk_num(chk_obj) {

	var chk_str = chk_obj.value;
	var chk = chk_str.match(/[0-9]/g);

	if ( chk == null || chk.length != chk_str.length) {

		set_err_code("104");
		chk_obj.onForcus;
		chk_obj.select();
		return false;
	} else {

		return true;
	}
}

/**
 * 日付の妥当性チェックを行います。
 *
 * @param	chk_obj > document.form.xxx - YYYYMMDD
 * @return	true / false
 */
function chk_yyyymmdd(chk_obj) {

	var chk_str = chk_obj.value;

	// 桁数チェック
	if (chk_str == null || chk_str.length != 8) {

		set_err_code("105");
		chk_obj.onForcus;
		chk_obj.select();
		return false;
	}

	// 数値チェック
	var chk = chk_str.match(/[0-9]/g);
	if (chk.length != chk_str.length) {

		set_err_code("105");
		chk_obj.onForcus;
		chk_obj.select();
		return false;
	}

	var chkYear  = chk_str.substr(0, 4);	//年
	var chkMonth = chk_str.substr(4, 2);	//月
	var chkDay	 = chk_str.substr(6, 2);	//日

	//30日の月
	if ((chkMonth == 4) || (chkMonth == 6) || (chkMonth == 9) || (chkMonth == 11)) {

		if ((chkDay > 0) && (chkDay <= 30)) return true;

	//31日の月
	} else if ((chkMonth == 1) || (chkMonth == 3) || (chkMonth == 5) || (chkMonth == 7) || (chkMonth == 8) || (chkMonth == 10) || (chkMonth == 12)) {

		if ((chkDay > 0) && (chkDay <= 31)) return true;

	//2月
	} else if ((chkMonth == 2)) {

		//うるう年チェック
		if ((chkYear % 4 == 0)) {

			if((chkDay > 0) && (chkDay <= 29)) return true;
		} else {

			if ((chkDay > 0) && (chkDay <= 28)) return true;
		}
	}

	set_err_code("106");
	chk_obj.onForcus;
	chk_obj.select();
	return false;
}

/**
 * 日付のfrom-toチェックを行います。
 *
 * @param	from_obj > document.form.xxx - YYYYMMDD
 * @param	to_obj	 > document.form.xxx - YYYYMMDD
 * @return	true / false
 */
function chk_fromto(from_obj, to_obj) {
	var chk_str1 = from_obj.value;
	var chk_str2 = to_obj.value;

	if (chk_str1 <= chk_str2) {

		return true;

	} else {

		set_err_code("107");
		from_obj.onForcus;
		from_obj.select();
		return false;
	}
}

/**
 * 入力文字長チェックを行います。
 *
 * @param	chk_obj  > document.form.xxx
 * @param	maxlen	 > 最大文字長
 * @return	true / false
 */
function chk_strlen(chk_obj, maxlen) {

	if (chk_obj.value.length > maxlen) {

		set_err_code("108");
		chk_obj.onForcus;
		chk_obj.select();
		return false;

	} else {

		return true;
	}
}

/**
 * 半角カナチェックを行います。
 *
 * @param	chk_obj  > document.form.xxx
 * @return	true / false
 */
function chk_kana(chk_obj) {

	var code;

	for (var i = 0; i < chk_obj.value.length; i++) {

		code = chk_obj.value.charCodeAt(i);

		if (!(65382 <= code && code <= 65439)) {

			set_err_code("109");
			chk_obj.onForcus;
			chk_obj.select();
			return false;
		}
	}
	return true;
}

/**
 * メールアドレスの入力チェック行います。
 *
 * @param	chk_obj  > document.form.xxx
 * @return	true / false
 */
function chk_mail(chk_obj) {

	var chk_str = chk_obj.value;
//	  var chk = chk_str.match(/[0-9A-Za-z@._-]/g);
	var chk = chk_str.match(/[0-9A-Za-z._-]+[@][0-9A-Za-z._-]+/g);

	if (chk == null || chk != chk_str) {

		set_err_code("110");
		chk_obj.onForcus;
		chk_obj.select();
		return false;
	}

//	  if (chk.length != chk_str.length) {
//
//		  set_err_code("110");
//		  chk_obj.onForcus;
//		  chk_obj.select();
//		  return false;
//
//	  } else if (chk_obj.value.indexOf("@", 0) < 0) {
//
//		  set_err_code("110");
//		  chk_obj.onForcus;
//		  chk_obj.select();
//		  return false;
//	  }
	return true;
}


/**
 * 桁数（バイト）チェックを行います。
 *
 * @param	chk_obj  > document.form.xxx
 * @param	max 	 > 最大文字長
 * @return	true / false
 */
function chk_byte(chk_obj, max) {

	var chk_str = chk_obj.value;

	var r = 0;
	var c = 0;
	for (var i = 0; i < chk_str.length; i++) {

		c = chk_str.charCodeAt(i);

		// Shift_JIS: 0x0 〜 0x80, 0xa0  , 0xa1   〜 0xdf  , 0xfd	〜 0xff
		// Unicode	: 0x0 〜 0x80, 0xf8f0, 0xff61 〜 0xff9f, 0xf8f1 〜 0xf8f3
		if ((c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)) {

			r += 1;

		} else {

			r += 2;
		}
	}

	if (r > max) {

		set_err_code("108");
		chk_obj.onForcus;
		chk_obj.select();
		return false;
	}

	return true;
}

//-- modify start 2005/06/30 aiko --//
/**
 * ドルチェックを行います。
 *
 * @param	chk_obj > document.form.xxx
 * @return	true / false
 */
function chk_dollar(chk_obj) {

	var str = chk_obj.value;
	var chk_ret;

	// 小数点なし系のドルチェック
	chk_ret = str.match(/[0-9]{1,}/);
	if (chk_ret != null && chk_ret == str) {

		if (str >= 0 && str <= 9999999999.99) {
//			  alert("マッチしました。1");
			return true;
		} else {
//			  alert("マッチしましたが、ゼロです。1");
			chk_obj.onForcus;
			chk_obj.select();
			return false;
		}
	}

	// 小数点あり系のドルチェック
	chk_ret = str.match(/[0-9]{1,}[.][0-9]{1,2}/);
	if (chk_ret != null && chk_ret == str) {

		if (str >= 0 && str <= 9999999999.99) {
//			  alert("マッチしました。2");
			return true;
		} else {
//			  alert("マッチしましたが、ゼロです。2");
			chk_obj.onForcus;
			chk_obj.select();
			return false;
		}
	}

	chk_obj.onForcus;
	chk_obj.select();
	return false;
}

/**
 * 電話番号チェックを行います。
 *
 * @param	chk_obj > document.form.xxx
 * @return	true / false
 */
function chk_telnumber(chk_obj) {

	var str = chk_obj.value;

	var chk_ret = str.match(/[0-9]|[-]/g);
	if (chk_ret != null && chk_ret.length == str.length) {

		return true;
	} else {

		chk_obj.onForcus;
		chk_obj.select();
		return false;
	}
}

/**
 * 画像アップロードファイルの拡張子チェックを行います。
 *
 * @param	chk_obj > document.form.xxx
 * @return	true / false
 */
function chk_imgextention(chk_obj) {

	var file_name = chk_obj.value;
	var extention;

	// 拡張子３文字系
	extention = file_name.substring(file_name.length - 4);
	if (extention == ".jpg" || extention == ".JPG" || extention == ".gif" || extention == ".GIF") {
		return true;
	}

	// 拡張子４文字系
	extention = file_name.substring(file_name.length - 5);
	if (extention == ".jpeg" || extention == ".JPEG") {
		return true;
	}

	chk_obj.onForcus;
	chk_obj.select();
	return false;
}

//-- modify end 2005/06/30 aiko --//
