﻿/* HTML Form checker by ARTEMIS[www.artemis.ac] hidemaru<script> */
var FChk = new Object();
FChk.box = new Array();
FChk.names = new Object();


/* 設定ここから */

/*設定1 送信先URI */
FChk.action = 'userentry.php';

/*設定2 エラー表示の色 */
FChk.errcol = '#ff6666';

/*設定3 本来の表示の色 */
FChk.defcol = '';

/*設定4 エラーの1箇所表示(id=errormsg) 最初の一個だけ出す場合は0 全部出す場合は1 */
FChk.msgtype = 1;

/*設定5 チェックする必須項目 HPの解説を読んでください */
FChk.names.m_name = ['店舗名',1];
FChk.names.t_code = ['登録希望の店舗コード',1,4];
FChk.names.passwd = ['パスワード',1,4];
FChk.names.m_url = ['店舗のページのURL',1,2];
FChk.names.m_mail = ['メールアドレス',1,1];
FChk.names.m_area1 = ['都道府県',2,1,1];
FChk.names.m_area2 = ['市区記載',1,5];

/*設定6 1項目複数チェックボックスの場合 HPの解説を読んでください */
/*
FChk.box[0] = {};
FChk.box[0].sub = '';
FChk.box[0].out = '';
FChk.box[0].min = 1;
FChk.box[0].max = 1;
FChk.box[0].list = ['','','','',''];
*/


/* HTMLのフォームの作り方は解説を参照 */


