﻿//------------------------------------------------------------------------------

//【目次】

//	-- 標準機能 --

//		unspacer(str_id)										空白文字（半全角含む）しか入力がない場合にエラー表示。

//		eng_spelling_check(str_id)					禁則文字（全角文字（スペース除く）と半角カタカナ以外）しか入力がない場合にエラー表示。

//		normal_width_input(str_id)					半角数字でない時にエラー表示。

//		email_check(str_id)									メールアドレス正規化。

//		url_check(str_id)										URL正規化。

//		move_next(str_id, next_str_id, num)	桁数(num)に達した場合、現在(str_id)から次(next_str_id)へ移動。

//	-- カスタマイズ機能 --

//		show_block(str_id)									ブロック　表示・非表示モード。

//		show_inline(str_id)									インライン表示・非表示モード。

//		disabled_area(str_id)								入力可能・不可能モード。

//		disabled_block(str_id)							ブロック　入力可能&表示・入力不可能&非表示モード。

//		disabled_inline(str_id)							インライン入力可能&表示・入力不可能&非表示モード。

//	-- 案内機能 --

//		help(str_id,flag,comment)						入力欄にサンプルテキストを表示させる仕組み。

//		help_submit(str_id_str)							送信時にサンプルテキストを処理

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



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

//HTML側での書き方例

//ポイント：各HTML要素には、必ずidを指定し、id値は半角英数とする。※数字で始まるのはNG

//	空白のみ入力を制御		<input type="text" name="名前" value="" id="onamae" onchange="unspacer('onamae')" />

//	スパム対策で使用			<input type="text" name="名前" value="" id="onamae" onchange="eng_spelling_check('onamae')" />

//	半角数字制御					<input type="text" name="電話" value="" id="tel" onchange="normal_width_input('tel')" />

//												※cssのime-mode:disabled;と併用すれば尚良し

//	メールアドレス正規化	<input type="text" name="アドレス" value="" id="url" onchange="url_check('url')" />

//	URL正規化							<input type="text" name="メール" value="" id="mail" onchange="email_check('mail')" />

//	電話番号や郵便番号		<input type="text" name="電話1" value="" id="tel1" onkeyup="move_next('tel1','tel2',4)" />

//	入力で便利						<input type="text" name="電話2" value="" id="tel2" onkeyup="move_next('tel2','tel3',4)" />

//												<input type="text" name="電話3" value="" id="tel2" />

//	表示・非表示を制御・・・任意選択状態にある時に、指定した数だけ切り替えが発動する。

//		<input type="checkbox" name="種別" value="表示" id="kind" onclick="show_block('kind-3')" />

//		<p id="kind-1">テキストだってできます</p>

//		<input type="text" name="他" value="" id="kind-2" />

//		<input type="text" name="備考" value="" id="kind-3" />

//	入力可能・不可能を制御・・・任意選択状態にある時に、指定した数だけ切り替えが発動する。

//		<input type="checkbox" name="種別" value="表示" id="kind" onclick="disabled_area('kind-3')" />

//		<input type="text" name="性別" value="" id="kind-1" />

//		<input type="text" name="他" value="" id="kind-2" />

//		<input type="text" name="備考" value="" id="kind-3" />

//	入力可能&表示・不可能&非表示を制御・・・任意選択状態にある時に、指定した数だけ切り替えが発動する。

//		<input type="checkbox" name="種別" value="表示" id="kind" onclick="disabled_area('kind-3-2')" />

//		<input type="text" name="性別" value="" id="kind-1" />

//		<input type="text" name="他" value="" id="kind-2" />

//		<input type="text" name="備考" value="" id="kind-3" />

//		<input type="text" name="性別2" value="" id="kind_reverse-1" />

//		<input type="text" name="他2" value="" id="kind_reverse-2" />

//	入力欄にサンプルテキストを表示させる仕組み

//		ページロード時			<body onload="help('id名','off','comment');">

//												もしくは、js内に、

//													window.onload = funtion load(){

//														this.help('id名','on','comment');

//													}

//		フォーカス時				onfocus="help('id名','on','comment');"

//		フォーカスはずれ時	onblur="help('id名','off','comment');"

//		送信時							<input type="submit" onclick="help_submit('id名=表示文字,id名=表示文字,id名=表示文字・・・');" onkeydown="help_submit('id名=表示文字,id名=表示文字,id名=表示文字・・・');">

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



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

//空白文字しか入力がない場合にエラー表示。

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

