// This set of function are general includes for validation
// They are designed in pairs the validation and the event function
// the event function will call the validation with the event src

/************************************************************************
파 일 명		: /Scripts/validation.js
작성목적		: validation객체를 이용하여 Control validation 을 위한 함수
작 성 자		: 
최초작성일	: 2004.01.07

사용 예		:	if( !validation.nonBlack(document.all.txtInput, "필수값") return;
						if (!validation.nonBlank(document.all.vs_NonBlank, '필수값')) return  false ;
						if (!validation.validInteger(document.all.validInteger, '정수체크', 10, 1000, false)) return false;															
						if (!validation.validEmail(document.all.validEmail, '이메일', true)) return false ;						
						if (!validation.validPhoneNumber(document.all.validPhoneNumber, '전화번호', true)) return false;						
						if (!validation.validCardNumber(document.all.validCardNumber, '카드번호', true)) return false;						
						if (!validation.validDateTime(document.all.validDateTime,'등록일시', true)) return false;						
						if (!validation.validNumber(document.all.validNumber, '입력 수치', false)) return false;							
						if (!validation.validJuminNumber(document.all.validJuminNumber, '주민등록번호', false)) return false;			
						if (!validation.validMoney(document.all.validMoney, '입금액', 3, true)) return false;			
						if (!validation.validDate(document.all.validDate, '입금날짜', false)) return false;			
						if (!validation.validSchoolTerm(document.all.validSchoolTerm, '학기', false)) return false ;			
						if (!validation.validDateRange(document.all.validStartDate, document.all.validEndDate , 3, false)) return false ;						
						if (!validation.validQtySize(document.all.validStartDate, document.all.validEndDate , "수량", true)) return false ;									
						if (!validation.itemSelected(document.all.selectName,"과목선택", false)) return false ;		
						if (!validation.validCheckBoxList("chkCode", "체크박스리스트", true)) return false;	// CheckBoxList 컨트롤 Validation 추가
						if (!validation.validRadionButtonList("rdoCode", "라디오 버튼", true)) return false;	// RadionButtoList 컨트롤 Validation 추가
						if (!validation.validDropDownList(document.all.ddlFamily, "직업 코드",  true)) return false;									
						if (!validation.validYearMonth(document.all.txtYearMonth, "년도와 열", true)) return false; // 년도와 월 체크
						if (!validation.validJuminNumber2Field(document.all.txtJumin1,document.all.txtJumin2,  "주민등록번호 2칸", true)) return false;  // 2칸의 주민등록번호 컨트롤 validation 
						if (!validation.validFullDateTime(document.all.txtFullDateTime, "마감 일시(초포함)", true)) return false; // Full DateTime (초단위 포함)
						if (!validation.validYear(document.all.txtYear, "체크 년도", true)) return false; 		// Only 년도 체크		
						if(!validation.validStringLength(document.all.txtStringLength, 3, "입력 문자열 비교", true)) return false; //문자열 길이 비교
						
						if(!validation.validDynamicStringLength(document.all.txtStringLength, 2, ">", "입력 문자열 비교", true)) return false; 	//문자열 길이 비교
						if(!validation.validDynamicStringLength(document.all.txtStringLength, 2, "<", "입력 문자열 비교", true)) return false; //문자열 길이 비교
						if(!validation.validDynamicStringLength(document.all.txtStringLength, 2, ">=, "입력 문자열 비교", true)) return false; //문자열 길이 비교
						if(!validation.validDynamicStringLength(document.all.txtStringLength, 2, "<=, "입력 문자열 비교", true)) return false; //문자열 길이 비교
						if(!validation.validDynamicStringLength(document.all.txtStringLength, 2, "==, "입력 문자열 비교", true)) return false; //문자열 길이 비교
						if(!validation.validDynamicStringLength(document.all.txtStringLength, 2, "!=", "입력 문자열 비교", true)) return false; //문자열 길이 비교
						
						if(!validation.validFullDynamicStringLength(document.all.txtStringLength, 2, ">", "입력 문자열 비교", true)) return false; 	//문자열 길이 비교
						if(!validation.validFullDynamicStringLength(document.all.txtStringLength, 2, "<", "입력 문자열 비교", true)) return false; //문자열 길이 비교
						if(!validation.validFullDynamicStringLength(document.all.txtStringLength, 2, ">=, "입력 문자열 비교", true)) return false; //문자열 길이 비교
						if(!validation.validFullDynamicStringLength(document.all.txtStringLength, 2, "<=, "입력 문자열 비교", true)) return false; //문자열 길이 비교
						if(!validation.validFullDynamicStringLength(document.all.txtStringLength, 2, "==, "입력 문자열 비교", true)) return false; //문자열 길이 비교
						if(!validation.validFullDynamicStringLength(document.all.txtStringLength, 2, "!=", "입력 문자열 비교", true)) return false; //문자열 길이 비교						
*************************************************************************/

/*********************************************************************************
 에러 메시지
*********************************************************************************/

var NONBLANK_INFO_MESSAGE = " 을(를) 입력해 주시기 바랍니다.";
var VALIDNUMBER_INFO_MESSAGE = " 은(는) 숫자만 입력할 수 있습니다.<br> 범위를 확인하세요!!";
var VALIDINT_INFO_MESSAGE = " 은(는) 숫자만 입력할 수 있습니다.<br> 범위를 확인하세요!!";
var VALIDQTYSIZE_FIRSTITEM_INFO_MESSAGE = " 을(를) 확인해 주십시오.<br> 비교할 첫번째 수량을 입력해 주십시오.";	
var VALIDQTYSIZE_SECONDITEM_INFO_MESSAGE = " 을(를) 확인해 주십시오.<br> 비교할 첫번째 수량을 입력해 주십시오.";	
var VALIDQTYSIZE_INFO_MESSAGE = " 수량을 확인해 주십시오";
var ITEMSELECT_INFO_MESSAGE = " 을(를) 선택해 주시기 바랍니다.";
var VALIDDATERANGE_INFO_FOREMESSAGE = "입력한 날짜를 확인하십시요.<br> 날짜 간격은<b>" ;
var VALIDDATERANGE_INFO_REARMESSAGE = "</b> 입니다.<br> 종료일은 시작일보다 같거나 커야 합니다.";
var VALIDEMAIL_INFO_MESSAGE = " 이(가) 유효한 형식의 이메일 주소가 아닙니다.";
var VALIDPHONE_INFO_MESSAGE = " 이(가) 유효한 값이 아닙니다.<BR>02-123-4567 과 같은 형태로 입력해 주시기 바랍니다.";
var VALIDCARDNUMBER_INFO_MESSAGE = " 이(가) 유효한 값이 아닙니다.<br>0000-1111-2222-3333 과 같은 형태로 입력해 주시기 바랍니다.";
var VALIDDATETIME_INFO_MESSAGE = " 이(가) 유효한 값이 아닙니다.<br>2000-05-05 09:00 과 같은 형태로 입력해 주시기 바랍니다.";
var VALIDJUMINNUMBER_INFO_MESSAGE = " 이(가) 유효한 값이 아닙니다.<br>990403-1234567 과 같은 형태로 입력해 주시기 바랍니다.";
var VALIDBUSINESSNUMBER_INFO_MESSAGE = " 이(가) 유효한 값이 아닙니다.<br>117-11-11111 과 같은 형태로 입력해 주시기 바랍니다.";
var VALIDMONEY_INFO_MESSAGE = " 이(가) 유효한 값이 아닙니다.<br> $일 경우는 199.99 과 같은 형태로 입력해 주시기 바랍니다.";
var VALIDDATE_INFO_MESSAGE =  " 이(가) 유효한 값이 아닙니다.<BR>2005-03-01 과 같은 형태로 입력해 주시기 바랍니다.";
var VALIDSCHOOLTERM_INFO_MESSAGE = " 이(가) 유효한 값이 아닙니다.<br>2005-1 과 같은 형태로 입력해 주시기 바랍니다.";
var VALIDCHECKBOXLIST_INFO_MESSAGE = " 이(가) 선택되지 않았습니다.<br>체크 박스 중 하나의 값을 선택하세요";
var VALIDRADIOBUTTONLIST_INFO_MESSAGE = " 이(가) 선택되지 않았습니다.<br>라디오 버튼 중 하나의 값을 선택하세요";
var VALIDDROPDOWNLIST_INFO_MESSAGE = " 이(가) 선택되지 않았습니다.<br>리스트 항목 중  하나의 값을 선택하세요";
var VALIDLISTBOX_INFO_MESSAGE = " 이(가) 선택되지 않았습니다.<br>리스트 항목 중  하나의 값을 선택하세요";
var VALIDYEARMONTH_INFO_MESSAGE	=  " 이(가) 유효한 값이 아닙니다.<BR>2005-03 과 같은 형태로 입력해 주시기 바랍니다.";		
//  2005. 8. 3. 추가 
var VALIDFULLDATETIME_INFO_MESSAGE = " 이(가) 유효한 값이 아닙니다.<br>2000-05-05 09:23:20 과 같은 형태로 입력해 주시기 바랍니다.";
var VALIDYEAR_INFO_MESSAGE	=  " 이(가) 유효한 값이 아닙니다.<BR>2005 와(과) 같은 형태로 입력해 주시기 바랍니다.";		
var VALIDSTRINGLENGTH_INFO_START_MESSAGE	=  " 이(가) 유효한 값이 아닙니다<BR>문자열 길이는 ";
var VALIDSTRINGLENGTH_INFO_END_MESSAGE	=  " 이상입니다. ";
//  2005. 8. 9. 추가 
var VALIDDYNAMICSTRINGLENGTH_INFO_START_MESSAGE = "입력 문자열을 확인해 주세요<BR>문자열은";
var VALIDDYNAMICSTRINGLENGTH_INFO_END_MESSAGE = "와(과)같은 조건으로 입력하셔야 합니다. ";
var VALIDDYNAMICSTRINGLENGTH_INFO_MESSAGE = "입력한 연산자(>, <, >=, <=, ==, !=)를 확인해 주세요. ";

