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


/**
 * フォーム送信処理
 * フォームによってチェックする内容が異なる
 * @param なし
 * @return なし
 */
function formSubmit() {
	var flg = true;
	flg = checkForm();
	if (flg) document.forms["entryForm"].submit();
	else {
	}
}


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


/**
 * フォームをチェックする関数
 * @param なし
 * @return true:OK, false:NG
 */
function checkForm() {
	var fobj = document.forms["entryForm"];
	var ftype = fobj.type.value;
	var plan = fobj.plan;
	var url = fobj.url.value;
	var company = fobj.company.value;
	var post = fobj.post.value;
	var name = fobj.name.value;
	var kana = fobj.kana.value;
	var mail = fobj.mail.value;
	var tel = fobj.tel.value;
	var memo = fobj.memo.value;
	var flg = true;
	var errMsg = "";
	
	// プラン
	if (ftype == "confirm" && ! checkCheckObj(plan)) {
		alert("プランは、必ず選択してください。");
		fobj.plan[0].focus();
		flg = false;
	}
	
	// サイト診断対象URL 
	if (url == "") {
		alert("サイト診断対象URLは必ず入力してください。");
		fobj.url.focus();
		flg = false;
	} else if (! checkUrl(url, 1)) {
		alert("サイト診断対象URLは、正確に入力してください。");
		fobj.url.focus();
		flg = false;
	}
	
	// 会社名
	if (company == "") {
		alert("会社名は必ず入力してください。");
		fobj.company.focus();
		flg = false;
	}
	
	// 名前
	if (name == "") {
		alert("担当者名は必ず入力してください。");
		fobj.name.focus();
		flg = false;
	}
	
	// 名前カナ
	if (kana == "") {
		alert("担当者名カナは必ず入力してください。");
		fobj.kana.focus();
		flg = false;
	}
	
	// 担当者メールアドレス  
	if (mail == "") {
		alert("メールアドレスは必ず入力してください。");
		fobj.mail.focus();
		flg = false;
	} else if(! checkEmail(mail, 1)) {
		alert("メールアドレスは、正確に入力してください。");
		fobj.mail.focus();
		flg = 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;
}


/**
 * URLチェック
 * @param val 対象となるデータ
 * @param required 必須
 * @return 結果　true:OK / false:NG
 */
function checkUrl(val, required) 
{
	if (! required && val == "") return true;
	else if (required && val == "") return false;
	else if (! val.match(/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/)) 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;
}