function unspacer(str_id) {

	//初期設置

	var flag_space = 0;

	var flag_text = 0;

	

	var num = document.getElementById(str_id).value.length;

	var str = document.getElementById(str_id).value;

	for(var i = 0; i < num; i ++){

		if(str.charAt(i) == ' ' || str.charAt(i) == '　'){

			flag_space = 1;

		}else{

			//空白以外が存在する場合

			flag_text = 1;

		}

	}

	//空白だけしか記載されていない場合は抹消

	if(flag_space == 1 && flag_text == 0){

		alert("スペースしか記入されておりません。再度ご確認ください。");

		document.getElementById(str_id).value = '';

	}

}





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

//禁則文字しか入力がない場合にエラー表示。

//全角文字（スペース除く）・半角カタカナ以外がNG

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

function eng_spelling_check(str_id){

	//初期設置

	var flag_ngword = 0;

	var flag_text = 0;

	

	var num = document.getElementById(str_id).value.length;

	var str = document.getElementById(str_id).value;

	var str_v;

	for(var i = 0; i < num; i ++){

		str_v = str.charAt(i);

		if(str_v.match(/[ -~|　]/g)){

			flag_ngword = 1;

		}else{

			//半角英語以外が存在する場合

			flag_text = 1;

		}

	}

	//半角英語だけしか記載されていない場合は抹消

	if(flag_ngword == 1 && flag_text == 0){

		alert("不正な文字列です。再度ご確認ください。");

		document.getElementById(str_id).value = '';

	}

}





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

//半角数字でない時にエラー表示。

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

function normal_width_input(str_id) {

	c = document.getElementById(str_id).value;

	if(c.match(/[^0-9]/g)){

		document.getElementById(str_id).value = '';

		alert("半角数字で入力してください。");

	}

}





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

//メールアドレス正規化。

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

function email_check(str_id) {

	c = document.getElementById(str_id).value;

	check = /.+@.+\..+/;

	if(!c.match(check)){

		document.getElementById(str_id).value = '';

		alert("メールアドレスが正しくありません。");

	}

}





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

//URL正規化。

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

function url_check(str_id) {

	c = document.getElementById(str_id).value;

	check = /http\:\/\/.+\..+/;

	if(!c.match(check)){

		document.getElementById(str_id).value = '';

		alert("URLが正しくありません。");

		document.getElementById(str_id).focus();

	}

}





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

//次の枠へ移動。

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

function move_next(str_id, next_str_id, num) {

  if (str_id.value.length >= num) {

    document.getElementById(next_str_id).focus();

  }

}







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

//disabled = true　の場合、入力POSTデータとしてすら飛びません。

//

//HTML側

//個人の場合はチェックを入れる

//<input type="checkbox" name="お客様分類" value="yes" id="kind" onclick="disabled_check('kind')" />

//個人<input type="text" name="お名前" value="" id="person_name" />

//法人<input type="text" name="お名前" value="" id="cliant_name" />

//

//と記述しておくと、チェックが入った時とのみ、個人の方のテキストボックスが

//記入可能になる。逆に不可視状態であれば、POSTデータすら飛ばない為、データ重複もなくなる。

//注意：このケースの場合、初めから読み込ます必要がある為、<body onload="disabled_check('kind');">

//      と記述しておく必要がある。

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





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

//表示非表示モード　ブロック。

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

function show_block(str_id){

	var str_num = str_id.split('-');

	for(var i = 1; i <= str_num[1]; i ++){

		if( document.getElementById(str_num[0]).checked ){

			//チェックが入っている場合

			document.getElementById(str_num[0] + '-' + i ).style.display = 'block'; //可視

		}else{

			//チェックが入っていない場合

			document.getElementById(str_num[0] + '-' + i ).style.display = 'none'; //不可視

		}

	}



}





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

//表示非表示モード　インライン。

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

function show_inline(str_id){

	var str_num = str_id.split('-');

	for(var i = 1; i <= str_num[1]; i ++){

		if( document.getElementById(str_num[0]).checked ){

			//チェックが入っている場合

			document.getElementById(str_num[0] + '-' + i ).style.display = 'inline'; //可視

		}else{

			//チェックが入っていない場合

			document.getElementById(str_num[0] + '-' + i ).style.display = 'none'; //不可視

		}

	}



}





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

//入力　可能・不可能モード。

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

