﻿		//객체 명으로 객체 받아오기
		function funcGetObjectForValidation(checkObject)
		{
			return document.all.item(checkObject);
		}

		//객체 null 체크함수
		function funcGetObjectIsNullForValidation(checkObject)
		{
			if(checkObject==null||checkObject==undefined)
			{
				alert(checkObject.toString() + "체크항목을 찾을 수 없습니다.");
				return false;
			}
			
			return true;
		}
		
		//트림함수
		function funcTrimForValidation(checkvalue)
		{
			var m = checkvalue.match(/^\s*(\S+(\s+\S+)*)\s*$/);
			return (m == null) ? "" : m[1];
		}

		//널 값 체크 함수
		function funcNullCheckForValidation(checkObject,checkObjectDescript)
		{
		
			checkObject = funcGetObjectForValidation(checkObject);
		
		
			//해당 object 없으면 널 반환
			if(!funcGetObjectIsNullForValidation(checkObject))
			{
				return false;
			}

			if(funcTrimForValidation(checkObject.value).length==0)
			{
				alert(checkObjectDescript + " 항목을 입력하세요.");
				checkObject.focus();
				return false;
			}
			
			checkObject.value = funcTrimForValidation(checkObject.value);
			return true;
		}
		
		//값에 공백을 포함하는지 체크
		function funcSpaceCheckForValidation(checkObject,checkObjectDescript)
		{
		
		checkObject = funcGetObjectForValidation(checkObject);
		
			//해당 object 없으면 널 반환
			if(!funcGetObjectIsNullForValidation(checkObject))
			{
				return false;
			}
			
			if(funcTrimForValidation(checkObject.value).indexOf(" ")>-1)
			{
				alert(checkObjectDescript + " 항목은 공백을 포함할 수 없습니다.");
				checkObject.focus();
				return false;
			}
			
			checkObject.value = funcTrimForValidation(checkObject.value);
			return true;
		}
		
		//해당 문자열을 제한값에 맞는지 검지
		function funcLimitStringLengthForValidation(checkObject,limitNum,checkObjectDescript)
		{
		checkObject = funcGetObjectForValidation(checkObject);
		
			//해당 object 없으면 널 반환
			if(!funcGetObjectIsNullForValidation(checkObject))
			{
				return false;
			}
			
			if(funcTrimForValidation(checkObject.value).length != limitNum)
			{
				alert(checkObjectDescript + " 항목은 " + limitNum + "자 이여야 합니다.");;
				checkObject.focus();
				return false;
			}
			
			checkObject.value = funcTrimForValidation(checkObject.value);
			return true;		
		}
		
		//해당 문자열이 제한 범위에 속하는지 검사

		function funcLimitRangeStringLengthForValidation(checkObject,minNum,maxNum,checkObjectDescript)
		{
		
		checkObject = funcGetObjectForValidation(checkObject);
		
			//해당 object 없으면 널 반환
			if(!funcGetObjectIsNullForValidation(checkObject))
			{
				return false;
			}
			
			if(funcTrimForValidation(checkObject.value).length<minNum || funcTrimForValidation(checkObject.value).length>maxNum)
			{
				alert(checkObjectDescript + " 항목은 " + minNum + "자 이상 " + maxNum + "자 이하 이여야 합니다.");;
				checkObject.focus();
				return false;
			}
			
			checkObject.value = funcTrimForValidation(checkObject.value);
			return true;		
		}
		
		//대상값이랑 비교
		function funcComparisonForValidation(checkObject,ComparisonTargetObject,checkObjectDescript)
		{
		
		checkObject = funcGetObjectForValidation(checkObject);
		ComparisonTargetObject = funcGetObjectForValidation(ComparisonTargetObject);
		
			//해당 object 없으면 널 반환
			if(!funcGetObjectIsNullForValidation(checkObject))
			{
				return false;
			}
			
			//해당 object 없으면 널 반환
			if(!funcGetObjectIsNullForValidation(ComparisonTargetObject))
			{
				return false;
			}

			if(checkObject.value != ComparisonTargetObject.value)
			{
			
				alert(checkObjectDescript + " 항목이 일치하지 않습니다.");
				checkObject.focus();
				return false;
			}
			
			return true;
		}
		
		//숫자만 사용하도록

		function funcNumericCheckForValidation(checkObject,checkObjectDescript)
		{
			if(isNaN(funcTrimForValidation(checkObject.value)))
			{
				alert(checkObjectDescript + " 항목은 숫자만 가능합니다.");;
				checkObject.focus();
				return false;
			}
			
			checkObject.value = funcTrimForValidation(checkObject.value);
			return true;			
		}
		
		//영숫자만 사용하도록

		function funcNumericAndAlphaCheckForValidation(checkObject,checkObjectDescript)
		{
		
			checkObject = funcGetObjectForValidation(checkObject);
		
			//해당 object 없으면 널 반환
			if(!funcGetObjectIsNullForValidation(checkObject))
			{
				return false;
			}
			
			if(!isNumAlpha(funcTrimForValidation(checkObject.value)))
			{
				alert(checkObjectDescript + " 항목은 영,숫자만 가능합니다.");;
				checkObject.focus();
				return false;
			}

			checkObject.value = funcTrimForValidation(checkObject.value);
			return true;			
		}
		
		//이메일 체크 함수
		function funcEmailCheckForValidation(checkObjectvalue)
		{
		
			var sExpression = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
			if(!RegularIsValid(funcTrimForValidation(checkObjectvalue),sExpression))
			{
				alert("이메일 형식에 맞지 않습니다.");
				return false;
			}
			return true;	
		}
		
		
		//주민번호 체크
		function funcSocialNumberCheckForValidation(SN1Object, SN2Object)
		{
			// 주민 등록 밸리 데이션

			if(!IsValidSocial(funcTrimForValidation(SN1Object.value),funcTrimForValidation(SN2Object.value)))
			{
				alert("주민등록번호를 정확히 입력하세요.");
				SN1Object.focus();
				return false;
			}

			SN1Object.value = funcTrimForValidation(SN1Object.value);
			SN2Object.value = funcTrimForValidation(SN2Object.value);
			return true;			
		}

		//영문자만 사용 체크
		function isAlpha(check)
		{
			var term = '';
			var work = check;
			for (var j=0;j < work.length;j++){
				term = work.charAt(j);
				if (!(((term >= 'A') && (term <= 'Z')) || ((term >= 'a') && (term <= 'z')))){return false;}
			}
			return true;
		}
		
		//영,숫자만 사용 체크
		function isNumAlpha(check)
		{
			var term = '';
			var work = check;
			for (var j=0;j < work.length;j++){
				term = work.charAt(j);
				if (!(((term >= 'A') && (term <= 'Z')) || ((term >= 'a') && (term <= 'z')) || ((term >= '0') && (term <= '9')))){return false;}
			}
			return true;
		}
		
		// target :대상 문자열

		// oldTerm:찾을 문자
		// newTerm:바꿀 문자
		// caseSens:boolean[true:대소문자 구분 false:대소문자 구분없음]
		// wordOnly:boolean[true:전체단어 false:서브스트링]
		function replace(target,oldTerm,newTerm,caseSens,wordOnly)
		{
			var work = target;
			var ind = 0;
			var next = 0;
			
			if(!caseSens){
				oldTerm = oldTerm.toLowerCase();
				work = target.toLowerCase();
			}
			
			while((ind = work.indexOf(oldTerm,next)) >= 0)
			{
				if(wordOnly){
					var before = ind-1;
					var after = ind + oldTerm.length;
					if(!(space(work.charAt(before)) && space(work.charAt(after)))){
						next = ind + oldTerm.length;
						continue;				
					}
				}
				target = target.substring(0,ind) + newTerm + target.substring(ind + oldTerm.length,target.length);
				work = work.substring(0,ind) + newTerm + work.substring(ind + oldTerm.length,work.length);
				next = ind + newTerm.length;
				if(next >= work.length){break;}
			}
			return target;
		}

		// 검색 해서 해당 문자가 있으면 true, 없으면 false
		// target : 문자열

		// term   : 찾을 문자열

		// caseSens : 대소문자 구분[true:구분 false:구분하지 않음]
		// wordOnly : true:전체 단어가 같을 경우 false:문자열속에 그런찾는 문자열이 있을경우
		function search(target,term,caseSens,wordOnly)
		{
			var ind = 0;
			var next = 0;
			if(!caseSens){
				term = term.toLowerCase();
				target = target.toLowerCase();
			}

			while((ind = target.indexOf(term,next)) >=0){
				if(wordOnly){
					var before = ind -1;
					var after = ind + term.length;
					if (!(space(target.charAt(before)) && space(target.charAt(after)))){
						next = ind + term.length;
						continue;
					}
				}
				return true;
			}
			return false;
		}
		
		//정규식 검사

		function RegularIsValid(val,validationexpression) 
		{
			var value = val;
			if (funcTrimForValidation(value).length == 0)
				return true;  
			var rx = new RegExp(validationexpression);
			var matches = rx.exec(value);
			return (matches != null && value == matches[0]);
		}

		//주민번호 유효성 체크함수
		function IsValidSocial(sJumin1,sJumin2)
		{
			if((sJumin1.length !=6) || (sJumin2.length !=7))
			{
				return false;
			}
			
			var lastJumin,checkNum0,checkNum1,checkNum2,checkNum3,checkNum4,checkNum5,checkNum6,checkNum7,checkNum8,checkNum9,checkNum10,checkNum11,checkNum12
			var lastJumin_mod,lastJumin_stage,lastJumin_compare
			if (parseInt(sJumin1) != NaN && parseInt(sJumin2) != NaN) {		
				lastJumin = parseFloat(sJumin2.substring(6,7));
				checkNum0  = parseFloat(sJumin1.substring(0,1)) * 2;
				checkNum1  = parseFloat(sJumin1.substring(1,2)) * 3;
				checkNum2  = parseFloat(sJumin1.substring(2,3)) * 4;
				checkNum3  = parseFloat(sJumin1.substring(3,4)) * 5;
				checkNum4  = parseFloat(sJumin1.substring(4,5)) * 6;
				checkNum5  = parseFloat(sJumin1.substring(5,6)) * 7;
				checkNum6  = parseFloat(sJumin2.substring(0,1)) * 8;
				checkNum7  = parseFloat(sJumin2.substring(1,2)) * 9;
				checkNum8  = parseFloat(sJumin2.substring(2,3)) * 2;
				checkNum9  = parseFloat(sJumin2.substring(3,4)) * 3;
				checkNum10 = parseFloat(sJumin2.substring(4,5)) * 4;
				checkNum11 = parseFloat(sJumin2.substring(5,6)) * 5;
				checkNum12 = checkNum0 + checkNum1 + checkNum2 + checkNum3 + checkNum4 + checkNum5 +
						checkNum6 + checkNum7 + checkNum8 + checkNum9 + checkNum10 + checkNum11;
			
				lastJumin_mod = checkNum12 % 11;
				lastJumin_stage = 11 - lastJumin_mod;
				lastJumin_compare = lastJumin_stage % 10;
					
				if (lastJumin_compare != lastJumin) {
					return false;
				}
			}
			return true;
		}
		