
/*---------------------------------------------------------------
	オクタルサーブ用コンタクトフォーム
		JavaScriptユーティリティ関数
													Make:2009.7
---------------------------------------------------------------*/

/*--------------------------------------------------------------
	全角 → 半角（英数字／一部記号（－＋＿＠．，）／空白）
--------------------------------------------------------------*/
//文字定義
han = "0123456789";
han += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
han += "abcdefghijklmnopqrstuvwxyz";
han += "-=+_{}#@., ";

zen = "０１２３４５６７８９";
zen += "ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ";
zen += "ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ";
zen += "－＝＋＿｛｝＃＠．，　";

/*--------------------------------------------------------------
	全角→半角 変換
--------------------------------------------------------------*/
function ZenToHan2(InChar){
	OutChar = "";

	for(i=0; i<InChar.length; i++){
		oneStr = InChar.charAt(i);
		num = zen.indexOf(oneStr,0);
		oneStr = num >= 0 ? han.charAt(num) : oneStr;
		OutChar += oneStr;
	}

	return OutChar;
}

/*--------------------------------------------------------------
	全角を半角に変換し、変換メッセージ表示
--------------------------------------------------------------*/
function CharChange(id){
	//ClassName = document.getElementById(id).className;
	marea = "chg_" + id;

	InChar = document.getElementById(id).value;

	// 変換メッセージエリアのクリア
	document.getElementById(marea).className = "hidden";
	OutChar = ZenToHan2(InChar);
	if(OutChar != InChar) {
		DispMessage(marea);
		document.getElementById(id).value = OutChar;
	}
}

/*--------------------------------------------------------------
	指定ルールに応じた、入力値のチェック
	　※全角の場合、半角に変換してから処理
--------------------------------------------------------------*/
function CharCheck(id, rule){
	//ClassName = document.getElementById(id).className;
	marea = "chg_" + id;
	earea = "e_" + id;

	// 変換メッセージエリアのクリア
	document.getElementById(marea).className = "hidden";
	InChar = document.getElementById(id).value;
	if(InChar == "") {
		// エラーメッセージエリアのクリア
		DispNormal(earea, id);
		return;
	}

	OutChar = ZenToHan2(InChar);

	// 数値のみのチェック
	if(rule == "num") {
		if(!OutChar.match(/^[\-\d]+$/)) {
			msg = "↑数値とハイフンで入力してください。";
			DispError(earea, msg, id);
		}else{
			// エラーメッセージエリアのクリア
			DispNormal(earea, id);
			document.getElementById(id).value = OutChar;
			if((OutChar != "") && (OutChar != InChar)) 
				DispMessage(marea);
		}
	}

	// 英数字のみのチェック
	if(rule == "alpha") {
//		if(!OutChar.match(/^[A-Za-z0-9]+[\w-=+{}#]+@[\w\.-]+\.\w{2,}$/)) {
		if(!OutChar.match(/\@[\w\.-]+\.\w{2,}$/)) {
			msg = "↑メールアドレスを正しく入力してください。";
			DispError(earea, msg, id);
		}else{
			// エラーメッセージエリアのクリア
			DispNormal(earea, id);
			document.getElementById(id).value = OutChar;
			if((OutChar != "") && (OutChar != InChar)) 
				DispMessage(marea);
		}
	}
}

/*--------------------------------------------------------------
	必須入力チェック
	　※エラーメッセージの表示／非表示
--------------------------------------------------------------*/
function InputCheck(id){
	Val = document.getElementById(id).value;
	earea = "e_" + id;
	if(id == "komoku22"){
		var obj = document.getElementById('e_komoku22');
		var objid = document.getElementById(id);
		if(Val == "") {
			msg = "140文字以内で入力してください。";
			DispError(earea, msg, id);
		}else if(Val.length > 140){
			var strlen = 140 - Val.length;
			msg = strlen + "文字です。140文字以内で入力してください。";
			DispError(earea, msg, id);
		}else{
//			obj.innerHTML = "あと" + strlen + "文字です。";
//			obj.className = "normallen";
			objid.style.border="1px solid #CCCCCC";
		}
	}else if(Val == "") {
		msg = "↑入力をお願いします。";
		DispError(earea, msg, id);
	} else {
		DispNormal(earea, id);		// エラーメッセージエリアのクリア
	}
}

/*--------------------------------------------------------------
	メールアドレス必須入力チェック
	　※連絡先が『メール以外希望』にチェックなしの場合
--------------------------------------------------------------*/
function InputCheck_Mail(id){
	Val = document.getElementById(id).value;
	earea = "e_" + id;

	if(Val == "") {
		msg = "↑入力をお願いします。";
		DispError(earea, msg, id);
	}
}