function disabled_area(str_id){

	var str_num = str_id.split('-');

	for(var i = 1; i <= str_num[1]; i ++){

		if( document.getElementById(str_num[0]).checked ){

			//チェックが入っている場合

			document.getElementById(str_num[0] + '-' + i ).disabled = false; //可視

		}else{

			//チェックが入っていない場合

			document.getElementById(str_num[0] + '-' + i ).disabled = true; //不可視

		}

	}



}









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

//

//fmailカスタマイズ仕様用

//画面切り替え処理　ブロックごと表示・非表示を切り替える

//

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

function disabled_block(str_id){

	var str_num = str_id.split('-');

	if( document.getElementById(str_num[0]).checked ){

		//初めに表示させる方

		for(var i = 1; i <= str_num[1]; i ++){

			//データ部分

			document.getElementById(str_num[0] + '-' + i).disabled = false; //可視

			//表示部分

			document.getElementById(str_num[0] + '-' + i).style.display = 'block'; //可視

		}

		

		// 後から表示させる方

		for(i = 1; i <= str_num[2]; i ++){			

			//データ部分

			document.getElementById(str_num[0] + '_reverse-' + i).disabled = true; //不可視

			//表示部分

			document.getElementById(str_num[0] + '_reverse-' + i).style.display = 'none'; //不可視

		}

	}else{

		//初めに表示させる方

		for(var i = 1; i <= str_num[1]; i ++){

			//データ部分

			document.getElementById(str_num[0] + '-' + i).disabled = true; //不可視

			//表示部分

			document.getElementById(str_num[0] + '-' + i).style.display = 'none'; //不可視

		}

		

		// 後から表示させる方

		for(i = 1; i <= str_num[2]; i ++){			

			//データ部分

			document.getElementById(str_num[0] + '_reverse-' + i).disabled = false; //可視

			//表示部分

			document.getElementById(str_num[0] + '_reverse-' + i).style.display = 'block'; //可視

		}

	}

}







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

//

//fmailカスタマイズ仕様用

//画面切り替え処理　インラインごと表示・非表示を切り替える

//

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

function disabled_inline(str_id){

	var str_num = str_id.split('-');

	if( document.getElementById(str_num[0]).checked ){

		//初めに表示させる方

		for(var i = 1; i <= str_num[1]; i ++){

			//データ部分

			document.getElementById(str_num[0] + '-' + i).disabled = false; //可視

			//表示部分

			document.getElementById(str_num[0] + '-' + i).style.display = 'inline'; //可視

		}

		

		// 後から表示させる方

		for(i = 1; i <= str_num[2]; i ++){			

			//データ部分

			document.getElementById(str_num[0] + '_reverse-' + i).disabled = true; //不可視

			//表示部分

			document.getElementById(str_num[0] + '_reverse-' + i).style.display = 'none'; //不可視

		}

	}else{

		//初めに表示させる方

		for(var i = 1; i <= str_num[1]; i ++){

			//データ部分

			document.getElementById(str_num[0] + '-' + i).disabled = true; //不可視

			//表示部分

			document.getElementById(str_num[0] + '-' + i).style.display = 'none'; //不可視

		}

		

		// 後から表示させる方

		for(i = 1; i <= str_num[2]; i ++){			

			//データ部分

			document.getElementById(str_num[0] + '_reverse-' + i).disabled = false; //可視

			//表示部分

			document.getElementById(str_num[0] + '_reverse-' + i).style.display = 'inline'; //可視

		}

	}

}





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

//

//フォーカス時

//

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

function help(str_id,flag,comment){

	var a = document.getElementById(str_id).value;

	//フォーカスが外れた時

	if(flag == 'off'){

		if(a == ''){

			document.getElementById(str_id).value = comment;

			document.getElementById(str_id).style.color = "#aaaaaa";

		}else if(a != comment){

			document.getElementById(str_id).style.color = "black";

		}else{

			document.getElementById(str_id).style.color = "#aaaaaa";

		}

	//フォーカスされた時

	}else if(flag == 'on'){

		//値がヘルプと同じ時はクリア

		if(a == comment){

			document.getElementById(str_id).value = '';

			document.getElementById(str_id).style.color = "black";

		}else{

			document.getElementById(str_id).style.color = "black";

		}

	}

}





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

//

//送信時

//

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

function help_submit(str_id_str){

	//システム有無でジャッジ

	var flag_sys = 0;



	var a = str_id_str.split(',');

	var a_str;

	

	//未入力チェック

	for(var i = 0;i < a.length; i ++){

		a_str = a[i].split('=');

		//値が規定値の時

		if(a_str[1] == document.getElementById(a_str[0]).value){

			document.getElementById(a_str[0]).value = '';

		}

	}

}