var VALIDFULLDYNAMICSTRINGLENGTH_INFO_START_MESSAGE = "입력 문자열을 확인해 주세요!! <BR>문자열은"; 
var VALIDFULLDYNAMICSTRINGLENGTH_INFO_END_MESSAGE = "와(과)같은 조건으로 입력하셔야 합니다. ( 한글 1자는 2byte로, 영문과 숫자는 1byte로 계산됩니다. )";

//(임시) 박병재
var ITEMSELECT_INFO_MESSAGE = " 을(를) 선택해 주시기 바랍니다.";

/************************************************************************
함수명			: defaultValue()
작성목적		: Control의 현재 Value return 
Parameter		:
						item :  컨트롤 객체(Control Object)
Return			
						Control의 현재 value (string)
작 성 자		:	 
최초작성일	:
수정작성자	:
수정작성일	: 2005. 03. 22. 
수정내역		: Script 정리(함수명 수정)
*************************************************************************/
function defaultValue(itemValue) 
{

	var strDefault = itemValue.defaultValue;
	
	if (strDefault==null || strDefault=="")
		strDefault="";
	
	return strDefault;
}

/************************************************************************
함수명			: trimString()
작성목적		: 문자열의 공백 제거
Parameter		:
Return			:
작 성 자		:	 
최초작성일	:
수정작성자	:
수정작성일	: 2005. 03. 22. 
수정내역		: Script 정리(함수명 수정)
*************************************************************************/
function trimString() {
	var ichar, icount;
	var strValue = this;
	ichar = strValue.length - 1;
	icount = -1;
	while (strValue.charAt(ichar)==' ' && ichar > icount)
		--ichar;
	if (ichar!=(strValue.length-1))
		strValue = strValue.slice(0,ichar+1);
	ichar = 0;
	icount = strValue.length - 1;
	while (strValue.charAt(ichar)==' ' && ichar < icount)
		++ichar;
	if (ichar!=0)
		strValue = strValue.slice(ichar,strValue.length);
	return strValue;
}



/************************************************************************
함수명			: checkDecimalplace()
작성목적		: 숫자와 소숫점(.) 체크하는 함수 
Parameter		:
						item				: 검사할 Object (Object)

Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 4. 8.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function checkDecimalplace (itemValue, decimalplace)
{

	var decimalPosition =  itemValue.indexOf(".")
	var decimalString = itemValue.substring(decimalPosition + 1);

	try
	{
		//소수점 아래 자리의 숫자의 길이 Check
		if (decimalString.length != parseInt(decimalplace, 10))
		{
			return false;
		}
		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
}

/************************************************************************
함수명			: isNumberType()
작성목적		: 숫자와 소숫점(.) 체크하는 함수
Parameter		:
						item				: 검사할 Object (Object)

Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 4. 8.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function isNumberType(itemValue)
{
	var num = ".0123456789";
	
	try
	{
		
		if(itemValue == null)
		{
			return false;
		}
				
		for (var intLoop = 0; intLoop < itemValue.length; intLoop++) 
		{
			if (num.indexOf(itemValue.charAt(intLoop)) == -1) {
				return false;
			}
		}
		
		 if (parseInt(itemValue.indexOf(".")) != parseInt(itemValue.lastIndexOf(".")))
		 {
			return false;
		 }
		 		
		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
}

/************************************************************************
함수명			: isNumberCommaType()
작성목적		: 숫자와 소숫점(.), 컴마(,)  체크하는 함수
Parameter		:
						item				: 검사할 Object (Object)

Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 8. 1.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function isNumberCommaType(itemValue)
{
	var num = ".,0123456789";
	
	try
	{
		
		if(itemValue == null)
		{
			return false;
		}
				
		for (var intLoop = 0; intLoop < itemValue.length; intLoop++) 
		{
			if (num.indexOf(itemValue.charAt(intLoop)) == -1) {
				return false;
			}
		}
		
		 if (parseInt(itemValue.indexOf(".")) != parseInt(itemValue.lastIndexOf(".")))
		 {
			return false;
		 }
		 		
		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
}


/************************************************************************
함수명			: isNumberCommaType()
작성목적		: 숫자와 소숫점(.), 컴마(,)  체크하는 함수
Parameter		:
						item				: 검사할 Object (Object)

Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 8. 1.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function isNumberCommaSignType(itemValue)
{
	var num = "+-.,0123456789";
	
	try
	{
		
		if(itemValue == null)
		{
			return false;
		}
				
		for (var intLoop = 0; intLoop < itemValue.length; intLoop++) 
		{
			if (num.indexOf(itemValue.charAt(intLoop)) == -1) {
				return false;
			}
		}
		
		 if (parseInt(itemValue.indexOf(".")) != parseInt(itemValue.lastIndexOf(".")))
		 {
			return false;
		 }
		 		
		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
}

/************************************************************************
함수명			: isDigitType()
작성목적		: 숫자 체크 함수
Parameter		:
						item				: 검사할 Object (Object)

Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 4. 8.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function isDigitType(itemValue)
{

	var num = "0123456789";
	try
	{
		
				
		for (var intLoop = 0; intLoop < itemValue.length; intLoop++) 
		{
			if (num.indexOf(itemValue.charAt(intLoop)) == -1) {

				return false;
			}
		}
		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
}

/************************************************************************
함수명			: isDigitCommaType()
작성목적		: 숫자와 Comma 체크 함수
Parameter		:
						item				: 검사할 Object (Object)

Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 8. 3.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function isDigitCommaType(itemValue)
{

	var num = "0123456789,";
	try
	{
		
				
		for (var intLoop = 0; intLoop < itemValue.length; intLoop++) 
		{
			if (num.indexOf(itemValue.charAt(intLoop)) == -1) {

				return false;
			}
		}
		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
}

/************************************************************************
함수명			: isDateTimeType()
작성목적		: 날짜와 시간 형식 체크
Parameter		:
						item				: 검사할 Object (Object)

Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 4. 8.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function isDateTimeType(itemValue)
{

	var num = "0123456789:- ";
	
	try
	{
		

				
		for (var intLoop = 0; intLoop < itemValue.length; intLoop++) 
		{
			if (num.indexOf(itemValue.charAt(intLoop)) == -1) {
				return false;
			}
		}
		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);		
		return false;
	}
}


/************************************************************************
함수명			: isDigitDashType()
작성목적		: 날짜 형식 체크
Parameter		:
						item				: 검사할 Object (Object)

Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 4. 8.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function isDigitDashType(itemValue)
{
	
	var num = "0123456789-";

	try
	{

				
		for (var intLoop = 0; intLoop < itemValue.length; intLoop++) 
		{
			if (num.indexOf(itemValue.charAt(intLoop)) == -1) {
				return false;
			}
		}
		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
}

/************************************************************************
함수명			: numberInterval()
작성목적		: 숫자를 시작값과 종료값 사이에 있는지 체크하는 함수
Parameter		:
						item				: 검사할 Object 
						startValue      : 시작값
						endValue		: 종료값
Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 4. 8.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function  numberInterval(itemValue, startValue, endValue)
{
	
	termValue = parseInt(itemValue, 10);
	
	try
	{
		if (termValue >= parseInt(startValue, 10) && termValue<= parseInt(endValue, 10))
		{
			return true;
		}
		else 
		{
			return false;
		}
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
}


/************************************************************************
함수명			: itemValueEqualLength()
작성목적		: Object의 문자열의 길이를 equalLength와 같은지 비교
Parameter		:
						item				: 검사할 Object 
						itemLength    : 제한할 문자열 길이
						

Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 4. 8.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function itemValueEqualLength(itemValue, itemLength)
{
	try
	{
		if(itemValue == null)
		{
			return true;
		}
		else if (itemValue.length == itemLength)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);		
		return false;
	}
}


/************************************************************************
함수명			: itemValueGreaterLength()
작성목적		: Object의 문자열의 길이를 Paramter로 넘겨받은 자리수보다 큰지를 체크하는 함수
Parameter		:
						item				: 검사할 Object 
						itemLength    : 제한할 Object의 Value 길이(value)

Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 4. 8.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function itemValueGreaterLength(itemValue, itemLength)
{
	try
	{
		if (itemValue.length > itemLength )
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);		
		return false;
	}
}

/************************************************************************
함수명			: itemValueEqualGreaterLength()
작성목적		: Object의 문자열의 길이를 Paramter로 넘겨받은 자리수보다 같거나 큰지를 체크하는 함수
Parameter		:
						item				: 검사할 Object 
						itemLength    : 제한할 Object의 Value 길이(value)

Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 8. 3.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function itemValueEqualGreaterLength(itemValue, itemLength)
{
	try
	{
		if (itemValue.length >=  itemLength )
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);		
		return false;
	}
}

/************************************************************************
함수명			: isComOperator()
작성목적		: 연산자 체크  체크 함수
Parameter		:
						comOperatorValue				: 검사할 Object (Object)

Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 8. 9.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function isComOperator (comOperatorValue)
{

	var comOperator = "<>!=";
	try
	{
				
		for (var intLoop = 0; intLoop < comOperatorValue.length; intLoop++) 
		{
			if (comOperator.indexOf(comOperatorValue.charAt(intLoop)) == -1) {

				return false;
			}
		}
		return true;
	}
	catch (exception)
	{
		return false;
	}
}

/************************************************************************
함수명			: getFullLength()
작성목적		: 한글은 2Byte로 영문, 숫자는 1byte로 계산하는 함수
Parameter		:
						itemValue		: 검사할 Object

Return			:
						문자열 길이 (int)
작 성 자		:	
최초작성일	:   2005. 8. 22.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function getFullLength(itemValue)
{
	try
	{
		var len = itemValue.length; 
		var charCode = 0;
		var i = 0 ;
		 
		if(itemValue == null)
		{
			len = 0;
		}
		 
		 for (i=0; i<itemValue.length; i++) 
		 { 
		 	charCode = itemValue.substr(i,1).charCodeAt(0); 
		 	if (charCode > 127) 
		 	{ len++; } 
		 }  
		
		return len;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);		
		return 0;
	}
}


/************************************************************************
함수명			: getLastday()
작성목적		: 년도와 월로 마지막 날짜 Return gksmsg katn Checking
Parameter		:
						itemYear		: 검사할 년도(value)
						itemMonth		: 검사할 월(value)

Return			:
						마지막 날짜 (string)
작 성 자		:	
최초작성일	:   2005. 4. 8.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function getLastday(itemYear, itemMonth)
{
    var  lastDayOfMonth  = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    
        if (((itemYear %4 == 0) && (itemYear % 100 != 0))||(itemYear % 400 == 0))
            lastDayOfMonth[1] = 29;
            
    var returnDays = lastDayOfMonth[itemMonth-1];
    
    return returnDays;
} 


/************************************************************************
함수명			: vs_NonBlank()
작성목적		: Control Value이 Null 값인지를 체크하는 함수
Parameter	:
						item :  컨트롤 객체(Control Object)
						displayName : Control 명
						flag 				: 체크 옵션(true : 필수, false : 선택)												
Return			:
						유효성 여부(Boolean)
작 성 자		:	 
최초작성일	:
수정작성자	:
수정작성일	: 2005. 03. 22. 
수정내역		: Script 정리(함수명 수정)
*************************************************************************/
function vs_NonBlank(item, displayName, flag) {

	item.value=item.value.Trim();

	var itemValue = item.value;	

	try
	{
		if (flag)
		{
			if (!isNonBlank(itemValue, displayName))	
			{
				if (item.disabled == false) 
				{
					item.focus();
					return false;	
				}
			}
	}
		return true;
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
		return false;
	}
}


