	/* チェック用javascript */
	function checker() {
		var aryErrMsg = new Array();
		var objErrObject = null;
		this.msgHissu = 'を入力して下さい。';
		this.msgHissuImage = 'を再度入力して下さい。';
		this.msgHissuSelect = 'を選択して下さい。';
		this.msgHissuSelectOne = 'を選択して下さい。';
		this.msgDate = 'は正しい日付を入力して下さい。';
		this.msgDateCompare = '以前の日付を入力して下さい。'
		this.msgLen = '文字以内で入力して下さい。';
		this.msgRange = '以下で入力して下さい。';
		this.msgLenRange = '桁以内で入力して下さい。';
		this.msgLenRange2 = '桁で入力して下さい。';
		this.msgHankaku = 'は半角で入力して下さい。';
		this.msgZenkaku = 'は全角で入力して下さい。';
		this.msgNumber = 'は半角数値で入力して下さい。';
		this.msgMulti = 'を正しく入力して下さい。';
		this.msgEmail = 'を正しく入力して下さい。';
		this.msgKana = 'は全角カタカナで入力してください。';
		
		checker.prototype.hasErr = function () {
			var blnRet = false;
			if (aryErrMsg.length > 0) {
				blnRet = true;
			}
			return blnRet;
		}
		
		checker.prototype.hasErrClear = function () {
			aryErrMsg = new Array();
		}
		
		checker.prototype.addErr = function(objTarget, strMsg) {
			addErrObject(objTarget, strMsg);
		}
		
		checker.prototype.getName = function () {
			return objErrObject.name();
		}
		
		checker.prototype.getErrMsg = function (intN) {
			var strRet = '';
			if (intN >= 0){
				strRet = aryErrMsg[intN];
			} else {
				for (i = 0;i < aryErrMsg.length;i++) {
					strRet += aryErrMsg[i] + '\n';
				}
			}
			return strRet;
		}
		
		checker.prototype.getErrLength = function () {
			var intRet = aryErrMsg.length;
			return intRet;
		}
		
		checker.prototype.setFastErrObjForcus = function () {
			if (objErrObject.type && objErrObject.type != 'hidden') {
				objErrObject.focus();
			} else {
				if (isCheckBoxRadio(objErrObject)) {
        			objErrObject[0].focus();
				}
			}
		}
		
		checker.prototype.addErrObj = function (objErrTgt, strMsg) {
			addErrObject(objErrTgt, strMsg);
		}
		
		//必須
		checker.prototype.hissu = function (objTarget, strMsg, strMsgFlg) {
			
			var strTmpMsg = strMsg;
			var strSuffixMsg = "";
			var checkFlg = false;
			
			if (objTarget) {
				if (isCheckBoxRadio(objTarget)) {
					for (var j = 0;j < objTarget.length; j++) {
	    				checkFlg = objTarget[j].checked;
	    				if (checkFlg) {
	    					break;
	    				}
	    			}
        			strSuffixMsg = this.msgHissuSelect;
				} else {
					if (hasValue(objTarget)) {
						checkFlg = true;
	                }
	                if (isSelectBox(objTarget)) {
						strSuffixMsg = this.msgHissuSelectOne;
					} else {
						strSuffixMsg = this.msgHissu;
					}
				}
				
				if (!checkFlg) {
                    if (!strMsgFlg > 0 || strMsgFlg == "") {
						strTmpMsg += strSuffixMsg;
					}
					addErrObject(objTarget, strTmpMsg);
                }
			}
		}
		
		//画像アップ２回目の必須
		checker.prototype.hissuImage = function (objTarget, objEditType, objDelFlg, strMsg) {
			
			var strTmpMsg = strMsg;
			var strSuffixMsg = "";
			var checkFlg = false;
			
			//新規だったら
			if (objTarget && objEditType && objDelFlg) {
				if (objEditType.value == "0") {
					//前回画像を入力してたら
					if (objTarget[1]
						&& hasValue(objTarget[1])) {
						//削除を選択してなかったら
						if (getValue(objDelFlg) != "1") {
							//今回画像の入力がなかったら
							if (objTarget[0].value == null
								|| objTarget[0].value == "") {
								addErrObject(objTarget[0], strMsg + this.msgHissuImage);
							}
						}
					}
				}
			}
		}
		
		//日付チェック
		checker.prototype.date = function (objYear, objMonth, objDay, strMsg, strMsgFlg) {
			var blnRet = true;
			
			if (objYear && objMonth) {
				var year = "0";
				if (objYear.value || objYear.value == "") {
					year = objYear.value;
				} else if (objYear) {
					year = objYear;
				}
				
				var month = "0";
				if (objMonth.value || objMonth.value == "") {
					month = objMonth.value;
				} else if (objMonth) {
					month = objMonth;
				}
				
				var day
				if (objDay || objDay != '') {
					this.number(objDay, strMsg);
					day = objDay.value;
				} else {
					day = '1';
				}
				var strTmpMsg = strMsg;
				
				if (year != '' && month != '' && day != '') {
					blnRet = checkDate(year, month, day);
				}
				
				if (!blnRet) {
					if (!strMsgFlg > 0) {
						strTmpMsg += this.msgDate;
					}
					addErrObject(objYear, strTmpMsg);
				}
			}
		}
		
		//日付比較チェック
		checker.prototype.dateCompare = function (objFromYear, objFromMonth, objFromDay
												, objToYear, objToMonth, objToDay
												, strFromMsg, strToMsg) {
			var blnFlg = true;
			
			if (objFromYear && objFromMonth && objFromDay
				&& objToYear && objToMonth && objToDay) {
				
				var strFromYear = getValue(objFromYear);
				var strFromMonth = getValue(objFromMonth);
				var strFromDay = getValue(objFromDay);
				
				var strToYear = getValue(objToYear);
				var strToMonth = getValue(objToMonth);
				var strToDay = getValue(objToDay);
				
				if (checkDate(strFromYear, strFromMonth, strFromDay)
					&& checkDate(strToYear, strToMonth, strToDay)) {
					var dtFrom = new Date(strFromYear, parseInt(strFromMonth, 10) - 1, parseInt(strFromDay, 10));
					var dtTo = new Date(strToYear, parseInt(strToMonth, 10) - 1, parseInt(strToDay, 10));
					
					if (dtFrom.getTime() > dtTo.getTime()) {
						blnFlg = false;
					}
				}
			}
			
			if (!blnFlg) {
				var strErrMsg = strFromMsg + "は" + strToMsg + this.msgDateCompare;
				addErrObject(objFromYear, strErrMsg);
			}
		}
		
		//和暦日付チェック
		checker.prototype.dateG = function (objGengo, objYear, objMonth, objDay, strMsg, strMsgFlg) {
			var strTmpMsg = strMsg;
			var blnRet = true;
			var intYear;
			if (objGengo.value != '') {
				this.number(objYear, strMsg);
				this.number(objMonth, strMsg);
				var year = parseInt(objYear.value);
				if (objGengo.value == '昭和') {
					if (year <= 63) {
						this.date((1926 + year).toString(), objMonth, objDay, strMsg, strMsgFlg);
					} else {
						blnRet = false;
					}
				} else if (objGengo.value == '平成') {
					this.date((1989 + year).toString(), objMonth, objDay, strMsg, strMsgFlg);
				}
				if (!blnRet) {
					if (!strMsgFlg > 0) {
						strTmpMsg += this.msgDate;
					}
					addErrObject(objYear, strTmpMsg);
				}
			}
		}
		
		//時間チェック
		checker.prototype.time = function (objHour, objMin, strMsg, strMsgFlg) {
			var strTmpMsg = strMsg;
			var blnRet = true;
			if (objHour && objMin) {
				if (objHour.value != '' || objMin.value != '') {
					this.number(objHour, strMsg);
					this.number(objMin, strMsg);
					var intH = parseInt(objHour.value);
					var intM = parseInt(objMin.value);
					if (!(0 <= intH && intH < 24)) {
						blnRet = false;
					} else if (!(0 <= intM && intM < 60)) {
						blnRet = false;
					}
					if (!blnRet) {
						if (!strMsgFlg > 0) {
							strTmpMsg += this.msgMulti;
						}
						addErrObject(objHour, strTmpMsg);
					}
				}
			}
		}
		
		//文字数チェック
		checker.prototype.length = function (objTarget, intLength, strMsg, strMsgFlg) {
			var intTargetLen;
			var strTmpMsg = strMsg;
			if (objTarget.value != '' && intLength != '') {
				if (objTarget.value.length > intLength) {
					if (!strMsgFlg > 0 || strMsgFlg == '') {
						strTmpMsg += 'は' + intLength.toString() + this.msgLen;
					}
					addErrObject(objTarget, strTmpMsg);
				}
			}
		}
		
		//バイト数チェック
		checker.prototype.byte = function (objTarget, intLength, strMsg, strMsgFlg) {
			var intTargetLen;
			var strLength = (intLength / 2).toString();
			var strTmpMsg = strMsg;
			if (objTarget) {
				if (objTarget.value != '' && intLength != '') {
					intTargetLen = myLen(objTarget.value);
					if (intTargetLen > intLength) {
						if (!strMsgFlg > 0 || strMsgFlg == '') {
							strTmpMsg += 'は全角' + strLength + '文字、半角' + intLength.toString() + this.msgLen;
						}
						addErrObject(objTarget, strTmpMsg);
					}
				}
			}
		}
		
		//範囲チェック
		checker.prototype.range = function (objTarget, intRangeFrom, intRangeTo, strMsg, strMsgFlg) {
			var strTmpMsg = strMsg;
			this.number(objTarget, strMsg);
			if (objTarget.value != '') {
				var intTarget = parseInt(objTarget.value);
				this.number(objTarget, strMsg);
				if (!(intRangeFrom <= intTarget && intTarget <= intRangeTo)) {
					if (!strMsgFlg > 0 || strMsgFlg == '') {
						strTmpMsg += 'は' + intRangeFrom + '以上' + intRangeTo + this.msgRange;
					}
					addErrObject(objTarget, strTmpMsg);
				}
			}
		}
		
		//桁数範囲チェック
		checker.prototype.lenRange = function (objTarget, intRangeFrom, intRangeTo, strMsg, strMsgFlg) {
			var strTmpMsg = strMsg;
			this.number(objTarget, strMsg);
			if (objTarget) {
			if (objTarget.value != '') {
				var intTargetLen = objTarget.value.length;
				if (!(intRangeFrom <= intTargetLen && intTargetLen >= intRangeTo)) {
					if (!strMsgFlg > 0 || strMsgFlg == '') {
						if (intRangeFrom > 0) {
							strTmpMsg += 'は' + intRangeFrom + '桁以上' + intRangeTo + this.msgLenRange;
						} else {
							strTmpMsg += 'は' + intRangeTo + this.msgLenRange;
						}
					}
					addErrObject(objTarget, strTmpMsg);
				}
			}
			}
		}
		
		//桁数チェック
		checker.prototype.lenRange2 = function (objTarget, intRange, strMsg) {
			var strTmpMsg = strMsg;
			if (objTarget) {
				if (hasValue(objTarget)) {
					var intTargetLen = getValue(objTarget).length;
					if (intRange != intTargetLen) {
						strTmpMsg += 'は' + intRange + this.msgLenRange2;
						addErrObject(objTarget, strTmpMsg);
					}
				}
			}
		}
		
		//半角チェック
		checker.prototype.hankaku = function (objTarget, strMsg, strMsgFlg) {
			var strTmpMsg = strMsg;
			if (objTarget) {
			if (objTarget.value != '' && objTarget != '') {
				if (objTarget.value.length != myLen(objTarget.value)) {
					if (!strMsgFlg > 0 || strMsgFlg == '') {
						strTmpMsg += this.msgHankaku;
					}
					addErrObject(objTarget, strTmpMsg);
				}
			}
			}
		}
		
		//全角チェック
		checker.prototype.zenkaku = function (objTarget, strMsg, strMsgFlg) {
			var strTmpMsg = strMsg;
			if (objTarget.value != '') {
				if ((objTarget.value.length * 2) != myLen(objTarget.value)) {
					if (!strMsgFlg > 0 || strMsgFlg == '') {
						strTmpMsg += this.msgZenkaku;
					}
					addErrObject(objTarget, strTmpMsg);
				}
			}
		}
		
		//数値チェック
		checker.prototype.number = function (objTarget, strMsg, strMsgFlg) {
			var strTmpMsg = strMsg;
			if (objTarget.value != '') {
				if (isNaN(objTarget.value) || objTarget.value.length != myLen(objTarget.value)) {
					if (!strMsgFlg > 0 || strMsgFlg == '') {
						strTmpMsg += this.msgNumber;
					}
					addErrObject(objTarget, strTmpMsg);
				}
			}
			
		}
		
		/****************************************************/
		/*	小数点入力チェック								*/
		/*	pstrDoc		:	Document.Form.Elements			*/
		/*	strName		:	Elements.Title					*/
		/*	pintUpper	:	小数点以上桁数					*/
		/*	pintLower	:	小数点以下桁数					*/
		/****************************************************/
		checker.prototype.decimal = function (objTarget, intUpper, intLower, strMsg, strMsgFlg) {
			var blnRet = true
			var strTmpMsg = '';
			
			if (objTarget.value != '') {
				if (objTarget.value.search(/[^0-9\.]/i) != -1) {
					strTmpMsg = strMsg + this.msgNumber;
					addErrObject(objTarget, strTmpMsg);
					blnRet = false;
				}

				// 小数点精度
				strsplit = objTarget.value.split('.');
				if (blnRet && strsplit[0].length > intUpper) {
					strTmpMsg = strMsg + 'の小数点以上は'+ intUpper + '桁以内にしてください。';
					addErrObject(objTarget, strTmpMsg);
					blnRet = false;
				}

				if (blnRet && objTarget.value.indexOf('.') != -1) {
					if (strsplit[1].length > intLower) {
						strTmpMsg = strMsg + 'の小数点以下は' + intLower + '桁以内にしてください。';
						addErrObject(objTarget, strTmpMsg);
						blnRet = false;
					}
				}
			}
		}
		
		//条件必須
		checker.prototype.jHissu = function (objTarget, objTarget2, strMsg, strMsg2, strMsgFlg) {
			var strTmpMsg = '';
			if (objTarget.value != '' && objTarget2.value == '') {
				strTmpMsg = strMsg + 'が入力されている場合、' + strMsg2 + 'を入力して下さい。';
				addErrObject(objTarget, strTmpMsg);
			}
		}
		//条件必須（選択）
		checker.prototype.jHissu1 = function (objTarget, objTarget2, strMsg, strMsg2, strMsgFlg) {
			var strTmpMsg = '';
			if (objTarget.checked != '' && objTarget2.value == '') {
				strTmpMsg = strMsg + 'が選択されている場合、' + strMsg2 + 'を入力して下さい。';
				addErrObject(objTarget2, strTmpMsg);
			}
		}
		//条件状態必須
		checker.prototype.jHissu2 = function (objTarget, objTarget2, strMsg, strMsg2, strTargetVal, strMsg3, strMsgFlg) {
			var strTmpMsg = '';
			if (getValue(objTarget) == strTargetVal && !hasValue(objTarget2)) {
				if (strMsg3) {
					strTmpMsg = strMsg + 'が「' + strMsg3 + '」の場合、' + strMsg2 + 'を入力して下さい。';
				} else {
					strTmpMsg = strMsg + 'が「' + strTargetVal + '」の場合、' + strMsg2 + 'を入力して下さい。';
				}
				addErrObject(objTarget2, strTmpMsg);
			}
		}
		
		function addErrObject(objTarget, strMsg) {
			aryErrMsg.push(strMsg);
			if (objErrObject == null) {
				objErrObject = objTarget;
			}
		}
		
		/*
		 * 相関必須チェック
		 * 引数「objTargets」で指定されたコントロールに１つでも値があった場合、すべて必須。
		 * 引数
		 * objTargets：
		 * 必須チェックを行う対象のコントロール
		 * Arrayである必要がある
		 * strMsgs:
		 * エラー時のメッセージ
		 * blnSameMsg:
		 * trueの場合、先頭のメッセージのみを出す
		 */
		checker.prototype.jHissu3 = function (objTargets, strMsgs, blnSameMsg) {
			var strDelimitter = "、";
			
			if (objTargets.length != null) {
				//どれか１にでも値があるかチェック
				var checkFlg = false;
				var objTarget;
				for (var i = 0; i < objTargets.length; i++) {
					objTarget = objTargets[i];
					if (hasValue(objTarget)) {
						checkFlg = true;
						break;
					}
				}
				
				if (checkFlg) {
					//全部に値があるかチェック
					var strErrMsg = "";
					var objFastErr = null;
					for (var i = 0; i < objTargets.length; i++) {
						objTarget = objTargets[i];
						if (!hasValue(objTarget)) {
							if (objFastErr == null) {
								objFastErr = objTarget;
							}
							
							if (blnSameMsg) {
								if (strErrMsg == null
									|| strErrMsg == "") {
									strErrMsg += strMsgs[0] + strDelimitter;
								}
							} else {
								strErrMsg += strMsgs[i] + strDelimitter;
							}
						}
					}
					if (strErrMsg.length > 0) {
						strErrMsg = strErrMsg.substr(0, strErrMsg.length - strDelimitter.length) + this.msgHissu;
						addErrObject(objFastErr, strErrMsg);
					}
				}
			}
		}
		
		//メールアドレス
		checker.prototype.email = function (objTarget, strMsg, strMsgFlg) {
			var strTmpMsg = strMsg;
			if (objTarget) {
				if (!checkEmail(getValue(objTarget))) {
                    if (!strMsgFlg > 0 || strMsgFlg == "") {
						strTmpMsg += this.msgEmail;
					}
					addErrObject(objTarget, strTmpMsg);
				}
			}
		}

		//カタカナチェック
		checker.prototype.kana = function (objTarget, strMsg, strMsgFlg) {
			var strTmpMsg = strMsg;
			if (objTarget) {
				if (objTarget.value != '') {
					if (objTarget.value.match(/^[ァ-ロワヲンー]*$/) == null) {
						strTmpMsg += this.msgKana;
						addErrObject(objTarget, strTmpMsg);
					}
				}
			}
		}
	}

	function myLen(s) {
		var r = 0;
		for (var i = 0; i < s.length; i++) {
			var c = s.charCodeAt(i);
			// Shift_JIS: 0x0 ～ 0x80, 0xa0  , 0xa1   ～ 0xdf  , 0xfd   ～ 0xff
			// Unicode  : 0x0 ～ 0x80, 0xf8f0, 0xff61 ～ 0xff9f, 0xf8f1 ～ 0xf8f3
			if ((c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)) {
				r += 1;
			} else {
				r += 2;
			}
		}
		return r;
	}

	//日付の正当性チェック
	function checkDate(strY, strM, strD) {
		var blnRet = true;
		var year, month, day;
		
		if (!isNaN(strY) && !isNaN(strM) && !isNaN(strD)) {
			year = parseInt(strY);
			//08と09をparseIntすると0が返ってきてしまうため最初が0の一桁数字は0を取る
			if (strM.substr(0,1) == '0' && strM.length == 2) {
				month = strM.substr(1,1);
			} else {
				month = strM;
			}
			month = parseInt(month) - 1; //月はjavascript上では-1になる。
			if (strD.substr(0,1) == '0' && strD.length == 2) {
				day = strD.substr(1,1);
			} else {
				day = strD;
			}
			day = parseInt(day);

			//月が12以上だったら強制的にエラー
			if (!(0 <= month || month < 12)) { blnRet = false; }
			
			//日付を実際に作成してチェック
			var dates = new Date(year,month,day);
			if (dates.getYear() < 1900) {
				if (year != dates.getYear() + 1900) { blnRet = false; }
			} else {
				if (year != dates.getYear()) { blnRet = false; }
			}
			if (month != dates.getMonth()) { blnRet = false; }
			if (day != dates.getDate()) { blnRet = false; }
		} else {
			blnRet = false;
		}
		return blnRet;
	}

	/*
	 * 値が入力されているかのチェック
	 * 値が入力されていればtrueを返す
	 */
	function hasValue (objTarget) {
		var checkFlg = false;
		
		if (objTarget) {
			if (getValue(objTarget) == null
				|| getValue(objTarget) == "") {
				checkFlg = false;
			} else {
				checkFlg = true;
			}
		}
		
		return checkFlg;
	}

	/*
	 * コントロールの種類によって値を返す
	 */
	function getValue (objTarget) {
		var val = null;
		
		if (objTarget) {
			if (isCheckBoxRadio(objTarget)) {
				if (objTarget[0] != null) {
	    			for (var j = 0;j < objTarget.length; j++) {
	    				checkFlg = objTarget[j].checked;
	    				if (checkFlg) {
	    					val = objTarget[j].value;
	    					break;
	    				}
	    			}
    			} else {
    				if (objTarget.checked) {
    					val = objTarget.value;
    				}
    			}
    		} else if (isSelectBox(objTarget)) {
    			var si = objTarget.selectedIndex;
				if (si >= 0) {
					val = objTarget.options[si].value;
				}
			} else {
				val = objTarget.value;
			}
		}
		
		return val;
	}

	/*
	 * 対象がcheckboxまたは、radioだった場合true
	 */
	function isCheckBoxRadio(objTarget) {
		var checkFlg = false;
		
		if (objTarget) {
			if (objTarget.type != null
				&& objTarget.type == "checkbox") {
				checkFlg = true;
			}
			if (objTarget[0] != null) {
    			if ((objTarget[0].type != null)
        			&& (objTarget[0].type == "radio"
        				|| objTarget[0].type == "checkbox")) {
        			checkFlg = true;
				}
			}
		}
		
		return checkFlg;
	}
	 
	/*
	 * 対象がselectboxだった場合true
	 */
	function isSelectBox(objTarget) {
		var checkFlg = false;
		
		if (objTarget) {
			if (objTarget.type != null
    			&& objTarget.type == "select-one") {
    			checkFlg = true;
			}
		}
		
		return checkFlg;
	}
	
	/*
	 * メールアドレスの整合性チェック
	 * OKだったらtrue
	 */
	function checkEmail(emailStr) {
       if (emailStr.length == 0) {
           return true;
       }
       var emailPat=/^(.+)@(.+)$/;
       var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
       var validChars="\[^\\s" + specialChars + "\]";
       var quotedUser="(\"[^\"]*\")";
       var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
       var atom=validChars + '+';
       var word="(" + atom + "|" + quotedUser + ")";
       var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
       var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
       var matchArray=emailStr.match(emailPat);
       if (matchArray == null) {
           return false;
       }
       var user=matchArray[1];
       var domain=matchArray[2];
       if (user.match(userPat) == null) {
           return false;
       }
       var IPArray = domain.match(ipDomainPat);
       if (IPArray != null) {
           for (var i = 1; i <= 4; i++) {
              if (IPArray[i] > 255) {
                 return false;
              }
           }
           return true;
       }
       var domainArray=domain.match(domainPat);
       if (domainArray == null) {
           return false;
       }
       var atomPat=new RegExp(atom,"g");
       var domArr=domain.match(atomPat);
       var len=domArr.length;
       /*
       if ((domArr[domArr.length-1].length < 2) ||
           (domArr[domArr.length-1].length > 3)) {
       */
       if ((domArr[domArr.length-1].length < 2) ||
           (domArr[domArr.length-1].length > 4)) {
           return false;
       }
       if (len < 2) {
           return false;
       }
       return true;
    }
	
