function IsNotBlank(value) {
	if (value == "") {
		return false;
	}
		return true;
}

function IsTelNum(value) {
//	if ((value.match(/^[0][0-9]{1,4}\-[0-9]{3,6}\-[0-9]{3,6}/) == null)) {
	if ((value.match(/^[0][0-9]{1,4}\-[0-9]{1,9}\-[0-9]{3,6}/) == null)) {
		return false;
	}
		return true;
}

function IsMail(value) {
	if (value.match(/^[a-zA-Z].+@.+\..+[a-z]$/) == null) {
		return false;
	}
		return true;
}

function IsPostal(value) {
	if (value.match(/^[0-9]{3}\-[0-9]{4}/) == null) {
		return false;
	}
		return true;
}

function IsKata(value) {
	if (value.match(/^([ァ-ン|　])+$/) == null) {
		return false;
	}
		return true;
}

function IsHira(value) {
	if (value.match(/^([^ァ-ン|a-zA-Z0-9\s\.\,\-])+$/) == null) {
		return false;
	}
		return true;
}

function IsNum(value) {
	if (value.match(/^([0-9|\-])+$/) == null) {
		return false;
	}
		return true;
}

function IsAlpha(value) {
	if (value.match(/^[a-zA-Z0-9\s\.\,\-,\:,\/]+$/) == null) {
		return false;
	}
		return true;
}

function IsChk(value) {
	if (value == "" || value == null) {
		return false;
	}
		return true;
}

//---------------------------
// main functions
//---------------------------

FlugArray = new Array(); //空欄不可項目について、全ての検査に通ったかを真偽値で格納する配列

function inlineChk(chkid, ItemToBeSame){
//alert("function called for: "+chkid);
	// Init
	var chkflug;
	var NotBlankFlug ;
	var PostalFlug ;
	var TelNumFlug;
	var MailFlug;
	var ChkBoxFlug1 = false;
	var ChkBoxFlug2 = false;
	var ChkBoxFlug3 = false;
	var ChkBoxFlug4 = false;
	var ChkBoxFlug5 = false;
	var ChkBoxFlug6 = false;
	var ChkBoxFlug = false;
	var KataFlug;
	var HiraFlug;
	var NumFlug;
	var AlphaFlug;
	var SameAsFlug;
	var FlugArrayNum; //NotBlank配列の何番目に記述された項目かを保持

/* 共通のアルゴリズム
予め用意されてる、チェックすべき項目のIDが列挙された配列を走査し、要求のあったIDと照合する。
一致する項目があれば、値をチェックして、チェック要件flugに結果を真偽値で代入する。
一致しない項目の時は、Flugがfalse以外の時は、対象項目ではないのでtrueを返す。
既にfalseの時は、すでに検査されているので値をそのままにする。

もっとスマートなやり方があるはず。
*/

// CHK Blank
	for(i=0; i<NotBlank.length; i++){
		if(NotBlank[i] == chkid) {
			NotBlankFlug = IsNotBlank($F(chkid));
			FlugArrayNum = i;
		} else {
			if(NotBlankFlug != false){NotBlankFlug = true;}
		}
	}

// CHK Postal Num Syntax
	for(i=0; i<Postal.length; i++){
		if(Postal[i] == chkid) {
			PostalFlug = IsPostal($F(chkid));
		} else {
			if(PostalFlug != false){PostalFlug = true;}
		}
	}


// CHK TelNum
	for(i=0; i<TelNum.length; i++){
		if(TelNum[i] == chkid) {
			TelNumFlug = IsTelNum($F(chkid));
		} else {
			if(TelNumFlug != false){TelNumFlug = true;}
		}
	}


// CHK Katakana
	for(i=0; i<Kata.length; i++){
		if(Kata[i] == chkid) {
			KataFlug = IsKata($F(chkid));
		} else {
			if(KataFlug != false){KataFlug = true;}
		}
	}


// CHK Hiragana
	for(i=0; i<Hira.length; i++){
		if(Hira[i] == chkid) {
			HiraFlug = IsHira($F(chkid));
		} else {
			if(HiraFlug != false){HiraFlug = true;}
		}
	}


// CHK Num
	for(i=0; i<Num.length; i++){
		if(Num[i] == chkid) {
			NumFlug = IsNum($F(chkid));
		} else {
			if(NumFlug != false){NumFlug = true;}
		}
	}


// CHK Alphabets
	for(i=0; i<Alpha.length; i++){
		if(Alpha[i] == chkid) {
			AlphaFlug = IsAlpha($F(chkid));
		} else {
			if(AlphaFlug != false){AlphaFlug = true;}
		}
	}


// CHK Mail
	for(i=0; i<Mail.length; i++){
		if(Mail[i] == chkid) {
			MailFlug = IsMail($F(chkid));
		} else {
			if(MailFlug != false){MailFlug = true;}
		}
	}


// CHK CheckBox
	for(i=0; i<ChkBox.length; i++){
		if ("chk1" == chkid
				|| "chk2" == chkid
				|| "chk3" == chkid
				|| "chk4" == chkid
				|| "chk5" == chkid
				|| "chk6" == chkid) {
			ChkBoxFlug1 = IsChk($F("chk1"));
			ChkBoxFlug2 = IsChk($F("chk2"));
			ChkBoxFlug3 = IsChk($F("chk3"));
			ChkBoxFlug4 = IsChk($F("chk4"));
			ChkBoxFlug5 = IsChk($F("chk5"));
			ChkBoxFlug6 = IsChk($F("chk6"));
			if (ChkBoxFlug1 || ChkBoxFlug2 || ChkBoxFlug3 || ChkBoxFlug4 || ChkBoxFlug5 || ChkBoxFlug6) {
				$('chk_icon').innerHTML = OKimg;
			} else {
				$('chk_icon').innerHTML = NGimg+ngMsgBg+"必須"+ngMsgEd;
			}
			chkid = "chk";
		}
	}


// Mail Compare
	if((ItemToBeSame == undefined)) {
			SameAsFlug = true;
	} else {
		if(($F(chkid)) == ($F(ItemToBeSame))){
			SameAsFlug = true;
		} else {
			SameAsFlug = false;
		}
	}
	
//// Display Inline Suggestion

	var InlineMsg = "";
	if(NotBlankFlug && PostalFlug && TelNumFlug && MailFlug && KataFlug && HiraFlug && NumFlug && AlphaFlug && SameAsFlug){
		//all trueならば、OKimgを表示する。
		if (chkid != "chk") {
			$(chkid+'_icon').innerHTML = OKimg;
		}
		
		// 備考
		if (document.form.item11.value == "") {
			$('item11_icon').innerHTML = "";
		}
		FlugArray[FlugArrayNum] = true;
		
		// NotBlankが全部trueか確認
		var flug = true;
		for(i=0; i<NotBlank.length; i++){
			if(!IsNotBlank($F(NotBlank[i])) ){
				flug = false;
			}
		} 
		return true;
	} else {
		//そうでなければ、NGメッセージを用意する。
		if(!NotBlankFlug){
			InlineMsg += "必須";
		}
		if(!PostalFlug){
			if(InlineMsg != ""){InlineMsg += ", ";}
			InlineMsg += "123-4567の形で入力";
		}
		if(!TelNumFlug){
			if(InlineMsg != ""){InlineMsg += ", ";}
			InlineMsg += "03-1234-5678の形で入力";
		}
		if(!MailFlug){
			if(InlineMsg != ""){InlineMsg += ", ";}
			InlineMsg += "user@doamin.tldの形で入力";
		}
		if(!KataFlug){
			if(InlineMsg != ""){InlineMsg += ", ";}
			InlineMsg += "全角カタカナで入力";
		}
		if(!HiraFlug){
			if(InlineMsg != ""){InlineMsg += ", ";}
			InlineMsg += "全角漢字（ひらがな）で入力";
		}
		if(!NumFlug){
			if(InlineMsg != ""){InlineMsg += ", ";}
			InlineMsg += "半角数字で入力";
		}
		if(!AlphaFlug){
			if(InlineMsg != ""){InlineMsg += ", ";}
			InlineMsg += "半角英数字で入力";
		}
		if(!SameAsFlug){
			if(InlineMsg != ""){InlineMsg += ", ";}
			InlineMsg += "一致しません";
		}
		$(chkid+'_icon').innerHTML = NGimg+ngMsgBg+InlineMsg+ngMsgEd;
		FlugArray[FlugArrayNum] = false;
		return false;
	}
}