function grid_NonBlank(cellobj, columnName, flag)
{
	var objValue = cellobj.getValue();
	try
	{
		if (!isNonBlank(objValue, columnName))	
			{
				cellobj.beginEdit();
				return false;
				//fn_OpenInformation ( strInfoMsg );
			}
		return true;
	}
	catch (exception)
	{
		//fn_OpenInformation ( strInfoMsg );
	}
}

function isNonBlank(objValue, displayName)
{

	var strInfoMsg = "<b>" + displayName + "</b>" + NONBLANK_INFO_MESSAGE;
	try
	{
		if (itemValueEqualLength(objValue, 0))	
		{
			fn_OpenInformation ( strInfoMsg );		
			return false;
		}
		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
}


/************************************************************************
함수명			: vs_ValidNumber()
작성목적		: Control Value이 숫자로만 이루어졌는지를 체크하는 함수
Parameter	:
						item :  컨트롤 객체(Control Object)
						displayName : Control 명 (string)
						flag 				: 체크 옵션(true : 필수, false : 선택)												
Return			:
						유효성 여부(Boolean)
작 성 자		:	 
최초작성일	:
수정작성자	:
수정작성일	: 2005. 03. 22. 
수정내역		: Script 정리(함수명 수정)
*************************************************************************/
function vs_ValidNumber(item, displayName, flag) {
	
	var itemValue = item.value;		
	
	try
	{
		if (flag)	
		{
			if (!isValidNumber(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		if (!flag && itemValue.length >0)
		{
			if (!isValidNumber(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
		return false;
	}
}


function grid_ValidNumber(cellobj, columnName, flag)
{
	var objValue = cellobj.getValue();
	
	try
	{
		if (flag)	
		{
			if (!isValidNumber(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		if (!flag && objValue.length >0)
		{
			if (!isValidNumber(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}		
		
		return true;		
	}
	catch (exception)
	{
		//fn_OpenInformation ( strInfoMsg );
	}
}


function isValidNumber(objValue, displayName)
{

	var strInfoMsg = "<b>" + displayName + "</b>"+VALIDNUMBER_INFO_MESSAGE;
	
	try
	{
		if (itemValueEqualLength(objValue, 0))	
		{
			fn_OpenInformation ( strInfoMsg );		
			return false;
		}	

		if (!isNumberType(objValue))
		{
			fn_OpenInformation ( strInfoMsg );		
			return false;	
		}
		
		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}

}

/************************************************************************
함수명			: vs_ValidInteger()
작성목적		: 컨트롤의 값이 파라미터로 넘긴 minValue과 maxValue사이의 값인지를 체크하는 함수
Parameter	:
						item :  컨트롤 객체(Control Object)
						displayName : Control 명(string)
						minValue : 검사할 최소값 (int)
						maxValue : 검사할 최소값 (int)
						flag 				: 체크 옵션(true : 필수, false : 선택)												
Return			:
						유효성 여부(Boolean)
작 성 자		:	 
최초작성일	:
수정작성자	:
수정작성일	: 2005. 03. 22. 
수정내역		: Script 정리(함수명 수정)
*************************************************************************/
function vs_ValidInteger(item, displayName, minValue, maxValue, flag) 
{
	item.value=item.value.Trim();
	var itemValue = item.value;			

	try
	{

		if (flag)	
		{
			if (!isValidInteger(itemValue, displayName, minValue, maxValue))
			{
				item.focus();
				return false;	
			}
		}
		
		if (!flag && itemValue.length >0)
		{
			if (!isValidInteger(itemValue, displayName, minValue, maxValue))
			{
				item.focus();
				return false;	
			}
		}
		
		return true;
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
		return false;
	}	
}

function grid_ValidInteger(cellobj, columnName, minValue, maxValue, flag)
{
	var objValue = cellobj.getValue();

	try
	{
		if (flag)	
		{
			if (!isValidInteger(objValue, displayName, minValue, maxValue))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		if (!flag && objValue.length >0)
		{
			if (!isValidInteger(objValue, displayName, minValue, maxValue))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		return true;			
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
	}
}

function isValidInteger(objValue, displayName, minValue, maxValue )
{

	var strInfoMsg = "<b>" + displayName + "</b>"+ VALIDINT_INFO_MESSAGE;
	
	var intVal;	
	
	try
	{
		if (!itemValueGreaterLength(objValue, 0))
		{
			fn_OpenInformation ( strInfoMsg );		
			return false;
		}

		if (!isDigitType(objValue))
		{
			fn_OpenInformation ( strInfoMsg );		
			return false;
		}		

		intVal = parseInt(objValue, 10);
		
		if (isNaN(intVal)) {
			fn_OpenInformation ( strInfoMsg );		
			return false;
		}
		
		if (maxValue == 0) {
			if (intVal < minValue) {
				fn_OpenInformation ( strInfoMsg );			
				return false;
			}
		}
		else	 {
			if ((intVal < minValue) || (intVal > maxValue)) 	{
				fn_OpenInformation ( strInfoMsg );			
				return false
			}
		}		
	
		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
}


/************************************************************************
함수명			: vs_ValidQtySize()
작성목적		: 두 컨트롤 객체의 수량을 비교
Parameter	:
						item1 : 비교할 컨트롤 객체(Control Object)
						item2 : 비교할 컨트롤 객체(Control Object)						
						displayName : Control 명(string)
						flag 				: 체크 옵션(true : 필수, false : 선택)												
Return			:
						유효성 여부(Boolean)
작 성 자		:	 
최초작성일	:
수정작성자	:
수정작성일	: 2005. 03. 22. 
수정내역		: Script 정리(함수명 수정)
*************************************************************************/
function vs_ValidQtySize(item1, item2, displayName, flag) 
{

	var intVal1;
	var intVal2;

	intVal1 = item1.value;
	intVal2 = item2.value;
	
	try
	{
		
		if (flag)	
		{

			if (!isValidQtySize(intVal1, intVal2, displayName))
			{
				item1.focus();
				return false;	
			}
		}
		
		if ((!flag && intVal1.length >0) || (!flag && intVal2.length >0))
		{
			if (!isValidQtySize(intVal1, intVal2, displayName))
			{
				item1.focus();
				return false;	
			}
		}
		
		return true;		
		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
		return false;
	}	
}


function isValidQtySize(item1Value, item2Value, displayName)
{

	var strInfoMsg1 = "<b>" + displayName + "</b>"+ VALIDQTYSIZE_FIRSTITEM_INFO_MESSAGE;
	var strInfoMsg2 = "<b>" + displayName + "</b>"+ VALIDQTYSIZE_SECONDITEM_INFO_MESSAGE;
	var strinfoMsg3 = "<b>" + displayName + "</b>" + VALIDQTYSIZE_INFO_MESSAGE
	try
	{

		if (!isDigitType(item1Value))
		{
			fn_OpenInformation ( strInfoMsg1 );		
			return false;
		}		
		
		if (!isDigitType(item2Value))
		{
			fn_OpenInformation ( strInfoMsg2 );		
			return false;
		}		
				
		if (parseInt(item1Value, 10) < 0 || item1Value.legnth ==0 || item2Value == 0 ) {
			fn_OpenInformation(strInfoMsg1);
			return false;
		}

		if (parseInt(item1Value, 10) > parseInt(item2Value), 10) {
			fn_OpenInformation(strInfoMsg2);
			return false;
		}

		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);		
		return false; 
	}
}


/************************************************************************
함수명			: vs_ItemSelected()
작성목적		: 컨트롤 객체에서 선택된 값의 여부를 확인
Parameter	:
						item : 비교할 컨트롤 객체(Control Object)
						displayName : Control 명(string)
						flag 				: 체크 옵션(true : 필수, false : 선택)												
Return			:
						유효성 여부(Boolean)
작 성 자		:	 
최초작성일	:
수정작성자	:
수정작성일	: 2005. 03. 22. 
수정내역		: Script 정리(함수명 수정)
*************************************************************************/
function vs_ItemSelected(item, displayName, flag) {
	var strInfoMsg = "<b>" + displayName + "</b>"+ ITEMSELECT_INFO_MESSAGE;
	try
	{
		if (flag)
		{
			if (item.selectedIndex== -1 ) {
				item.focus();
				fn_OpenInformation(strInfoMsg);
				return false;
			}
		return true;
		}
		
		return true;
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
		return false;
	}	
}
/************************************************************************
함수명			: vs_ValidDateRange()
작성목적		: 두 날짜가 검색 가능한 기간인지를 체크하는 함수
Parameter	:
						itemStart : 검사할 날짜 string)
						itemEnd : 검사할 날짜(string)
						dateRange : 검색기간 (int)
						flag 				: 체크 옵션(true : 필수, false : 선택)												
Return			:
						유효성 여부(Boolean)
작 성 자		:	 
최초작성일	:
수정작성자	:
수정작성일	: 2005. 03. 22. 
수정내역		: Script 정리(함수명 수정)
*************************************************************************/
function vs_ValidDateRange(itemStart, itemEnd, dateRange, flag ) 
{
	var startDT = itemStart.value;
	var endDT = itemEnd.value;

	try
	{
		if (flag)	
		{
			if (!isValidDateRange(startDT, endDT, dateRange))
			{
				itemStart.focus();
				return false;	
			}
		}
		
		if (!flag && startDT.length >0 ||  endDT.length>0)
		{
			if (!isValidDateRange(startDT, endDT, dateRange))
			{
				itemStart.focus();
				return false;	
			}
		}
		
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
		return false;
	}	
}


function isValidDateRange (startObjValue, endObjValue, dateRange)
{

	var strInfoMsg = VALIDDATERANGE_INFO_FOREMESSAGE + dateRange.toString() + VALIDDATERANGE_INFO_REARMESSAGE;

	var startObjYear =  startObjValue.substr(0,4);
	var startObjMonth =  startObjValue.substr(5,2);
	var startObjDay = startObjValue.substr(8,2);
	
	var endObjYear =  endObjValue.substr(0,4);
	var endObjMonth =  endObjValue.substr(5,2);
	var endObjDay = endObjValue.substr(8,2);
	
	try
	{
			if (!isDigitDashType(startObjValue))
			{
				fn_OpenInformation (strInfoMsg );			
				return false;
			}

			if (!isDigitDashType(endObjValue))
			{
				fn_OpenInformation (strInfoMsg );						
				return false;
			}
			
			if (!itemValueEqualLength(startObjValue, 10))
			{
				fn_OpenInformation (strInfoMsg );						
				return false;
			}
			
			if (!itemValueEqualLength(endObjValue, 10))
			{
				fn_OpenInformation (strInfoMsg );						
				return false;
			}
			
			// 월이 1~12월인지 체크 할 것	
			if(!numberInterval(startObjMonth, 1, 12))		
			{
				fn_OpenInformation (strInfoMsg );						
				return false;
			}	
			
			if(!numberInterval(endObjMonth, 1, 12))		
			{
				fn_OpenInformation (strInfoMsg );						
				return false;
			}	

			var intObjDay = parseInt(startObjDay, 10);
			var objGetLastDay =getLastday(startObjYear, startObjMonth);
			var intGetLastDay = parseInt(objGetLastDay, 10);
			
			// 지정한 년도, 월의 LastDay 함수 호출
			if ( intObjDay > intGetLastDay )
			{
				return false;
			}

			var intObjDay = parseInt(endObjDay, 10);		
			var objGetLastDay = parseInt(getLastday(endObjYear, endObjMonth), 10);
			var intGetLastDay = parseInt(objGetLastDay, 10);
			
			if (intObjDay > intGetLastDay )
			{
				fn_OpenInformation (strInfoMsg );						
				return false;
			}

			var startDT = new Date( startObjYear, startObjMonth, startObjDay);
			var endDT = new Date( endObjYear, endObjMonth, endObjDay);

			if (startDT > endDT) {
				fn_OpenInformation (strInfoMsg );						
				return false;
			}
			
			var dateMinus = parseInt((endDT -startDT) / (24*60*60*1000), 10); 

			if ( dateMinus < dateRange  )			
			{
				fn_OpenInformation (strInfoMsg );						
				return false;
			}
			
		return true;		
				
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}

}

/************************************************************************
함수명			: vs_ValidEmail()
작성목적		: Email 체크하기 위한 함수
Parameter	:
						item : 비교할 컨트롤 객체(Control Object)
						displayName : Control 명(string)
						flag 				: 체크 옵션(true : 필수, false : 선택)												
Return			:
						유효성 여부(Boolean)
작 성 자		:	 
최초작성일	:
수정작성자	:
수정작성일	: 2005. 03. 22. 
수정내역		: Script 정리(함수명 수정)
*************************************************************************/
function vs_ValidEmail(item, displayName, flag) 
{

	item.value=item.value.Trim();
	var itemValue = item.value;

	try
	{
		if (flag)	
		{
			if (!isValidEmail(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		if (!flag && itemValue.length >0)
		{
			if (!isValidEmail(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
		return false;
	}
}
	
	
function grid_ValidEmail(cellobj, columnName, flag)
{
	var objValue = cellobj.getValue();

	try
	{
		if (flag)	
		{
			if (!isValidEmail(objValue, columnName))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		if (!flag && objValue.length >0)
		{
			if (!isValidEmail(objValue, columnName))
			{
				cellobj.beginEdit();
				return false;
			}
		}		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
		return false;
	}
}

function isValidEmail(itemValue, displayName)
{
	var strInfoMsg = "<b>" +  displayName + "</b>" + VALIDEMAIL_INFO_MESSAGE;
	
	try
	{
		if (!(/^[\w\.]+@[a-z\.]+$/.test(itemValue))) 
		{
			fn_OpenInformation (strInfoMsg );		
			return false;
		}
		else 
		{
			return true;
		}
	} 
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;	
	}
}


/************************************************************************
함수명			: vs_ValidPhoneNumber()
작성목적		: 전화번호를 체크하기 위한 함수 
Parameter	:
						item : 비교할 컨트롤 객체(Control Object)
						displayName : Control 명(string)
						flag 				: 체크 옵션(true : 필수, false : 선택)												
Return			:
						유효성 여부(Boolean)
작 성 자		:	 
최초작성일	:
수 정 자		:	 
수 정 일		:
수정내역		:
*************************************************************************/
function vs_ValidPhoneNumber(item, displayName, flag) {

	item.value=item.value.Trim();
	var itemValue = item.value;
		
	try
	{
	
		if (flag)	
		{
			if (!isValidPhoneNumber(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		if (!flag && itemValue.length >0)
		{
			if (!isValidPhoneNumber(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		return true;			
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
		return false;
	}
}

function grid_ValidPhoneNumber(cellobj, columnName, flag)
{
	var objValue = cellobj.getValue();


	try
	{
		if (flag)	
		{
			if (!isValidPhoneNumber(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		if (!flag && objValue.length >0)
		{
			if (!isValidPhoneNumber(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}		
		
		return true;
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
		return false;
	}
}

function isValidPhoneNumber(itemValue, displayName)
{

	var strInfoMsg = "<b>" + displayName + "</b>" +VALIDPHONE_INFO_MESSAGE;
		
	try
	{
		if (!(/^\d{2,3}-\d{3,4}-\d{4,4}$/.test(itemValue))) {
			fn_OpenInformation (strInfoMsg );		
			return false;
		}
		else
		{
			return true;
		}
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;		
	}
}


/************************************************************************
함수명			: vs_ValidCardNumber()
작성목적		: 카드를 체크하기 위한 함수
Parameter		:
						item : 비교할 컨트롤 객체(Control Object)
						displayName : Control 명(string)
						flag 				: 체크 옵션(true : 필수, false : 선택)						
Return			:
						유효성 여부(Boolean)
작 성 자		:	 
최초작성일	:
수정작성자	:
수정작성일	: 2005. 03. 22. 
수정내역		: Script 정리(함수명 수정)
*************************************************************************/
function vs_ValidCardNumber(item, displayName, flag) 
{

	item.value=item.value.Trim();
	var itemValue = item.value;

	try
	{
	
		if (flag)	
		{
			if (!isValidCardNumber(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		if (!flag && itemValue.length >0)
		{
			if (!isValidCardNumber(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		return true;			
		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
		return false;
	}

}

function grid_ValidCardNumber(cellobj, columnName, flag)
{
	var objValue = cellobj.getValue();

	try
	{
		if (flag)	
		{
			if (!isValidCardNumber(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		if (!flag && objValue.length >0)
		{
			if (!isValidCardNumber(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}		
		
		return true;		
	}
	catch (exception)
	{
		fn_OpenInformation ( strInfoMsg );
	}
}


function isValidCardNumber(itemValue, displayName)
{
	var strInfoMsg = "<b> " + displayName + "</b>"+ VALIDCARDNUMBER_INFO_MESSAGE;
	
	try
	{
		if (!(/^\d{4,4}-\d{4,4}-\d{4,4}-\d{4,4}$/.test(itemValue)))
		{
			fn_OpenInformation (strInfoMsg );		
			return false;
		}
		else
		{
			return true;
		}
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;		
	}
}

/**********vs_ValidFullDateTime start**********/


/************************************************************************
함수명			: vs_ValidFullDateTime()
작성목적		: 날짜와 시간(초포함) [형식 : yyyy-mm-dd hh:mm:ss] 체크 Checking
Parameter	:
						item				: 검사할 Object (Object)
						displayName	: 출력할 Control 명(string)
						flag 				: 체크 옵션(true : 필수, false : 선택)												

Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 8. 3.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function vs_ValidFullDateTime(item, displayName, flag)
{

	item.value = item.value.Trim();	
	var itemValue = item.value;

	try
	{
		if (flag)	
		{
			if (!isValidFullDateTime(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		if (!flag && itemValue.length >0)
		{
			if (!isValidFullDateTime(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		return true;				
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}
}


function grid_ValidFullDateTime(cellobj, columnName, flag)
{
 
	var objValue = cellobj.getValue();
	var flagValue  = flag.toLowerCase();	
	
	try
	{		
		if (flag)	
		{
			if (!isValidFullDateTime(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		if (!flag && objValue.length >0)
		{
			if (!isValidFullDateTime(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}		
		
		return true;			
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}	
}

function isValidFullDateTime(itemValue, displayName)
{
	var strInfoMsg = "<b>" + displayName + " </b>" + VALIDFULLDATETIME_INFO_MESSAGE;
	
	var itemYear =  itemValue.substr(0,4);
	var itemMonth =  itemValue.substr(5,2);
	var itemDay = itemValue.substr(8,2);
	
	var itemHour = itemValue.substr(11,2)
	var itemMinute =itemValue.substr(14,2)	
	var itemSecond =itemValue.substr(17,2)		
	
	try
	{
		// 문자열 길이 체크 함수 호출		
		if (!itemValueEqualLength(itemValue, 19))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}
				
		if (!isDateTimeType(itemValue))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}
		
		// 월이 1~12월인지 체크 할 것	
		if (!numberInterval(itemMonth, 1, 12))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}	
	
		// 지정한 년도, 월의 LastDay 함수 호출

		var intObjDay = parseInt(itemDay, 10);		
		var objGetLastDay = parseInt(getLastday(itemYear, itemMonth), 10);
		var intGetLastDay = parseInt(objGetLastDay, 10);
	
		if (intObjDay > intGetLastDay )
		{
			fn_OpenInformation (strInfoMsg );						
			return false;
		}		
		
		// 시간 체크 함수 호출
		if(!numberInterval(itemHour, 0, 23))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}		

		// 분 체크 함수 호출
		if(!numberInterval(itemMinute, 0, 59))		
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}			

		// 초 체크 함수 호출
		if(!numberInterval(itemSecond, 0, 59))		
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}			

		return true;
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}	
}


/**********vs_ValidFullDateTime End*************/





/************************************************************************
함수명			: vs_ValidDateTime()
작성목적		: 날짜와 시간 체크 Checking
Parameter	:
						item				: 검사할 Object (Object)
						displayName	: 출력할 Control 명(string)
						flag 				: 체크 옵션(true : 필수, false : 선택)						
Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 4. 2.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function vs_ValidDateTime(item, displayName, flag)
{

	item.value = item.value.Trim();	
	var itemValue = item.value;

	try
	{
		if (flag)	
		{
			if (!isValidDateTime(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		if (!flag && itemValue.length >0)
		{
			if (!isValidDateTime(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		return true;				
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}
}


function grid_ValidDateTime(cellobj, columnName, flag)
{
 
	var objValue = cellobj.getValue();
	var flagValue  = flag.toLowerCase();	
	
	try
	{		
		if (flag)	
		{
			if (!isValidDateTime(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		if (!flag && objValue.length >0)
		{
			if (!isValidDateTime(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}		
		
		return true;			
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}	
}

function isValidDateTime(itemValue, displayName)
{
	var strInfoMsg = "<b>" + displayName + " </b>" + VALIDDATETIME_INFO_MESSAGE;
	
	var itemYear =  itemValue.substr(0,4);
	var itemMonth =  itemValue.substr(5,2);
	var itemDay = itemValue.substr(8,2);
	
	var itemHour = itemValue.substr(11,2)
	var itemMinute =itemValue.substr(14,2)	
	
	try
	{
		// 문자열 길이 체크 함수 호출		
		if (!itemValueEqualLength(itemValue, 16))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}
				
		if (!isDateTimeType(itemValue))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}
		
		// 월이 1~12월인지 체크 할 것	
		if (!numberInterval(itemMonth, 1, 12))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}	
	
		// 지정한 년도, 월의 LastDay 함수 호출

		var intObjDay = parseInt(itemDay, 10);		
		var objGetLastDay = parseInt(getLastday(itemYear, itemMonth), 10);
		var intGetLastDay = parseInt(objGetLastDay, 10);
	
		if (intObjDay > intGetLastDay )
		{
			fn_OpenInformation (strInfoMsg );						
			return false;
		}		
		
		// 시간 체크 함수 호출
		if(!numberInterval(itemHour, 0, 23))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}		

		// 분 체크 함수 호출
		if(!numberInterval(itemMinute, 0, 59))		
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}			

		return true;
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}	
}


/************************************************************************
함수명			: vs_ValidDate()
작성목적		: 날짜 Checking
Parameter	:
						item				: 검사할 Object (Object)
						displayName	: 출력할 Control 명(string)
						flag 				: 체크 옵션(true : 필수, false : 선택)						
Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 4. 2.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function vs_ValidDate(item, displayName, flag)
{

	item.value = item.value.Trim();	
	var itemValue = item.value;

	try
	{
		if (flag)	
		{
			if (!isValidDate(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		if (!flag && itemValue.length >0)
		{
			if (!isValidDate(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}
}


function grid_ValidDate(cellobj, columnName, flag)
{
 
	var objValue = cellobj.getValue();
	
	try
	{		
		if (flag)	
		{
			if (!isValidDate(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		if (!flag && objValue.length >0)
		{
			if (!isValidDate(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}		
		
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}	
}

function isValidDate(itemValue, displayName)
{
 	var strInfoMsg = "<B>" + displayName + "</B>" + VALIDDATE_INFO_MESSAGE;
	
	var itemYear =  itemValue.substr(0,4);
	var itemMonth =  itemValue.substr(5,2);
	var itemDay = itemValue.substr(8,2);

	try
	{
		if (!isDigitDashType(itemValue))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}
			
		// 문자열 길이 체크 함수 호출
		if (!itemValueEqualLength(itemValue, 10))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}
		
		// 월이 1~12월인지 체크 할 것	
		if(!numberInterval(itemMonth, 1, 12))		
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}	

	// 지정한 년도, 월의 LastDay 함수 호출

		var intObjDay = parseInt(itemDay, 10);		
		var objGetLastDay = parseInt(getLastday(itemYear, itemMonth), 10);
		var intGetLastDay = parseInt(objGetLastDay, 10);
	
		if (intObjDay > intGetLastDay )
		{
			fn_OpenInformation (strInfoMsg );						
			return false;
		}

		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
 }
 
 /************************************************************************
함수명			: vs_ValidYearMonth()
작성목적		: 년도, 월 Checking
Parameter	:
						item				: 검사할 Object (Object)
						displayName	: 출력할 Control 명(string)
						flag 				: 체크 옵션(true : 필수, false : 선택)						
Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 7. 28.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function vs_ValidYearMonth(item, displayName, flag)
{

	item.value = item.value.Trim();	
	var itemValue = item.value;

	try
	{
		if (flag)	
		{
			if (!isValidYearMonth(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		if (!flag && itemValue.length >0)
		{
			if (!isValidYearMonth(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}
}


function grid_ValidYearMonth(cellobj, columnName, flag)
{
 
	var objValue = cellobj.getValue();
	
	try
	{		
		if (flag)	
		{
			if (!isValidYearMonth(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		if (!flag && objValue.length >0)
		{
			if (!isValidYearMonth(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}		
		
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}	
}

function isValidYearMonth(itemValue, displayName)
{
 	var strInfoMsg = "<B>" + displayName + "</B>" + VALIDYEARMONTH_INFO_MESSAGE;
	
	var itemYear =  itemValue.substr(0,4);
	var itemMonth =  itemValue.substr(5,2);

	try
	{
		if (!isDigitDashType(itemValue))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}
			
		// 문자열 길이 체크 함수 호출
		if (!itemValueEqualLength(itemValue, 7))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}
		
		// 월이 1~12월인지 체크 할 것	
		if(!numberInterval(itemMonth, 1, 12))		
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}	

		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
 }
	
	
 /**********vs_ValidYear start**********/
 
 
 /************************************************************************
함수명			: vs_ValidYear()
작성목적		: 년도 Checking
Parameter	:
						item				: 검사할 Object (Object)
						displayName	: 출력할 Control 명(string)
						flag 				: 체크 옵션(true : 필수, false : 선택)						
Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 8. 3.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function vs_ValidYear(item, displayName, flag)
{

	item.value = item.value.Trim();	
	var itemValue = item.value;

	try
	{
		if (flag)	
		{
			if (!isValidYear(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		if (!flag && itemValue.length >0)
		{
			if (!isValidYear(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}
}


function grid_ValidYear(cellobj, columnName, flag)
{
 
	var objValue = cellobj.getValue();
	
	try
	{		
		if (flag)	
		{
			if (!isValidYear(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		if (!flag && objValue.length >0)
		{
			if (!isValidYear(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}		
		
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}	
}

function isValidYear(itemValue, displayName)
{
 	var strInfoMsg = "<B>" + displayName + "</B>" + VALIDYEAR_INFO_MESSAGE;
	
	var itemYear =  itemValue.substr(0,4);

	try
	{
		if (!isDigitType(itemValue))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}
			
		// 문자열 길이 체크 함수 호출
		if (!itemValueEqualLength(itemValue, 4))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}

		return true;
	}
	catch (exception)
	{
		return false;
	}
 }
 
 
  /**********vs_ValidYear End**********/	


/************************************************************************
함수명			: vs_ValidJuminNumber2Field()
작성목적		: 주민등록번호 Checking
Parameter	:
						item					: 검사할 주민등록번호 생년월일 필드
						item					: 검사할 주민등록번호 일련번호 필드			
						displayName	: 출력할 Control 명(string)
						flag					: 필수(true), 선택(false) 

Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 4. 2.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function vs_ValidJuminNumber2Field(item1, item2, displayName, flag)
{

	item1.value = item1.value.Trim();	
	var itemValue1 = item1.value;
	
	item2.value = item2.value.Trim();	
	var itemValue2 = item2.value;
	
	var itemValue = itemValue1 + "-" + itemValue2;

	var re = /-/g;     
	var itemValueReplace = itemValue.replace(re,"");	
	
	try
	{
		
		if (flag)	
		{
			if (!isValidJuminNumber(itemValue, displayName))
			{
				item1.focus();
				return false;	
			}
		}
		
		if (!flag && itemValueReplace.length >0)
		{
			if (!isValidJuminNumber(itemValue, displayName))
			{
				item1.focus();
				return false;	
			}
		}
		
		return true;		
		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}
}





/************************************************************************
함수명			: vs_ValidJuminNumber()
작성목적		: 주민등록번호 Checking
Parameter	:
						item				: 검사할 주민등록번호Object (string)
						displayName	: 출력할 Control 명(string)
						flag 				: 체크 옵션(true : 필수, false : 선택)												

Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 4. 2.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function vs_ValidJuminNumber(item, displayName, flag)
{

	item.value = item.value.Trim();	
	var itemValue = item.value;

	try
	{
		
		if (flag)	
		{
			if (!isValidJuminNumber(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		if (!flag && itemValue.length >0)
		{
			if (!isValidJuminNumber(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		return true;		
		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}
}


function grid_ValidJuminNumber(cellobj, columnName, flag)
{
 	var objValue = cellobj.getValue(); 
	try
	{		
		if (flag)	
		{
			if (!isValidJuminNumber(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		if (!flag && objValue.length >0)
		{
			if (!isValidJuminNumber(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}		
		
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}	
}


function isValidJuminNumber(itemValue, displayName) {

	var strInfoMsg = "<b>" + displayName + " </b>" + VALIDJUMINNUMBER_INFO_MESSAGE;

	var jumin1 = itemValue.substr(0,6)
	var jumin2 = itemValue.substr(7,7)	
	
	try
	{
		// 문자열 길이 체크 함수 호출	
		if (!itemValueEqualLength(itemValue, 14))
		{ 
			fn_OpenInformation(strInfoMsg);
			return false;
		}
		
		// 형식 체크
		if (!isDigitDashType(itemValue))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}		
			

		//주민등록번호 Checking
			var check = false;
			var total = 0;
			var temp = new Array(13);

			for(i=1; i<=6; i++)
			{
				temp[i] = jumin1.charAt(i-1);
			}
			for(i=7; i<=13; i++)
			{
				temp[i] = jumin2.charAt(i-7);
			}


			for(i=1; i<=12; i++)
			{
				k = i + 1;
				if(k >= 10)
					k = k % 10 + 2;
				total = total + temp[i] * k;
			}
			
			var mm = temp[3] + temp[4];
			var dd = temp[5] + temp[6];

			var totalmod = total % 11;
			var chd = 11 - totalmod;
			
			//로직 수정
			if (chd > 9 )
				 chd = chd - 10;
			
			if(chd == temp[13] && mm < 13 && dd < 32 && (temp[7]==1 || temp[7]==2))
				check=true;
				
			if (check == false) {
				fn_OpenInformation(strInfoMsg);
				return false;
			}
	
		return true;
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
		return false;
	}
}

/************************************************************************
함수명			: vs_ValidCompanyNumber3Field()
작성목적		: 사업자등록번호 Checking
Parameter	:
						item					: 검사할 사업자등록번호 필드1
						item					: 검사할 사업자등록번호 필드2			
						item					: 검사할 사업자등록번호 필드3	
						displayName	: 출력할 Control 명(string)
						flag					: 필수(true), 선택(false) 

Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2006. 1. 10.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function vs_ValidCompanyNumber3Field(item1, item2, item3, displayName, flag)
{
	item1.value = item1.value.Trim();	
	var itemValue1 = item1.value;
	
	item2.value = item2.value.Trim();	
	var itemValue2 = item2.value;

	item3.value = item3.value.Trim();	
	var itemValue3 = item3.value;

	var itemValue = itemValue1 + "-" + itemValue2 + "-" + itemValue3;

	var re = /-/g;     
	var itemValueReplace = itemValue.replace(re,"");	
	
	try
	{
		
		if (flag)	
		{
			if (!isValidBusinessNumber(itemValue, displayName))
			{
				item1.focus();
				return false;	
			}
		}
		
		if (!flag && itemValueReplace.length >0)
		{
			if (!isValidBusinessNumber(itemValue, displayName))
			{
				item1.focus();
				return false;	
			}
		}
		
		return true;		
		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}
}

/************************************************************************
함수명			: vs_ValidBusinessNumber()
작성목적		: 사업자등록번호 Checking
Parameter	:
						item				: 검사할 사업자등록번호 Object (string)
						displayName	: 출력할 Control 명(string)
						flag 				: 체크 옵션(true : 필수, false : 선택)						
Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 5. 20.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function vs_ValidBusinessNumber(item, displayName, flag)
{

	item.value = item.value.Trim();	
	var itemValue = item.value;

	try
	{
		
		if (flag)	
		{
			if (!isValidBusinessNumber(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		if (!flag && itemValue.length >0)
		{
			if (!isValidBusinessNumber(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		return true;		
		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}
}


function grid_ValidBusinessNumber(cellobj, columnName, flag)
{
 
	var objValue = cellobj.getValue(); 
	//var gs=igtbl_getGridById(gn)
	try
	{		
		if (flag)	
		{
			if (!isValidBusinessNumber(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		if (!flag && objValue.length >0)
		{
			if (!isValidBusinessNumber(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}		
		
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}	
}


function isValidBusinessNumber(itemValue, displayName) {

	var strInfoMsg = "<b>" + displayName + " </b>" + VALIDBUSINESSNUMBER_INFO_MESSAGE;
	var sum = 0; 
    var getlist =new Array(10); 
    var chkvalue =new Array("1","3","7","1","3","7","1","3","5"); 	
	
	try
	{
		// 문자열 길이 체크 함수 호출	
		if (!itemValueEqualLength(itemValue, 12))
		{ 
			fn_OpenInformation(strInfoMsg);
			return false;
		}
		
		// 형식 체크
		if (!isDigitDashType(itemValue))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}		
		
		var re = /-/g;     
		var itemValueReplace = itemValue.replace(re,"");
	    
		for(var i=0; i<10; i++) 
		{ 
			getlist[i] = itemValueReplace.substring(i, i+1); 
		} 
		
		for(var i=0; i<9; i++) 
		{
			sum += getlist[i]*chkvalue[i]; 
		 } 
		 
		sum = sum + parseInt((getlist[8]*5)/10 , 10); 
		
		sidliy = sum % 10; 
		sidchk = 0; 
		
		if(sidliy != 0) 
		{
			 sidchk = 10 - sidliy; 
		} 
		else 
		{
			sidchk = 0; 
		} 
		
		if(sidchk != getlist[9]) 
		{
			fn_OpenInformation(strInfoMsg);		
			return false; 
		 } 

		return true;
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
		return false;
	}
}


/************************************************************************
함수명			: vs_ValidMoney()
작성목적		: 금액 Checking
Parameter	:
						item				: 검사할 Object (Object)
						displayName	: 출력할 Control 명(string)
						decimalPlace  : 소수점 이하 자리수(int)
						flag 				: 체크 옵션(true : 필수, false : 선택)						
Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 4. 2.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function vs_ValidMoney(item, displayName, decimalPlace, flag)
{
	
	item.value = item.value.Trim();	
	var itemValue = item.value;
	
	try
	{
		if (flag)	
		{
			if (!isValidMoney(itemValue, displayName, decimalPlace))
			{
				item.focus();
				return false;	
			}
		}
		
		if (!flag && itemValue.length >0)
		{
			if (!isValidMoney(itemValue, displayName, decimalPlace))
			{
				item.focus();
				return false;	
			}
		}
		
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}
}


function grid_ValidMoney(cellobj, columnName, decimalPlace, flag )
{
	var objValue = cellobj.getValue();
	try
	{		
		if (flag)	
		{
			if (!isValidMoney(objValue, displayName, decimalPlace))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		if (!flag && objValue.length >0)
		{
			if (!isValidMoney(objValue, displayName, decimalPlace))
			{
				cellobj.beginEdit();
				return false;
			}
		}		
		
		return true;
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}	

}

function isValidMoney(itemValue, displayName, decimalPlace )
{
	var strInfoMsg = "<b>"+ displayName + "</b>" + VALIDMONEY_INFO_MESSAGE;

	try
	{
		// 입력한 숫자의 자리수 체크
		if (!itemValueEqualGreaterLength(itemValue, 1))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}
		
		if ( parseInt(decimalPlace, 10) > 0 )
		{
			// 숫자와 소숫점 체크 함수 호출
			if (!isNumberCommaType(itemValue))
			{
				fn_OpenInformation(strInfoMsg);
				return false;
			}	
			
			// 소수점 이하 검사
			if (!checkDecimalplace(itemValue, decimalPlace))
			{
				fn_OpenInformation(strInfoMsg);
				return false;
			}
		}
		
		if ( parseInt(decimalPlace, 10) == 0 )
		{
			
			if (!isDigitCommaType(itemValue))
			{
				fn_OpenInformation(strInfoMsg);
				return false;
			}	
		}
		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;		
	}
}


/************************************************************************
함수명			: vs_ValidSchoolTerm()
작성목적		: 학기 Checking
Parameter	:
						item				: 검사할 Object (Object)
						displayName	: 출력할 Control 명(string)
						flag 				: 체크 옵션(true : 필수, false : 선택)						
Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 4. 2.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function vs_ValidSchoolTerm(item, displayName, flag)
{

	item.value = item.value.Trim();	
	var itemValue = item.value;

	try
	{
		if (flag)	
		{
			if (!isValidSchoolTerm(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		if (!flag && itemValue.length >0)
		{
			if (!isValidSchoolTerm(itemValue, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		return true;		
		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}
}


function grid_ValidSchoolTerm(cellobj, columnName, flag)
{
 
	var objValue = cellobj.getValue();
	
	try
	{		
		if (flag)	
		{
			if (!isValidSchoolTerm(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		if (!flag && objValue.length >0)
		{
			if (!isValidSchoolTerm(objValue, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}		
		
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}	
}

function isValidSchoolTerm(itemValue, displayName)
{
	
	var strInfoMsg = "<b>" + displayName + "</b>" + VALIDSCHOOLTERM_INFO_MESSAGE;
	
	var itemYear =  itemValue.substr(0,4);
	var itemSchoolTerm = itemValue.substr(5,1);

	try
	{
	
		// 형식 체크
		if (!isDigitDashType(itemValue))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}
		
		// 문자열 길이 체크 함수 호출
		if (!itemValueEqualLength(itemValue, 6))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}
		
		// 학기 체크 (시작학기, 종료학기)
		if(!numberInterval(itemSchoolTerm, 1, 2))		
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}	
		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
}


/************************************************************************
함수명			: vs_ValidCheckBoxList()
작성목적		: CheckBoxList Checking
Parameter	:
						attrValue					: 문자열 : Control의 문자열 예 : "chkCode"
						displayName			: 출력할 Control 명(string)
						flag							: 체크 유무 (true --> 필수 , false --> 선택)
Return			:
						유효성 여부(Boolean)
사용 예        : 	if (!validation.validCheckBoxList("chkCode", "체크박스리스트", true)) return false;						
작 성 자		:	
최초작성일	:   2005. 7. 18.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function vs_ValidCheckBoxList(attrValue, displayName, flag)
{
	
	try
	{
		if (flag)	
		{
			if (!isValidCheckBoxList(attrValue, displayName))
			{

				fn_SetFocusCheckBoxList(attrValue);		
				return false;
			}
		}
		return true;		
		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}
}


function isValidCheckBoxList(attrValue, displayName)
{
	var strInfoMsg = "<b>" + displayName + "</b>" + VALIDCHECKBOXLIST_INFO_MESSAGE;
	
	var oItem;
	var firstItem;
	var iCnt = 0;

	try
	{
		for ( var i = 0 ; i < document.all.length ; i++ )
		{
			oItem = document.all[i];
			if ( oItem.tagName.toUpperCase() == "INPUT")
				if ( oItem.getAttribute("type").toUpperCase() == "CHECKBOX" )
					if (oItem.getAttribute("id") != null )
					{
						var  iFindStr = oItem.getAttribute("id").substr(0, attrValue.length)
						if ( iFindStr == attrValue)
						{
							
							if ( oItem.checked == true )
								iCnt++;
							}
						}
		}
		
		if (iCnt == 0 )
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}	
	
		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
}

/************************************************************************
함수명			: fn_SetFocusCheckBoxList()
작성목적		: ASP.NET의 CheckBoxList의 첫번째 항목의 포커스 이동
Parameter	:
Return			:
						Object focus
작 성 자		:	
최초작성일	:   2005. 7. 18.

수정작성자	: 
수정작성일	: 
수정내역		: 

*************************************************************************/
function fn_SetFocusCheckBoxList(attrValue)
{
	
	var oItem;
	var focusItem;
	var iCnt = 0;
	var temp = 0;
		
		for ( var i = 0 ; i < document.all.length ; i++ )
		{
			oItem = document.all[i];
			if ( oItem.tagName.toUpperCase() == "INPUT")
				if ( oItem.getAttribute("type").toUpperCase() == "CHECKBOX" )
					if (oItem.getAttribute("id") != null )
					{
						var  iFindStr = oItem.getAttribute("id").substr(0, attrValue.length)
						if ( iFindStr == attrValue)
						{
							
							if (temp == 0 ) focusItem = oItem;				
							temp	 = temp + 1;								

						}
					
			}
	}
		focusItem.focus();	
}


/************************************************************************
함수명			: vs_ValidRadioButtonList()
작성목적		: RadioButtonList Checking
Parameter		:
						attrValue					: 문자열 : Control의 문자열 예 : "rdoCode"
						displayName	: 출력할 Control 명(string)
						flag					: 체크 유무 (true --> 필수 , false --> 선택)
사용 예        : if (!validation.validRadionButtonList("rdoCode", "라디오 버튼", true)) return false;	
Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 7. 18.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function vs_ValidRadioButtonList(attrValue, displayName, flag)
{
	
	try
	{
		if (flag)	
		{
			if (!isValidRadioButtonList(attrValue, displayName))
			{

				fn_SetFocusRadionButtonList(attrValue);		
				return false;
			}
		}
		return true;		
		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}
}


function isValidRadioButtonList(attrValue, displayName)
{
	
	var strInfoMsg = "<b>" + displayName + "</b>" + VALIDRADIOBUTTONLIST_INFO_MESSAGE;
	
	var oItem;
	var firstItem;
	var iCnt = 0;
		
	try
	{
		for ( var i = 0 ; i < document.all.length ; i++ )
		{
			oItem = document.all[i];
			if ( oItem.tagName.toUpperCase() == "INPUT")
				if ( oItem.getAttribute("type").toUpperCase() == "RADIO" )
					if (oItem.getAttribute("id") != null )
					{
						var  iFindStr = oItem.getAttribute("id").substr(0, attrValue.length)
						if ( iFindStr == attrValue)
						{
							
							if ( oItem.checked == true )
								iCnt++;
							}
						}
		}
		
		if (iCnt == 0 )
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}	
	
		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
}

/************************************************************************
함수명			: fn_SetFocusCheckBoxList()
작성목적		: ASP.NET의 CheckBoxList의 첫번째 항목의 포커스 이동
Parameter		:
						attrValue					: 문자열 : Control의 문자열 예 : "chkCode"
Return			:
						Object focus
작 성 자		:	
최초작성일	:   2005. 7. 18.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function fn_SetFocusRadionButtonList(attrValue)
{
	
	var oItem;
	var focusItem;
	var iCnt = 0;
	var temp = 0;
	
		
		for ( var i = 0 ; i < document.all.length ; i++ )
		{
			oItem = document.all[i];
			if ( oItem.tagName.toUpperCase() == "INPUT")
				if ( oItem.getAttribute("type").toUpperCase() == "RADIO" )
					if (oItem.getAttribute("id") != null )
					{
						var  iFindStr = oItem.getAttribute("id").substr(0, attrValue.length)
						if ( iFindStr == attrValue)
						{
							
							if (temp == 0 ) focusItem = oItem;				
							temp	 = temp + 1;								
						}
					
			}
	}
		focusItem.focus();	
}


/************************************************************************
함수명			: vs_ValidDropDownList()
작성목적		: DropDownList Checking
Parameter	:
						item					: 컨트롤 명
						displayName	: 출력할 Control 명(string)
						flag					: 체크 유무 (true --> 필수 , false --> 선택)
사용 예        : if (!validation.validDropDownList(document.all.ddlFamily, "직업 코드",  true)) return false;			
Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 7. 18.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function vs_ValidDropDownList(item, displayName, flag)
{
	try
	{
		if (flag)	
		{
			if (!isValidDropDownList(item, displayName))
			{
				item.focus();				
				return false;
			}
		}
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}
}
			 
function isValidDropDownList(item, displayName)
{
	
	var strInfoMsg = "<b>" + displayName + "</b>" + VALIDDROPDOWNLIST_INFO_MESSAGE;
	
	try
	{
		if(item.selectedIndex == 0)
		{
			fn_OpenInformation(strInfoMsg);			

			return false; 
		}
		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
}

/************************************************************************
함수명			: vs_ValidListBox()
작성목적		: ListBox Checking
Parameter	:
						item					: 컨트롤 명
						displayName	: 출력할 Control 명(string)
						flag					: 체크 유무 (true --> 필수 , false --> 선택)
사용 예        : if (!validation.validListBox(document.all.ddlFamily, "직업 코드",  true)) return false;			
Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 12. 12.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function vs_ValidListBox(item, displayName, flag)
{
	item.value=item.value.Trim();

	var itemValue = item.value;	

	try
	{
		if (flag)	
		{
			if (!isValidListBox(itemValue, displayName))
			{
				if (item.disabled == false) 
				{
					item.focus();
					return false;	
				}
			}
		}
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
		return false;
	}
}
			 
function isValidListBox(objValue, displayName)
{
	
	var strInfoMsg = "<b>" + displayName + "</b>" + VALIDLISTBOX_INFO_MESSAGE;
	
	try
	{
		if (itemValueEqualLength(objValue, 0))	
		{
			fn_OpenInformation ( strInfoMsg );		
			return false;
		}
		return true;
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
}


/************************************************************************
함수명			: vs_ValidStringLength()
작성목적		: 학기 Checking
Parameter	:
						item				: 검사할 Object (Object)
						itemLength	: 입력할 문자열 길이(int)
						displayName	: 출력할 Control 명(string)
						flag 				: 체크 옵션(true : 필수, false : 선택)
Return			:
						유효성 여부(Boolean)
작 성 자			:	
최초작성일		:   2005. 8. 3.
수정작성자		: 
수정작성일		: 
수정내역		: 
*************************************************************************/
function vs_ValidStringLength(item, itemLength,  displayName, flag)
{

	item.value = item.value.Trim();	
	var itemValue = item.value;

	try
	{
		if (flag)	
		{
			if (!isValidStringLength(itemValue, itemLength, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		if (!flag && itemValue.length >0)
		{
			if (!isValidStringLength(itemValue, itemLength, displayName))
			{
				item.focus();
				return false;	
			}
		}
		
		return true;		
		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}
}


function grid_ValidStringLength(cellobj, objLength, columnName, flag)
{
 
	var objValue = cellobj.getValue();
	
	try
	{		
		if (flag)	
		{
			if (!isValidStringLength(objValue, objLength, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		if (!flag && objValue.length >0)
		{
			if (!isValidStringLength(objValue, objLength, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}		
		
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}	
}

function isValidStringLength(itemValue, itemLength, displayName)
{
	
	var strInfoMsg = "<b>" + displayName + "</b>" + VALIDSTRINGLENGTH_INFO_START_MESSAGE + " <b> " + itemLength +  "</b>" + VALIDSTRINGLENGTH_INFO_END_MESSAGE;
	
	try
	{
		// 문자열 길이 체크 함수 호출
		if (!itemValueEqualGreaterLength(itemValue, itemLength))
		{
			fn_OpenInformation(strInfoMsg);
			return false;
		}

		return true;
	}
	catch (exception)
	{
		return false;
	}
}

/************************************************************************
함수명			: vs_ValidDynamicStringLength()
작성목적		: 연산자에 대한 다양한 문자열 비교
Parameter	:
						item							: 검사할 Object (Object)
						itemLength				: 입력할 문자열 길이(int)
						comOperator			: 비교 연산자(<,>,>=,<=, ==, !=)
						displayName			: 출력할 Control 명(string)
						flag 							: 체크 옵션(true : 필수, false : 선택)
Return			:
						유효성 여부(Boolean)
작 성 자			:	
최초작성일		:   2005. 8. 8.
수정작성자		: 
수정작성일		: 
수정내역		: 
*************************************************************************/
function vs_ValidDynamicStringLength(item, itemLength,  comOperator, displayName, flag)
{

	item.value = item.value.Trim();	
	var itemValue = item.value;

	try
	{
		if (flag)	
		{
			if (!isValidDynamicStringLength(itemValue, itemLength, comOperator, displayName))
			{
				item.focus();
				return false;	
			}
		}

		if (!flag && itemValue.length >0)
		{
			if (!isValidDynamicStringLength(itemValue, itemLength, comOperator, displayName))
			{
				item.focus();
				return false;	
			}
		}
				return true;	
			
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}
}


function grid_ValidDynamicStringLength(item, itemLength,  comOperator, displayName, flag)
{
 
	var objValue = cellobj.getValue();
	
	try
	{		
		if (flag)	
		{
			if (!isValidDynamicStringLength(itemValue, itemLength, comOperator, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		if (!flag && objValue.length >0)
		{
			if (!isValidDynamicStringLength(itemValue, itemLength, comOperator, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}		
		
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}	
}

function isValidDynamicStringLength(itemValue, itemLength, comOperator, displayName)
{
	
	var initValue = false; 
	var strInfoMsg = VALIDDYNAMICSTRINGLENGTH_INFO_START_MESSAGE + "<b>" + " " + displayName + " " +   comOperator  + " " +  itemLength +  "</b>" + VALIDDYNAMICSTRINGLENGTH_INFO_END_MESSAGE;
	
	try
	{
	
			// 연산자 비교
			if (!isComOperator(comOperator))
			{
				fn_OpenInformation(strInfoMsg);
				return false;
			}			
			
			//문자열에 따른 비교
			if ( comOperator == ">")
			{
				initValue = true; 				
				if (! (itemValue.length > itemLength))
				{
					fn_OpenInformation(strInfoMsg);
					return false;					
				}
			}

			if ( comOperator == "<")
			{
				initValue = true; 				
				if (! (itemValue.length < itemLength))
				{
					fn_OpenInformation(strInfoMsg);
					return false;					
				}
			}
			
			if ( comOperator == ">=")
			{
				initValue = true; 				
				if (! (itemValue.length >= itemLength))
				{
					fn_OpenInformation(strInfoMsg);
					return false;					
				}
			}
			
			if ( comOperator == "<=")
			{
				initValue = true; 				
				if (! (itemValue.length <= itemLength))
				{
					fn_OpenInformation(strInfoMsg);
					return false;					
				}
			}			

			if ( comOperator == "==")
			{
				initValue = true; 				
				if (! (itemValue.length == itemLength))
				{
					fn_OpenInformation(strInfoMsg);
					return false;					
				}
			}			
			
			if ( comOperator == "!=")
			{
				initValue = true; 				
				if (! (itemValue.length != itemLength))
				{
					fn_OpenInformation(strInfoMsg);
					return false;					
				}
			}	
			
			if (initValue)
				return true;
			else 
			{
				fn_OpenInformation(VALIDDYNAMICSTRINGLENGTH_INFO_MESSAGE);					
				return false; 
			}
	}
	catch (exception)
	{
		return false;
	}
}


/************************************************************************
함수명			: vs_validFullDynamicStringLength()
작성목적		: 연산자에 대한 다양한 문자열(한글 2바이트 계산) 비교
Parameter	:
						item							: 검사할 Object (Object)
						itemLength				: 입력할 문자열 길이(int)
						comOperator			: 비교 연산자(<,>,>=,<=, ==, !=)
						displayName			: 출력할 Control 명(string)
						flag 							: 체크 옵션(true : 필수, false : 선택)
Return			:
						유효성 여부(Boolean)
작 성 자		:	
최초작성일	:   2005. 8. 22.
수정작성자	: 
수정작성일	: 
수정내역		: 
*************************************************************************/
function vs_validFullDynamicStringLength(item, itemLength,  comOperator, displayName, flag)
{
	item.value = item.value.Trim();	
	var itemValue = item.value;

	try
	{
		if (flag)	
		{
			if (!isValidFullDynamicStringLength(itemValue, itemLength, comOperator, displayName))
			{
				item.focus();
				return false;	
			}
		}

		if (!flag && itemValue.length >0)
		{
			if (!isValidFullDynamicStringLength(itemValue, itemLength, comOperator, displayName))
			{
				item.focus();
				return false;	
			}
		}
				return true;	
			
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}
}

function grid_ValidFullDynamicStringLength(item, itemLength,  comOperator, displayName, flag)
{
 
	var objValue = cellobj.getValue();
	
	try
	{		
		if (flag)	
		{
			if (!isValidFullDynamicStringLength(itemValue, itemLength, comOperator, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}
		
		if (!flag && objValue.length >0)
		{
			if (!isValidFullDynamicStringLength(itemValue, itemLength, comOperator, displayName))
			{
				cellobj.beginEdit();
				return false;
			}
		}		
		
		return true;		
	}
	catch (exception)
	{
		fn_OpenErrorMessage(exception.description);	
	}	
}

function isValidFullDynamicStringLength(itemValue, itemLength, comOperator, displayName)
{
	
	var initValue = false; 
	var strInfoMsg = VALIDFULLDYNAMICSTRINGLENGTH_INFO_START_MESSAGE + "<b>" + " " + displayName + " " +   comOperator  + " " +  itemLength +  "</b>" + VALIDFULLDYNAMICSTRINGLENGTH_INFO_END_MESSAGE;
	var ifullValueLength = 0;
	
	try
	{
	
			// 연산자 비교
			if (!isComOperator(comOperator))
			{
				fn_OpenInformation(strInfoMsg);
				return false;
			}			
			
			ifullValueLength = getFullLength(itemValue);
			
			
			//문자열에 따른 비교
			if ( comOperator == ">")
			{
				initValue = true; 				
				if (! (ifullValueLength > itemLength))
				{
					fn_OpenInformation(strInfoMsg);
					return false;					
				}
			}

			if ( comOperator == "<")
			{
				initValue = true; 				
				if (! (ifullValueLength < itemLength))
				{
					fn_OpenInformation(strInfoMsg);
					return false;					
				}
			}
			
			if ( comOperator == ">=")
			{
				initValue = true; 				
				if (! (ifullValueLength >= itemLength))
				{
					fn_OpenInformation(strInfoMsg);
					return false;					
				}
			}
			
			if ( comOperator == "<=")
			{
				initValue = true; 				
				if (! (ifullValueLength <= itemLength))
				{
					fn_OpenInformation(strInfoMsg);
					return false;					
				}
			}			

			if ( comOperator == "==")
			{
				initValue = true; 				
				if (! (ifullValueLength== itemLength))
				{
					fn_OpenInformation(strInfoMsg);
					return false;					
				}
			}			
			
			if ( comOperator == "!=")
			{
				initValue = true; 				
				if (! (ifullValueLength != itemLength))
				{
					fn_OpenInformation(strInfoMsg);
					return false;					
				}
			}	
			
			if (initValue)
				return true;
			else 
			{
				fn_OpenInformation(VALIDDYNAMICSTRINGLENGTH_INFO_MESSAGE);					
				return false; 
			}
	}
	catch (exception)
	{
		return false;
	}
}


/************************************************************************
함수명			: ValidSetup()
작성목적		: validation 객체를 만들기 위한 Constructor
Parameter	:
Return			:
작 성 자		:	 
최초작성일	:
수정작성자	:
수정작성일	: 2005. 03. 22. 
수정내역		: Script 정리(함수명 수정)
*************************************************************************/
// build the validation object
function ValidSetup() {
	
	this.nonBlank = vs_NonBlank;
	this.validNumber = vs_ValidNumber;
	this.validInteger = vs_ValidInteger;
	this.validQtySize = vs_ValidQtySize;	
	this.itemSelected = vs_ItemSelected;
	this.validEmail = vs_ValidEmail;
	this.validPhoneNumber = vs_ValidPhoneNumber;
	this.validCardNumber = vs_ValidCardNumber;
	this.validBusinessNumber = vs_ValidBusinessNumber;		
	this.validJuminNumber = vs_ValidJuminNumber;
	this.validJuminNumber2Field = vs_ValidJuminNumber2Field					// 2005. 07. 29. 추가 Validation	
	this.validCompanyNumber3Field = vs_ValidCompanyNumber3Field					// 2006. 01. 10. 추가 Validation	
	this.validFullDateTime = vs_ValidFullDateTime;										// 2005. 08. 03. 추가 Validation
	this.validDateTime = vs_ValidDateTime;
	this.validDate = vs_ValidDate;			
	this.validYearMonth = vs_ValidYearMonth;												// 2005. 07. 28. 추가 Validation
	this.validYear = vs_ValidYear;																	// 2005. 08. 03. 추가 Validation	
	this.validDateRange = vs_ValidDateRange;
	this.validMoney = vs_ValidMoney;
	this.validSchoolTerm = vs_ValidSchoolTerm;
	this.validCheckBoxList =  vs_ValidCheckBoxList;										// 2005. 07. 18. 추가 Validation
	this.validRadionButtonList =  vs_ValidRadioButtonList;							// 2005. 07. 18. 추가 Validation
	this.validDropDownList =  vs_ValidDropDownList;									// 2005. 07. 18. 추가 Validation
	this.validListBox =  vs_ValidListBox;									
	this.validStringLength = vs_ValidStringLength											// 2005. 08. 03. 추가 Validation
	this.validDynamicStringLength = vs_ValidDynamicStringLength;			// 2005. 08. 09. 추가 Validation	
	this.validFullDynamicStringLength = vs_validFullDynamicStringLength;	// 2005. 08. 22. 추가 Validation		
	
	return this;
}
// 그리드 Validation object 생성자
function GridValidSetup() {
	
	this.gnonBlank = grid_NonBlank;
	this.gvalidNumber = grid_ValidNumber;
	this.gvalidInteger = grid_ValidInteger;
	this.gvalidEmail = grid_ValidEmail;
	this.gvalidPhoneNumber = grid_ValidPhoneNumber;
	this.gvalidCardNumber = grid_ValidCardNumber;
	this.gvalidBusinessNumber = grid_ValidBusinessNumber;	
	this.gvalidJuminNumber = grid_ValidJuminNumber;	
	this.gvalidFullDateTime = grid_ValidFullDateTime;										// 2005. 08. 03. 추가 Validation		
	this.gvalidDateTime = grid_ValidDateTime;	
	this.gvalidDate = grid_ValidDate;
	this.gvalidYearMonth = grid_ValidYearMonth;												// 2005. 07. 28. 추가 Validation
	this.gvalidYear = grid_ValidYear;																	// 2005. 08. 03. 추가 Validation
	this.gvalidMoney = grid_ValidMoney;
	this.gvalidSchoolTerm = grid_ValidSchoolTerm;	
	this.gvalidStringLength = grid_ValidStringLength											// 2005. 08. 03. 추가 Validation
	this.gvalidDynamicStringLength = grid_ValidDynamicStringLength;			// 2005. 08. 09. 추가 Validation		
	this.gvalidFullDynamicStringLength = grid_ValidFullDynamicStringLength;	// 2005. 08. 22. 추가 Validation			
	
	return this;
}

// Extend the string object to include a trim function
String.prototype.Trim = trimString;

// Construct the validation object
var validation = new Object;
validation = ValidSetup();

// 그리드 Validation Object 생성
var gridValidation = new Object;
gridValidation = GridValidSetup();