/* 設定終り */
function ChkForm(_arg){
	FChk.oForm = _arg;
	FChk.oForm.action = FChk.action;
	FChk.aInput = new Array();
	FChk.bln = true;
	if(chk_dom() && chk_dom('errormsg')) chk_dom('errormsg').innerHTML = '';
	for(var key in FChk.names){
		 if(key != '' && FChk.oForm[key]){
			switch(FChk.names[key][1]){
				case 1:	//input,textarea
					ChgCol( ((FChk.oForm[key].value == '')? false : true) , key , FChk.names[key][0] + 'がありません' );
					if(FChk.oForm[key].value != '' && FChk.names[key][2]){
						switch(FChk.names[key][2]){
							case 1:	//Mail
								FChk.mailchk = false;
								//if(FChk.oForm[key].value.indexOf('@') >0 && FChk.oForm[key].value.indexOf('.') > 2 ){ FChk.mailchk = true; } 
								if(FChk.oForm[key].value.match(/^[0-9a-zA-Z][0-9a-zA-Z\-_\.]+\@[0-9a-zA-Z]+[0-9a-zA-Z\-_\.]*\.[0-9a-zA-Z]{2,4}$/)){ FChk.mailchk = true; }
								if(FChk.names[key][3] && FChk.mailchk){ //mail co
									if(FChk.oForm[FChk.names[key][3]]){ FChk.mailchk = (FChk.oForm[key].value == FChk.oForm[FChk.names[key][3]].value)? true : false; }
									ChgCol(FChk.mailchk , key , FChk.names[key][0] + 'が確認用と一致しません');
									ChgCol(FChk.mailchk,FChk.names[key][3]);
								}else{ //1mail
									if(FChk.names[key][3]) ChgCol(FChk.mailchk,FChk.names[key][3]);
									ChgCol(FChk.mailchk , key , FChk.names[key][0] + 'が正しくありません');
								}
								break;

							case 2:	//URL
								ChgCol( (((FChk.oForm[key].value.indexOf('http://') == 0 || FChk.oForm[key].value.indexOf('https://') == 0) && FChk.oForm[key].value.indexOf('.')>7 )? true: false),key, FChk.names[key][0] + 'が正しくありません'); 
/*								ChgCol( ((FChk.oForm[key].value.match(/^(ht|f){1}tp(s?):\/\/[0-9a-zA-Z]+[0-9a-zA-Z\-_\.]*\.[0-9a-zA-Z]{2,4}$/))? true: false) , key , FChk.names[key][0] + 'が正しくありません');*/
								break;

							case 3:	// [0-9]
								ChgCol( ((FChk.oForm[key].value.match(/^[0-9]+$/))? true: false) , key , FChk.names[key][0] + 'は半角数字のみです');
								break;

							case 4:	// [a-zA-Z0-9]
								ChgCol( ((FChk.oForm[key].value.match(/^[a-zA-Z0-9]+$/))? true: false) , key ,FChk.names[key][0] + 'は英数半角のみです');
								break;

							case 5:	// ![a-zA-Z0-9]
								ChgCol( ((FChk.oForm[key].value.match(/.*[a-z0-9A-Z]+.*/))? false: true) , key, FChk.names[key][0] + 'に英数半角は使えません' );
								break;
						}
					}else{	if(FChk.names[key][2] && FChk.names[key][2] == 1 && FChk.names[key][3]) ChgCol(false,FChk.names[key][3]); }
					break;
				case 2:	//select (sigle,multiple)
					FChk.multi = 0;
					for(var i=0; i <FChk.oForm[key].length; i++){ if(FChk.oForm[key][i].selected == true && FChk.oForm[key][i].value != '') FChk.multi++; }
					FChk.names[key][2] = ( FChk.names[key][2] || 1 );
					FChk.names[key][3] = ( FChk.names[key][3] || 1 );
					if(FChk.names[key][2] > FChk.names[key][3]) FChk.names[key][2] = FChk.names[key][3];
					FChk.errmsg = '';
					if( (FChk.names[key][2] == FChk.names[key][3]) && FChk.names[key][2] == 1){
						if(FChk.multi < 1) FChk.errmsg = 'が選択されていません';
						if(FChk.multi > 1) FChk.errmsg = '1つしか選択できません';
					}else{
						if(FChk.multi < FChk.names[key][2]) FChk.errmsg = 'は最低' + FChk.names[key][2] + '個 選択してください。';
						if(FChk.multi > FChk.names[key][3]) FChk.errmsg = 'は最高' + FChk.names[key][3] + '個 まで選択してください。';
					}
					ChgCol( ((FChk.errmsg)? false : true), key, FChk.names[key][0] + FChk.errmsg);
					break;

				case 3:	//checkbox 1element
					ChgCol(FChk.oForm[key].checked, key , FChk.names[key][0] + 'にチェックが必要です');
					break;

				case 4:	//radio
					FChk.radio = false;
					for(var i=0; i <FChk.oForm[key].length; i++){ if(FChk.oForm[key][i].checked && FChk.oForm[key][i].value != ''){ FChk.radio = true; break; } }
					ChgCol(FChk.radio , key ,FChk.names[key][0] + 'が選択されていません');
					break;
			}
		}
	}
	if(FChk.box.length > 0){	//checkbox multi
		for(var i in FChk.box){
			if(FChk.box[i] && FChk.box[i]['list']){
					FChk.select = 0;
					for(var key in FChk.box[i]['list']){
						if(FChk.oForm[FChk.box[i]['list'][key]] && FChk.oForm[FChk.box[i]['list'][key]].checked) FChk.select++;
					}
					FChk.box[i]['min'] = (FChk.box[i]['min'] || 1);
					FChk.box[i]['max'] = (FChk.box[i]['max'] || 1);
					if(FChk.box[i]['min'] > FChk.box[i]['max']) FChk.box[i]['min'] = FChk.box[i]['max'];
					FChk.errmsg = ''; FChk.box.msgmin = '最低'; FChk.box.msgmax = '最高';
					if(FChk.box[i]['min'] == FChk.box[i]['max']){ FChk.box.msgmin = FChk.box.msgmax = ''; }
					if(FChk.select < FChk.box[i]['min']) FChk.errmsg =  'は' + FChk.box.msgmin + FChk.box[i]['min'] + '個 選択してください。';
					if(FChk.select > FChk.box[i]['max']) FChk.errmsg =  'は' + FChk.box.msgmax + FChk.box[i]['min'] + '個 まで選択してください。';
					ChgCol( ((FChk.errmsg)? false : true), FChk.box[i]['out'], FChk.box[i]['sub'] + FChk.errmsg);
			}
		}
	}
	if(FChk.bln) FChk.oForm.submit();
}
function ChgCol(_flag,_key,_err){
	if(_flag){
		if(chk_dom(_key + '_outer')) chk_dom(_key + '_outer').style.backgroundColor = FChk.defcol;
		if(chk_dom(_key + '_msg')) chk_dom(_key + '_msg').innerHTML = '';
	}else{
		if(chk_dom()){
			if(chk_dom(_key + '_outer')) chk_dom(_key + '_outer').style.backgroundColor = FChk.errcol;
			if(chk_dom('errormsg') && _err){
				if(FChk.msgtype){ chk_dom('errormsg').innerHTML += _err + '<br>'; }
				else{ if(FChk.bln) chk_dom('errormsg').innerHTML += _err; }
			}
			if(chk_dom(_key + '_msg')) chk_dom(_key + '_msg').innerHTML = _err;

		}else{ if(FChk.bln && _err) alert(_err) }
		FChk.aInput.push(_key);
		if(FChk.bln && FChk.oForm[_key] && FChk.oForm[_key].focus) FChk.oForm[_key].focus();
		FChk.bln = false;

	}
}

function chk_dom(_id){
	if(document.getElementById){ return (_id)? document.getElementById(_id) : true ; }
	if(document.all){ return (_id)? document.all(_id) : true ;  }
	return false;
}

function DoReset(){
	if(chk_dom() && FChk.aInput){
			for(var key in FChk.aInput){
				if(FChk.aInput[key] != '') ChgCol(true,FChk.aInput[key]);
				if(chk_dom(FChk.aInput[key] + '_msg')) chk_dom(FChk.aInput[key] + '_msg').innerHTML = '';
				if(chk_dom('errormsg'))	chk_dom('errormsg').innerHTML = '';
			}
	}
}