function chkOk() {
	inlineChk('name1');
	inlineChk('name2');
	inlineChk('postal');
	inlineChk('addr1');
	inlineChk('addr2');
	inlineChk('tel');
	inlineChk('mail');
	inlineChk('chk1');
	inlineChk('chk2');
	inlineChk('chk3');
	inlineChk('chk4');
	inlineChk('chk5');
	inlineChk('chk6');
	inlineChk('mail2', 'mail');
	inlineChk('item11');
}

function chkAll() {
	var InlineMsg = "必須";
	var flug = true;
	var submitDisableFlug = false;
	//BLANK CHK 項目に大して、空欄であるか又は既にチェックされたけっかがTrueで無い場合にflase flugを立てる

	for(i=0; i<NotBlank.length; i++){
		if(!IsNotBlank($F(NotBlank[i]))){
			if(FlugArray[i] != false){
				$(NotBlank[i]+'_icon').innerHTML = NGimg+ngMsgBg+InlineMsg+ngMsgEd;
			}
			flug = false;
		}
	}
	// 必須の項目を入力
	// mail
	if(!IsMail(document.form.mail.value)) {
		$('mail_icon').innerHTML = NGimg+ngMsgBg+"user@doamin.tldの形で入力"+ngMsgEd;
		flug = false;
	}
	// mail2
	if(!IsMail(document.form.mail2.value)) {
		$('mail2_icon').innerHTML = NGimg+ngMsgBg+"user@doamin.tldの形で入力"+ngMsgEd;
		flug = false;
	}
	// mail1,mail2
	if(document.form.mail.value != ""
			&& document.form.mail2.value != "") {
		if (document.form.mail.value != document.form.mail2.value) {
			if ($('mail2_icon').innerHTML != "") {
				$('mail2_icon').innerHTML = NGimg+ngMsgBg+"user@doamin.tldの形で入力,一致しません"+ngMsgEd;
			} else {
				$('mail2_icon').innerHTML += NGimg+ngMsgBg+"一致しません"+ngMsgEd;
			}
			flug = false;
		}
	}
	ChkBoxFlug1 = IsChk($F("chk1"));
	ChkBoxFlug2 = IsChk($F("chk2"));
	ChkBoxFlug3 = IsChk($F("chk3"));
	ChkBoxFlug4 = IsChk($F("chk4"));
	ChkBoxFlug5 = IsChk($F("chk5"));
	ChkBoxFlug6 = IsChk($F("chk6"));
	if (ChkBoxFlug1 || ChkBoxFlug2 || ChkBoxFlug3 || ChkBoxFlug4 || ChkBoxFlug5 || ChkBoxFlug6) {
	} else {
		$('chk_icon').innerHTML = NGimg+ngMsgBg+"必須"+ngMsgEd;
		flug = false;
	}
	if(flug){
		document.form.submit();
	}
	return false;
}