/*--------------------------------------------------------------
	確認用メールアドレスの入力チェック
	　※メールアドレスと違っていないかどうか
--------------------------------------------------------------*/
function CompCheck_Mail(mail1, mail2){
	mail_val1 = document.getElementById(mail1).value;
	mail_val2 = document.getElementById(mail2).value;
	earea1 = "e_" + mail1;
	earea2 = "e_" + mail2;

	msg = "↑上のメールアドレスと同じアドレスを入力してください。";
	if (mail_val1 == "") {			/* メールアドレス未入力 */
		if (mail_val2 == "") {			/* 確認アドレス未入力 */
			msg = "↑入力をお願いします。";
			DispError(earea2, msg, mail2);
		} else {
			DispError(earea2, msg, mail2);
		}
	} else {
		if (mail_val2 == "") {		/* 確認アドレス未入力 */
			msg = "↑入力をお願いします。";
			DispError(earea2, msg, mail2);
		} else if (mail_val1 != mail_val2) {
			DispError(earea2, msg, mail2);
		} else {
			DispNormal(earea2, mail2);
		}
	}
}

/*--------------------------------------------------------------
	チェックボックスの必須チェック
	　※エラーメッセージの表示／非表示
--------------------------------------------------------------*/
function CheckBoxCheck(GroupName, earea){
	var Num = document.getElementsByName(GroupName);
	for(var i=0, flg=0; i<Num.length; i++){
		if (document.getElementsByName(GroupName)[i].checked == true) {
			DispNormal(earea, '');
			flg = 1;
			break;
		}
	}
	if(!flg){
		DispError(earea, "↓選択してください（複数可）", "");
	}
}

/*--------------------------------------------------------------
	ラジオボタンの必須チェック
	　※エラーメッセージの表示／非表示
--------------------------------------------------------------*/
function RadioCheck(GroupName, earea){
	var Num = document.getElementsByName(GroupName);

	for(var i=0; i<Num.length; i++){
		if (document.getElementsByName(GroupName)[i].checked == true) {
			DispNormal(earea, '');
			break;
		}
	}
}

/*--------------------------------------------------------------
	プルダウンメニューの必須選択チェック
	　※エラーメッセージの表示／非表示
--------------------------------------------------------------*/
function SelectCheck(id){
	Val = document.getElementById(id).value;
	earea = "e_" + id;

	if(Val == "") {
		msg = "";
		DispError(earea, msg, id);
	} else {
		earea = "";
		DispNormal(earea, id);		// エラーメッセージエリアのクリア
	}
}

/*--------------------------------------------------------------
	エラーメッセージの表示
--------------------------------------------------------------*/
function DispError(earea, str, id){
	if (str != "") {
		msg = "<span class=\"error_hissu\">" + str + "</span>";
		document.getElementById(earea).innerHTML = msg;
		document.getElementById(earea).className = "visible_input";
	}

	if (id != "") {
		document.getElementById(id).className = id;
		document.getElementById(id).style.border="2px solid #CC0000";
	}
}

/*--------------------------------------------------------------
	エラーメッセージの非表示
--------------------------------------------------------------*/
function DispNormal(earea, id){
	if (earea != "") {
		document.getElementById(earea).className = "hidden";
	}
	if (id != "") {
		document.getElementById(id).className = id;
		document.getElementById(id).style.border="1px solid #CCCCCC";
	}
}

/*--------------------------------------------------------------
	メッセージの表示／非表示
	（注）入力項目のid名は引数で受け渡さないので、フォーム内の
　　　　　設定値を固定で使用している
--------------------------------------------------------------*/
function DispMessage(marea){
if (marea == "chg_komoku3") {
		document.getElementById("chg_komoku3").className = "visible";
	} else {
		document.getElementById("chg_komoku3").className = "hidden";
	}
if (marea == "chg_komoku3_conf") {
		document.getElementById("chg_komoku3_conf").className = "visible";
	} else {
		document.getElementById("chg_komoku3_conf").className = "hidden";
	}

}

/*--------------------------------------------------------------
	エラー画面表示時の全項目チェック
--------------------------------------------------------------*/
function AllCheck(){	/* 全項目チェック */
	RadioCheck('好きなテーマ', 'e_komoku23');
	InputCheck('komoku22');
	InputCheck('komoku2');
	CharCheck('komoku3', 'alpha');
	InputCheck_Mail('komoku3');
	CharCheck('komoku3_conf', 'alpha');
	InputCheck_Mail('komoku3_conf');
	CompCheck_Mail('komoku3', 'komoku3_conf');
	InputCheck('komoku4');
	InputCheck('komoku31');
	InputCheck('komoku32');
	InputCheck('komoku33');
	InputCheck('komoku34');
	InputCheck('komoku35');

}


//-------------------------------------------------------------

function countChar(){
	var obj=document.getElementById('komoku22');
	var divlen=document.getElementById('e_komoku22');
	var strlen = 140 - (obj.value.length);
	if(strlen < 0){
		divlen.innerHTML = strlen + "文字です。140文字以内でお願いします。";
		divlen.className = "redlen";
	}else{
		divlen.innerHTML = "あと" + strlen + "文字です。";
		divlen.className = "normallen";
	}
}

function setListeners(e){
	var obj=document.getElementById('komoku22');
	addListener(obj,'keyup',countChar,false);
}

function addListener(elem,eventType,func,cap){
	if(elem.addEventListener){
		elem.addEventListener(eventType,func,cap);
	}else if(elem.attachEvent){
		elem.attachEvent('on'+eventType,func);
	}else{
		alert('ご利用のブラウザはサポートされていません。');
		return false;
	}
}
addListener(window,'load',setListeners,false);
