/*************************************************
 * RHYTHMTYPE WEB SITE 
 * type+エントリーフォーム用JavaScript
 * @update 2008.6.17
 * @author Rhythmtype Inc.
 *************************************************/


/**
 * フォーム送信処理
 * フォームによってチェックする内容が異なる
 * @param なし
 * @return なし
 */
function formSubmit() {
	var flg = true;
	var agree = true;
	if (document.forms[0].type.value == "confirm") agree = document.forms[0].agreement.checked;
	flg = checkForm();
	if (flg && agree) document.forms[0].submit();
	else {
		if (flg && ! agree) alert("β登録の利用規約にご同意いただいていません。");
	}
}


/**
 * フォームから戻るボタン
 * @param なし
 * @return なし
 */
function formBack() {
	document.forms[0].ref.value = "confirm";
	document.forms[0].submit();
}


/**
 * フォームをチェックする関数
 * @param なし
 * @return true:OK, false:NG
 */
function checkForm() {
	var fobj = document.forms[0];
	var family_name = fobj.family_name.value;
	var first_name = fobj.first_name.value;
	var family_name_kana = fobj.family_name_kana.value;
	var first_name_kana = fobj.first_name_kana.value;
	var nickname = fobj.nickname.value;
	var email = fobj.email.value;
	var login_id = fobj.login_id.value;
	var flg = true;
	var errMsg = "";
	
	// お名前
	if (family_name == "" || first_name == "") {
		alert("お名前は必ず入力してください。");
		fobj.family_name.focus();
		return false;
	}
	
	// フリガナ
	if (family_name_kana == "" || first_name_kana == "") {
		alert("フリガナは必ず入力してください。");
		fobj.family_name_kana.focus();
		return false;
	}
	
	// 表示名（ニックネーム）
	if (nickname == "") {
		alert("表示名（ニックネーム）は必ず入力してください。");
		fobj.nickname.focus();
		return false;
	}
	
	// E-mail
	if (email == "") {
		alert("E-mailは必ず入力してください。");
		fobj.email.focus();
		return false;
	} else if(! checkEmail(email, 1)) {
		alert("E-mailは、正確に入力してください。");
		fobj.email.focus();
		return false;
	}
	
	// ログインID
	if (login_id == "") {
		alert("ログインIDは必ず入力してください。");
		fobj.login_id.focus();
		return false;
	} else if (! checkId(login_id, 1)) {
		alert("ログインIDは4文字以上、12文字以下で必ず入力してください。");
		fobj.login_id.focus();
		return false;
	}
	
	if (! flg) {
		alert(errMsg);
		return false;
	} else {
		return true;
	}
}




/**********************************************************************/

/**
 * 数字チェック
 * @param val 対象となるデータ
 * @param size 桁数
 * @param required 必須
 * @return 結果　true:OK / false:NG
 */
function checkNumber(val, size, required) 
{
	if (! required && val == "") return true;
	else if (required && val == "") return false;
	else if (isNaN(val)) return false;
	else if (size != null && val.length > size) return false;
	else return true;
}


/**
 * メールアドレスチェック
 * @param val 対象となるデータ
 * @param required 必須
 * @return 結果　true:OK / false:NG
 */
function checkEmail(val, required) 
{
	if (! required && val == "") return true;
	else if (required && val == "") return false;
	else if (! val.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z]{2,4})$/)) return false;
	else return true;
}


/**
 * IDチェック（半角英数字）
 * @param val 対象となるデータ
 * @param required 必須
 * @return 結果　true:OK / false:NG
 */
function checkId(val, required) 
{
	if (! required && val == "") return true;
	else if (required && val == "") return false;
	else if (! val.match(/^([a-zA-Z0-9\_\-]){4,12}$/)) return false;
	else return true;
}


/**
 * 電話フォーマットチェック
 * @param val 対象となるデータ
 * @param required 必須
 * @return 結果　true:OK / false:NG
 */
function checkPhone(val, required) 
{
	if (! required && val == "") return true;
	else if (required && val == "") return false;
	else if (! val.match(/^([0-9]{2,4})\-([0-9]{2,4})\-([0-9]{4})$/)) return false;
	else return true;
}


/**
 * 選択肢チェック（SELECT要素）
 * @param obj FORM要素オブジェクト
 * @return 結果　true:OK / false:NG
 */
function checkSelectObj(obj) 
{
	if (obj.selectedIndex == 0) return false;
	return true;
}


/**
 * 選択肢チェック（CHECK要素）
 * @param obj FORM要素オブジェクト
 * @return 結果　true:OK / false:NG
 */
function checkCheckObj(obj) 
{
	var flg = false;
	for(i=0; i<obj.length; i++) {
		if (obj[i].checked) {
			flg = true;
			break;
		}
	}
	return flg;
}
