function getAddMonth(strDate, addMonth){
	
	var strDT = strDate.split("-"); 

	var d = new Date(strDT[0],strDT[1]-1,strDT[2]);

 	var dd = d.getMonth();

	 d.setMonth(dd+addMonth);

	 return toTimeString(d);
	
}
function getAddDate(strDate, addDate){
//alert(document.getElementById("calendar_td_"+strDate).className);
//alert(document.getElementById("checkout"));
	var strDT = strDate.split("-"); 

	var d = new Date(strDT[0],strDT[1]-1,strDT[2]);

 	var dd = d.getDate();
	 d.setDate(dd+addDate);

	 return toTimeString(d);
	
}
function toTimeString(date) { //formatTime(date)
    var year  = date.getFullYear();
    var month = date.getMonth() +1; // 1ì=0,12ì=11ì´ë¯ë¡ 1 ëí¨
    var day   = date.getDate();
   
    if (("" + month).length == 1) { month = "0" + month; }
    if (("" + day).length   == 1) { day   = "0" + day;   }
   
    return ("" + year + "-" + month + "-" +day )
}
function getCurrentDate() { //formatTime(date)
	var date = new Date();
    var year  = date.getFullYear();
    var month = date.getMonth() + 1; // 1ì=0,12ì=11ì´ë¯ë¡ 1 ëí¨
    var day   = date.getDate();
   
    if (("" + month).length == 1) { month = "0" + month; }
    if (("" + day).length   == 1) { day   = "0" + day;   }
   
    return ("" + year + "-" + month + "-" +day )
}
function getDayDiff(s1,e1){
	var vdate1 = new Date(s1.substr(0,4),(s1.substr(5,2)-1),s1.substr(8,2));
	var vdate2 = new Date(e1.substr(0,4),(e1.substr(5,2)-1),e1.substr(8,2));
	
	if ((vdate2-vdate1)>0 ) return true;
	else return false;
}

function valueverify()
{
	
	var baseForm = valueverify.arguments[0];		// 첫번째 argument를 전역변수에 저장(form element)
	var tmp_result;		
	
	var i;
	for ( i = 1 ; i < valueverify.arguments.length ; i++ ) {		// argument 숫자만큼 루프
 
		if ( valueverify.arguments[i].charAt(0) == 'P' ) {
			if ( !sizeCheck(baseForm.value, valueverify.arguments[i]) ) { // 'P'일 때 sizeCheck()함수 호출
				//showMessage("DCOM0500");
				//alert("입력값이 정해진 크기에 맞지 않습니다.");
				baseForm.value = "";
				baseForm.focus();
				return false;
			}
		} else if ( valueverify.arguments[i].charAt(0) == 'L' ) {
			if ( !limitCheck(baseForm.value, valueverify.arguments[i]) ) { // 'L'일 때 limitCheck()함수 호출
				//showMessage("DCOM0500");
				//alert("입력값이 너무 많습니다.");
				baseForm.value = "";
				baseForm.focus();
				return false;
			}
		} else if ( valueverify.arguments[i] == 'E' ) {
			if (!emptyCheck(baseForm.value)) {	// 'E'일 때 emptyCheck()함수 호출
				//showMessage("DCOM0260");
				//alert("입력값이 없습니다.");
				baseForm.value = "";
				baseForm.focus();
				return false;
			}
		} else if ( valueverify.arguments[i] == 'D' ) {				
			if ( !dateCheck(baseForm.value) ) {	// 'D'일 때 dateCheck()함수 호출
				//alert("날짜 형식에 맞지 않습니다.");
				alertMessage("BRN001950");
				baseForm.value = "";
				baseForm.focus();
				return false;
			}
		} else if ( valueverify.arguments[i].charAt(0) == 'N' ) {
			tmp_result = numberCheck(baseForm.value, valueverify.arguments[i])	// 'N'일 때 numberCheck()함수 호출
			if ( tmp_result == 0 )	{			// 리턴값이 0 이면 숫자가 아님
				////showMessage("DCOM0500");
				//alert("1숫자가 아닙니다.");
				baseForm.value = "";
				baseForm.focus();
				return false;
			} else if ( tmp_result == 1 )	{		// 리턴값이 1 이면 정수자릿수 오류
				////showMessage("DCOM0500");
				//alert("정수 자리수가 너무 큽니다.");
				baseForm.value = "";
				baseForm.focus();
				return false; 
			} else if ( tmp_result == -1 )	{		// 리턴값이 -1 이면 소숫점 아래자릿수 오류
				////showMessage("DCOM0500");
				//alert("소수점 입력은 허용되지 않습니다.");
				baseForm.value = "";
				baseForm.focus();
				return false;
			} else if ( tmp_result == -2 )	{		// 리턴값이 -2 이면 소숫점 아래자릿수 오류				
				////showMessage("DCOM0500");
				//alert("소수점 아래 자리수가 너무 큽니다.");
				baseForm.value = "";
				baseForm.focus();
				return false;
			}
		}
	}
	return true;
}



function valueverifyValue()
{
	var baseFormValue = valueverifyValue.arguments[0];		// 첫번째 argument를 전역변수에 저장(form element)
	var tmp_result;		
	
	var i;
	for ( i = 1 ; i < valueverifyValue.arguments.length ; i++ ) {		// argument 숫자만큼 루프

		if ( valueverifyValue.arguments[i].charAt(0) == 'P' ) {
			if ( !sizeCheck(baseFormValue, valueverifyValue.arguments[i]) ) { // 'P'일 때 sizeCheck()함수 호출
				alertMessage("BRN002300");
				//alert("입력값이 정해진 크기에 맞지 않습니다.");
				baseFormValue = "";
				return false;
			}
		} else if ( valueverifyValue.arguments[i].charAt(0) == 'L' ) {
			if ( !limitCheck(baseFormValue, valueverifyValue.arguments[i]) ) { // 'L'일 때 limitCheck()함수 호출
				alertMessage("BRN002300");
				//alert("입력값이 너무 많습니다.");
				baseFormValue = "";
				
				return false;
			}
		} else if ( valueverifyValue.arguments[i] == 'E' ) {
			if (!emptyCheck(baseFormValue)) {	// 'E'일 때 emptyCheck()함수 호출
				alertMessage("BRN002060");
				//alert("입력값이 없습니다.");
				baseFormValue = "";
				
				return false;
			}
		} else if ( valueverifyValue.arguments[i] == 'D' ) {				
			if ( !dateCheck(baseFormValue) ) {	// 'D'일 때 dateCheck()함수 호출
				//alert("날짜 형식에 맞지 않습니다.");
				alertMessage("BRN001950");
				baseFormValue = "";
				
				return false;
			}
		} else if ( valueverifyValue.arguments[i].charAt(0) == 'N' ) {
			tmp_result = numberCheck(baseFormValue, valueverifyValue.arguments[i])	// 'N'일 때 numberCheck()함수 호출
			if ( tmp_result == 0 )	{			// 리턴값이 0 이면 숫자가 아님
				alertMessage("BRN002300");
				//alert("2숫자가 아닙니다.");
				baseFormValue = "";
				
				return false;
			} else if ( tmp_result == 1 )	{		// 리턴값이 1 이면 정수자릿수 오류
				alertMessage("BRN002300");
				//alert("정수 자리수가 너무 큽니다.");
				baseFormValue = "";
				
				return false; 
			} else if ( tmp_result == -1 )	{		// 리턴값이 -1 이면 소숫점 아래자릿수 오류
				alertMessage("BRN002300");
				//alert("소수점 입력은 허용되지 않습니다.");
				baseFormValue = "";
				
				return false;
			} else if ( tmp_result == -2 )	{		// 리턴값이 -2 이면 소숫점 아래자릿수 오류
				alertMessage("BRN002300");
				//alert("소수점 아래 자리수가 너무 큽니다.");
				baseFormValue = "";
				
				return false;
			}
		}
	}
	return true;
}


//---------------------------------------------------------------------------------------------------------
//	finction	:	sizeCheck()
//	WORK		:	정해진 크기와 같은가를 체크하는 함수
// 				같지 않으면 return false 
//  	CALL(ex)	:	sizeCheck(sizeVal, arg)
//---------------------------------------------------------------------------------------------------------
function sizeCheck(sizeVal, arg)
{									 
	var argSize;
	
	argSize = arg.substring(1, (arg.length));				// Pn에서 n값(크기)를 추출
	if( sizeVal.length != argSize )						// 다르면 return false
		return false;
	return true;
}

//---------------------------------------------------------------------------------------------------------
//	finction	:	limitCheck()
//	WORK		:	입력한 내용의 길이를 체크하는 함수
// 				초과하면 return false 
//  	CALL(ex)	:	limitCheck(sizeVal, arg)
//---------------------------------------------------------------------------------------------------------
function limitCheck(sizeVal, arg)
{									 
	var argSize;
	
	argSize = arg.substring(1, (arg.length));				// Pn에서 n값(크기)를 추출
	if( sizeVal.length > argSize )						// 다르면 return false
		return false;
	return true;
}

//---------------------------------------------------------------------------------------------------------
//	finction	:	emptyCheck()
//	WORK		:	정해진 크기와 같은가를 체크하는 함수
// 				같지 않으면 return false
//  	CALL(ex)	:	emptyCheck(this.form.R1C3)
//---------------------------------------------------------------------------------------------------------
function emptyCheck(emptyVal)							// 비어 있는가를 체크하는 함수
{	
	if( emptyVal == null )
		return false;
	else if(  emptyVal.length = 0 || emptyVal == "" )
		return false;
	return true;
}


//---------------------------------------------------------------------------------------------------------
//	finction	:	dateCheck()
//	WORK		:	날짜를 체크하는 함수
// 			날짜형식에 맞지 않으면 return false
//---------------------------------------------------------------------------------------------------------
function dateCheck(dateVal)
{
	var ymd = dateVal;
	var year;
	var month;
	var day;
	var febEndday;
	
	//alert( dateVal);
	
	if( dateVal.length == 0 )	return true;
	if( dateVal.length != 8 || isNaN(dateVal) )	return false;

	year = ymd.substring(0,4);					// 년도
	month = ymd.substring(4,6);					// 월
	day = ymd.substring(6,8);					// 일
	
	if (month > 12 || month < 01 || ymd.length < 08 || isNaN(ymd) || day <= 00)
	{
		return false;							// 월>12,월<1,년월일:8자리이하,년월일:Non Numeric, 일:00이하                                                                                -> return false
	}
	else if (month == 01 || month == 03 || month == 05 || month == 07 ||
		month == 08 || month == 10 || month == 12)
	{
		if (day > 31)					
			return false;						// 1월, 3월, 5월, 7월, 8월, 10월, 12월 : 일 -> 31 초과이면 return false
	}
	else if (month == 04 || month == 06 || month == 09 || month == 11)
	{
		if (day > 30)				
			return false;						// 4월, 6월, 9월, 11월 : 일 -> 30 초과이면 return false
	}
	else if (month == 02)						// 2월인 경우
	{
		if (year % 400 == 0) 
			febEndday = 29;						// 년도가 400으로 나눠질 경우 마지막날은 29일
		else if (year % 100 == 0) 
			febEndday = 28;						// 년도가 100으로 나눠질 경우 마지막날은 28일
		else if (year % 4   == 0) 
			febEndday = 29;						// 년도가   4  로 나눠질 경우 마지막날은 29일
		else 
			febEndday = 28;						// 나머지 경우의 마지막날은 28일

		if (day > febEndday) 
			return false;						// 일이 마지막날보다 크면 return false;
	}
	return true;
}


//---------------------------------------------------------------------------------------------------------
//	finction	:	numberCheck(numberVal, arg)
//	WORK		:	숫자여부, 정수자릿수 및 소숫점이하 자릿수 체크하는 함수
// 				각 case별로 0, 1, -1 return
//---------------------------------------------------------------------------------------------------------
function numberCheck(numberVal, arg)
{
	var integerSize;
	var decimalSize;
	var pointcheck;

	var find_point;
	
	if ( isNaN(numberVal) ) {							// 숫자가 아니면 0 반환
		return 0;
	}
	//alert(numberVal + " : " + arg);
	if ( arg.length > 1 && numberVal.length > 0 ) {		// arg.length가 1보다 클 경우(Nmn유형일 경우)
		pointcheck = arg.indexOf('.');
		find_point = numberVal.indexOf('.');
		//alert('pointcheck : ' + pointcheck + ', find_point : ' + find_point);
		
		if( pointcheck > 0 ) {		// 소수점이 포함된 숫자를 허용
			integerSize = parseInt( arg.substring(1, pointcheck) );
			decimalSize = parseInt( arg.substring(pointcheck+1, arg.length) );
			//alert('(with)integerSize : ' + integerSize + ', ' + 'decimalSize : ' + decimalSize);
		} else {					// 소수점이 포함된 숫자를 허용하지 않음.
			integerSize = parseInt( arg.substring(1, arg.length) );
			decimalSize = 0;
			//alert('(without)integerSize : ' + integerSize + ', ' + 'decimalSize : ' + decimalSize);
		}
		
		if( find_point < 0 ) {		// 입력받은 숫자에 소수점이 없을 경우
			if( numberVal.length > integerSize )
				return 1;			// 소수점이 입력되었으며 정수자리부분이 더 크다.
		} else {
			if( find_point > integerSize )
				return 1;
			if( numberVal.length - (find_point + 1) > decimalSize ) {
				if( decimalSize > 0 )
					return -2;		// 소수점 아래 자리가 더 크다.
				else
					return -1;		// 소수점 입력할 수 없음.
			}
		}
	}
	return 99;											// 문제없으면 99 반환(의미없음)
}


//---------------------------------------------------------------------------------------------------------
//	finction	:	compareDateField(start_date, end_date)
//	WORK		:	입력된 Data 값을 Validation 한 후, 크기를 비교하여
//				end_Data 가 크면 true return
//---------------------------------------------------------------------------------------------------------
function compareDateField(start_date, end_date)
{
//	alert(start_date + " ~ " + end_date);
	
	if( start_date.length != 8 || end_date.length != 8 ) {
		return false;
	} else if( dateCheck(start_date) && dateCheck(end_date) ) {
		if( start_date <= end_date ) {
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}


//---------------------------------------------------------------------------------------------------------
//	finction	:	checkDateField1(start_date, end_date)
//	WORK		:	입력된 Data 값을 Validation 한 후, 크기를 비교하여
//				end_Data 가 크면 true return
//---------------------------------------------------------------------------------------------------------
function checkDateField1(start_date, end_date)
{
	//alert(start_date + " ~ " + end_date);
	
	if( start_date.length == 0 ) {
		if( !dateCheck(end_date) )
			return false;
		else
			return true;
	} else if( start_date.length != 8 || end_date.length != 8 ) {
		return false;
	} else if( dateCheck(start_date) && dateCheck(end_date) ) {
		if( start_date < end_date ) {
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}



//---------------------------------------------------------------------------------------------------------
//	finction	:	checkDateField2(start_year, start_month, start_day, end_year, end_month , end_day)
//	WORK		:	입력된 Data 값을 Validation 한 후, 크기를 비교하여
//				end_Data 가 크면 true return
//---------------------------------------------------------------------------------------------------------
function checkDateField2(start_year, start_month, start_day, end_year, end_month , end_day)
{
	var start_date  = start_year + start_month + start_day;
	
	var end_date  = end_year + end_month + end_day;
	
//	alert(start_date + " ~ " + end_date);
	
	if( start_date.length == 0 && end_date.length == 0 ) {
		return true;
	} else if( dateCheck(start_date) && dateCheck(end_date) ) {
		if( start_date <= end_date ) {
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}

//---------------------------------------------------------------------------------------------------------
//	finction	:	checkYear(yearForm)
//	WORK		:	년도 4자리를 체크하는 함수
// 				년도가 정확하지 않으면 return false
//---------------------------------------------------------------------------------------------------------
function checkYear(yearForm)
{
	var year = yearForm.value;
	var year1 = "";

	if( emptyCheck(year) && 
			( isNaN(year) || year.length > 4 || !isPosInteger(year) ) ) {
		alert("년도가 정확하지 않습니다.");
		yearForm.value = "";
		yearForm.focus();
		return false;
	} else {
		if( year.length > 0 && year.length < 4 ) {
			for( var i = 0 ; i < (4-year.length) ; i++ ) 
				year1 += "0";
			yearForm.value = year1;
		}
		year1 += year;
		yearForm.value = year1;
		return true;
	}
}

//---------------------------------------------------------------------------------------------------------
//	finction	:	checkMonth(monthForm)
//	WORK		:	월 2자리를 체크하는 함수
// 				월이 정확하지 않으면 return false
//---------------------------------------------------------------------------------------------------------
function checkMonth(monthForm)
{
	var month = monthForm.value;
	var month1 = "";

	if( emptyCheck(month) && 
			( isNaN(month) || month.length > 2 || !isPosInteger(month) 
				|| ( parseInt(month) < 1 || parseInt(month) > 12 ) ) ) {
		alert("입력한 월이 정확하지 않습니다.");
		monthForm.value = "";
		monthForm.focus();
		return false;
	} else {
		if( month.length > 0 && month.length < 2 ) {
			for( var i = 0 ; i < (2-month.length) ; i++ ) 
				month1 += "0";
			monthForm.value = month1;
		}
		month1 += month;
		monthForm.value = month1;
		return true;
	}
}

//---------------------------------------------------------------------------------------------------------
//	finction	:	checkDay(dayForm)
//	WORK		:	일자 2자리를 체크하는 함수
// 				일자가 정확하지 않으면 return false
//---------------------------------------------------------------------------------------------------------
function checkDay(dayForm)
{
	var day = dayForm.value;
	var day1 = "";

	if( emptyCheck(day) && 
			( isNaN(day) || day.length > 2 || !isPosInteger(day) 
				|| ( parseInt(day) < 1 || parseInt(day) > 31 ) ) ) {
		alert("입력한 일이 정확하지 않습니다.");
		dayForm.value = "";
		dayForm.focus();
		return false;
	} else {
		if( day.length > 0 && day.length < 2 ) {
			for( var i = 0 ; i < (2-day.length) ; i++ ) 
				day1 += "0";
			dayForm.value = day1;
		}
		day1 += day;
		dayForm.value = day1; 
		return true;
	}
}

//-----------------------------------------------------------------------------------------------------------------
//	finction	:	isPosInteger()
//	WORK		:	general purpose function to see if a suspected numeric input
// 				is a positive integer
//-----------------------------------------------------------------------------------------------------------------
function isPosInteger(inputVal) 
{
	var inputStr = inputVal.toString();
	var oneChar;

	for( var i = 0 ; i < inputStr.length ; i++ ) {
		oneChar = inputStr.charAt(i);
		if( oneChar < "0" || oneChar > "9" ) {
			return false;
		}
	}
	return true;
}

//-----------------------------------------------------------------------------------------------------------------
//	finction	:	isInteger()
//	WORK		:	general purpose function to see if a suspected numeric input
// 				is a positive or negative integer
//-----------------------------------------------------------------------------------------------------------------
 
function isInteger(inputVal) 
{
	var inputStr = inputVal.toString();
	var oneChar;

	for( var i = 0 ; i < inputStr.length ; i++ ) {
		oneChar = inputStr.charAt(i);
		if( i == 0 && oneChar == "-" ) {
			continue;
		}
		if( oneChar < "0" || oneChar > "9" ) {
			return false;
		}
	}
	return true;
}

//-----------------------------------------------------------------------------------------------------------------
//	finction	:	isNumber()
//	WORK		:	일반 숫자 Validation
//-----------------------------------------------------------------------------------------------------------------
function isNumber(inputVal)
{
	oneDecimal = false;

	var inputStr = inputVal.toString();
	var oneChar;

	for( var i = 0 ; i < inputStr.length ; i++ ) {
		oneChar = inputStr.charAt(i);
		if( i == 0 && oneChar == "-" ) {
			continue;
		}
		if( oneChar == "." && !oneDecimal ) {
			oneDecimal = true;
			continue;
		}
		if( oneChar < "0" || oneChar > "9" ) {
			return false;
		}
	}
	return true;
}




//-----------------------------------------------------------------------------------------------------------------
//	finction	:	asciiCheck()
//	WORK		:	 code Validation
//-----------------------------------------------------------------------------------------------------------------
function asciiCheck(asciiForm)
{
	var Alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var Digit = "1234567890";
	var chRange = Alpha + Digit;
	
	var inputVal = escape(asciiForm.value);
	//alert(inputVal);
	for(var i = 0 ; i < inputVal.length ; i++ ) {
		// 우선 영문자와 숫자를 검사
		//alert( "[i:" + i + "]" + inputVal.substring(i, i+1) );
		if( chRange.indexOf(inputVal.substring(i, i+1)) < 0 ) {
			if( inputVal.substring(i, i+2) == "%u" ) {	// 한글이 입력되었을 경우는 정상
				//alert( "t1:" + inputVal.substring(i, i+2) );
				i += 5;
			} else {	// 한글도 아니라면 특수문자가 입력된 상황
				
//				asciiForm.value = "";
//				asciiForm.focus();
// 실제로 asciiCheck()를 호출하는 wrapper steel에서 오류 메시지 처리를 해 준다.
				return false;
			}
		}
	}
	return true;
}





	          
//-----------------------------------------------------------------------------------------------------------------
//	finction	:	asciiCheckAddress()
//	WORK		:	ascii address code Validation
//-----------------------------------------------------------------------------------------------------------------	                     
function asciiCheckAddress(asciiForm)
{
	var Alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var Digit = "1234567890";
	var Special = "/-@";
	var chRange = Alpha + Digit + Special;
	
	var inputVal = escape(asciiForm.value);
	//alert(inputVal);
	for(var i = 0 ; i < inputVal.length ; i++ ) {
		// 우선 영문자와 숫자를 검사
		//alert( "[i:" + i + "]" + inputVal.substring(i, i+1) );
		if( chRange.indexOf(inputVal.substring(i, i+1)) < 0 ) {
			if( inputVal.substring(i, i+6) == "%u223C" ) {	// ~ 입력시에는 에러 발생 시키기.
				//alert( "t1:" + inputVal.substring(i, i+6) );
				return false;
			} else if( inputVal.substring(i, i+2) == "%u" ) {	// 한글이 입력되었을 경우는 정상
				//alert( "t1:" + inputVal.substring(i, i+2) );
				i += 5;
			} else if( inputVal.substring(i, i+3) == "%20" ) {	// space 가 입력된 경우는 정상
				//alert( "t1:" + inputVal.substring(i, i+3) );
				i += 2;
			} else if( inputVal.substring(i, i+3) == "%28" ) {	// '(' 가 입력된 경우는 정상
				//alert( "t1:" + inputVal.substring(i, i+3) );
				i += 2;
            } else if( inputVal.substring(i, i+3) == "%29" ) {	// ')' 가 입력된 경우는 정상
				//alert( "t1:" + inputVal.substring(i, i+3) );
				i += 2;
			} else {	// 한글도 아니라면 특수문자가 입력된 상황
				return false;
			}
		}
	}
	return true;
}


//-----------------------------------------------------------------------------------------------------------------
//	finction	:	asciiCheckPhone()
//	WORK		:	ascii phone code Validation
//-----------------------------------------------------------------------------------------------------------------
function asciiCheckPhone(asciiForm)
{
	var Alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var Digit = "1234567890";
	var Special = "-";
	var chRange = Alpha + Digit + Special;
	
	var inputVal = escape(asciiForm.value);
	//alert(inputVal);
	for(var i = 0 ; i < inputVal.length ; i++ ) {
		// 우선 영문자와 숫자를 검사
		//alert( "[i:" + i + "]" + inputVal.substring(i, i+1) );
		if( chRange.indexOf(inputVal.substring(i, i+1)) < 0 ) {
			if( inputVal.substring(i, i+6) == "%u223C" ) {	// ~ 입력시에는 에러 발생 시키기.
				//alert( "t1:" + inputVal.substring(i, i+6) );
				return false;
			} else if( inputVal.substring(i, i+2) == "%u" ) {	// 한글이 입력되었을 경우는 에러
				//alert( "t1:" + inputVal.substring(i, i+2) );
				return false;
			} else if( inputVal.substring(i, i+3) == "%28" ) {	// '(' 가 입력된 경우는 정상
				//alert( "t1:" + inputVal.substring(i, i+3) );
				i += 2;
			} else if( inputVal.substring(i, i+3) == "%29" ) {	// ')' 가 입력된 경우는 정상
				//alert( "t1:" + inputVal.substring(i, i+3) );
				i += 2;
			} else {	// 한글도 아니라면 특수문자가 입력된 상황
				return false;
			}
		}
	}
	return true;
}


//-----------------------------------------------------------------------------------------------------------------
//	finction	:	asciiCheckEmail()
//	WORK		:	ascii email code Validation
//-----------------------------------------------------------------------------------------------------------------
function asciiCheckEmail(asciiForm)
{
	var Alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var Digit = "1234567890";
	var Special = "@.";
	var chRange = Alpha + Digit + Special;
	
	var inputVal = escape(asciiForm.value);
	//alert(inputVal);
	for(var i = 0 ; i < inputVal.length ; i++ ) {
		// 우선 영문자와 숫자를 검사
		//alert( "[i:" + i + "]" + inputVal.substring(i, i+1) );
		if( chRange.indexOf(inputVal.substring(i, i+1)) < 0 ) {
			if( inputVal.substring(i, i+6) == "%u223C" ) {	// ~ 입력시에는 에러 발생 시키기.
				//alert( "t1:" + inputVal.substring(i, i+6) );
				return false;
			} else if( inputVal.substring(i, i+2) == "%u" ) {	// 한글이 입력되었을 경우는 에러
				//alert( "t1:" + inputVal.substring(i, i+2) );
				return false;
			} else {	// 한글도 아니라면 특수문자가 입력된 상황
				return false;
			}
		}
	}
	
	var str_value = asciiForm.value;
	if( str_value.length > 0 ) {
		if( str_value.indexOf("@") != -1 ) {
			if( str_value.indexOf("@") != str_value.lastIndexOf("@") ) {
				return false;	// email에 "@"가 두 번 이상 들어 있다.
			}
		} else {
			return false;	// email 에 "@"가 들어 있지 않다.
		}
	}
	return true;
}


//-----------------------------------------------------------------------------------------------------------------
//	finction	:	asciiCheckTextArea()
//	WORK		:	ascii text area Validation
//-----------------------------------------------------------------------------------------------------------------
function asciiCheckTextArea(asciiForm)
{
	var Alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var Digit = "1234567890";
	var Special = ".,?!'\"";
	var chRange = Alpha + Digit + Special;
	
	var inputVal = escape(asciiForm.value);
	//alert(inputVal);
	for(var i = 0 ; i < inputVal.length ; i++ ) {
		// 우선 영문자와 숫자를 검사
		if( chRange.indexOf(inputVal.substring(i, i+1)) < 0 ) {
			if( inputVal.substring(i, i+2) == "%u" ) {	// 한글이 입력되었을 경우는 정상
				i += 5;
			} else if( inputVal.substring(i, i+3) == "%20" ) {	// space 가 입력된 경우는 정상
				i += 2;
			} else if( inputVal.substring(i, i+3) == "%28" ) {	// '(' 가 입력된 경우는 정상
				i += 2;
            } else if( inputVal.substring(i, i+3) == "%29" ) {	// ')' 가 입력된 경우는 정상
				i += 2;
			} else {	// 한글도 아니라면 특수문자가 입력된 상황
				return false;
			}
		}
	}
	return true;
}



//-----------------------------------------------------------------------------------------------------------------
//	finction	:	DaysPerMonth()
//	WORK		:	달에 대한 날짜 가져오기
//-----------------------------------------------------------------------------------------------------------------
function DaysPerMonth(i_year, i_mon) {
  if (i_mon == 2) {
  	 if (IsLeapYear(i_year)) {
  	    return 29;	
  	 }
  	 else {
  	    return 28;	
  	 }	
  }
  else {
  	  if ((i_mon==4) || (i_mon==6) || (i_mon==9) || (i_mon==11)) {
            return 30;
          }            
          else {
            return 31;
          }
  }                    
}


//-----------------------------------------------------------------------------------------------------------------
//	finction	:	IsLeapYear()
//	WORK		:	윤년 검색
//-----------------------------------------------------------------------------------------------------------------
function IsLeapYear(AYear) {
  if (((AYear % 4) == 0) && (((AYear % 100) != 0) || ((AYear % 400) == 0))) {	
     return true;	
  }   
  else {
     return false;	 
  }	  	
}


//-----------------------------------------------------------------------------------------------------------------
//	finction	:	changeEditDate()
//	WORK		:	선택된 Year, Month에 해당하는 Day Return
//-----------------------------------------------------------------------------------------------------------------
function changeEditDate() 
{
	var lap_month           = new Array("31" , "29" , "31" , "30" , "31" , "30" , "31" , "31" , "30" , "31" , "30" , "31");
	var non_lap_month       = new Array("31" , "28" , "31" , "30" , "31" , "30" , "31" , "31" , "30" , "31" , "30" , "31");
	var islapyear           = false;
	  
	var year   = changeEditDate.arguments[0].value;
	var month  = changeEditDate.arguments[1].value;

	if((year % 4) == 0) {
		if((year % 100) == 0) {
			if((year % 400) == 0)
				islapyear = true;                                 
			else
				islapyear = false;
		}
	}
	                  
	changeEditDate.arguments[2].options.length = 0;
         
	if( islapyear ){
		changeEditDate.arguments[2].options.length = lap_month[changeEditDate.arguments[1].selectedIndex];
		for(var i = 0 ; i < lap_month[changeEditDate.arguments[1].selectedIndex] ; i++) {
			if( i >= 9 ){
				changeEditDate.arguments[2].options[i].value = i+1; //i+1;
				changeEditDate.arguments[2].options[i].text  = i+1; //i+1;
			}else{
				changeEditDate.arguments[2].options[i].value = "0" + eval(i+1); //i+1;
				changeEditDate.arguments[2].options[i].text  = "0" + eval(i+1); //i+1;
			}
		}
	} else {
		changeEditDate.arguments[2].options.length = non_lap_month[changeEditDate.arguments[1].selectedIndex];
		for(var i = 0 ; i < non_lap_month[changeEditDate.arguments[1].selectedIndex] ; i++){
			if( i >= 9 ){
				changeEditDate.arguments[2].options[i].value = i+1;
				changeEditDate.arguments[2].options[i].text  = i+1; //i+1;
			}else{
				changeEditDate.arguments[2].options[i].value = "0" + eval(i+1);
				changeEditDate.arguments[2].options[i].text  = "0" + eval(i+1); //i+1;
			}
		}
	}
}

//-----------------------------------------------------------------------------------------------------------------
//	finction	:	ClearSelectBox()
//	WORK		:	select 박스 지우기
//-----------------------------------------------------------------------------------------------------------------
function ClearSelectBox(el) {
  while (el.options.length > 0) {
   	 el.options[0] = null;
  }	
}


//-----------------------------------------------------------------------------------------------------------------
//	finction	:	//////showMessage()
//	WORK		:	message를 dialog, bar에 출력
//-----------------------------------------------------------------------------------------------------------------
function showMessage(code) {
	
	var Msg = Defaults.getMessage(code);
	
	if (Msg != null) {
		
		// Message Bar에 뿌리기
		
		// Dialog에 뿌려야 하는 Message
		if (code.substr(0, 1) == "D") {
			drowLayer("MS", Msg);
			alert(Msg);			
			
		}	
		
		else {
			
			drowLayer("MS", Msg);
			
		}	
		
	}		
}

//-----------------------------------------------------------------------------------------------------------------
//	finction	:	trim()
//	WORK		:	공백 없애기
//-----------------------------------------------------------------------------------------------------------------
function trim(src) {
	return rtrim(ltrim(src));
}
	
//-----------------------------------------------------------------------------------------------------------------
//	finction	:	ltrim()
//	WORK		:	left 공백 없애기
//-----------------------------------------------------------------------------------------------------------------
function ltrim(src) {

	for (var i = 0; i < src.length; i++) {
		if( src.charAt(i) != " " ) {
			return src.substr(i, src.length - i);			
		}
	}	
	
	return "";
}


//-----------------------------------------------------------------------------------------------------------------
//	finction	:	rtrim()
//	WORK		:	right 공백 없애기
//-----------------------------------------------------------------------------------------------------------------
function rtrim(src) {

	var j = 0;
	
	for (var i = 0; i < src.length; i++) {
		// 역으로 찾기 위하여 
		j = (src.length - 1) - i;
				
		if( src.charAt(j) != " " ) {
			return src.substr(0, j + 1);			
		}
	}	
	
	return "";
}	

//-----------------------------------------------------------------------------------------------------------------
//	finction	:	pos(src, ch)
//	WORK		:	String 에서 ch position 얻기
//-----------------------------------------------------------------------------------------------------------------
function pos(src, ch) {
	
	for (var i = 0; i < src.length; i++) {
		
		if (src.charAt(i) == ch) {
			return i;
		}	
	}	
	
	return -1;
}
	
//-----------------------------------------------------------------------------------------------------------------
//	finction	:	maskNumber()
//	WORK		:	숫자 Masking
//-----------------------------------------------------------------------------------------------------------------	
function maskNumber(source, maskFmt)
{
	
	var retValue = maskNumberValue(source.value, maskFmt);
	
	if (retValue == -1) {
		source.value = "";  
		source.focus();
		return ""
	}	
	else {
		source.value = retValue;
		return retValue;
	}
	

}


function maskNumberValue(val, maskFmt)
{
	
	var origin = val;
	
	if( origin.length == 0 )
		return "";
	else if( isNaN(parseFloat(origin)) ) {
		return -1;
	}

	// 소숫점 Format 처리
	if (maskFmt != null) {
		
		origin = sosuMasking(origin, maskFmt);
		
	}		
	
	if( origin.length <= 3 )
		return origin;

	var minus_chr = '';
	if(origin.charAt(0) == '-') {
		minus_chr = origin.charAt(0);
		origin = origin.substring(1, origin.length);
	}
	var strs = origin.split(".");   
	
	var num = strs[0];
	var num_len = num.length;
	var dot_count = 0;
	var last_str= '';
	var dot_str = '';
	var ret = '';

	if( num_len <= 3 ) {
		dot_str = num;  
	}

	while( (num_len - 3) > 0 ){
		num_len = num_len - 3;
		last_str = num.substring(0 , num_len);   
		dot_count++;
	}

	for(var  i = dot_count ; i >= 1 ; i--) {
		var start_ = i * 3 + last_str.length;
		var unit = num.substring((start_ - 3), start_);
		dot_str  = ',' + unit + dot_str;  
	}

	dot_str = last_str + dot_str;

	if( (strs.length > 1) && (strs[1].length != 0) )
		dot_str += "." + strs[1];
		
		
		
	ret = (minus_chr + dot_str);    
	
	return ret;
}



function sosuMasking(val, maskFmt) {
	
	var ln, sosu, ret;
	var pointcheck1 = maskFmt.indexOf('.');	// Masking Point
	var pointcheck2 = val.indexOf('.'); 	// Value Point
	
	
	if (pointcheck1 >= 0) {
		ln = maskFmt.substring(pointcheck1 + 1, maskFmt.length);
		
		if (pointcheck2 >= 0) {
			
			sosu = val.substring(pointcheck2 + 1, val.length);
			
			if (sosu.length > eval(ln)) {	// 유효수가 더 크다.
				
				sosu = sosu.substring(0, eval(ln));
				
			}	
			else if (sosu.length < eval(ln)) {	// 유효수가 더 크다.
			
				for (var i = 0; i < eval(ln) - sosu.length; i++) {
					sosu = sosu + '0';
				}
			}
		}	
		else {

			sosu = "";
			
			for (var i = 0; i < eval(ln); i++) {
				sosu = sosu + '0';
			}			
		}	
	}	
	else {
		
		sosu = "";
	}	
	
	// 소숫점 만들기
	
	if (sosu.length != 0) {
		sosu = '.' + sosu;
	}	
	
	
	if (pointcheck2 >= 0) {
		ret = val.substring(0, pointcheck2) + sosu;
	}	
	else {
		ret = val + sosu;
	}
	
	return ret;	
	
}	








//-----------------------------------------------------------------------------------------------------------------
//	finction	:	unmaskNumber()
//	WORK		:	숫자 Masking 해지
//-----------------------------------------------------------------------------------------------------------------	
function unmaskNumber(source)
{
	if( source == null )
		return "";
		
	var retValue = 	unmaskNumberValue(source.value);

	source.value = retValue;	
	return retValue;
}



function unmaskNumberValue(val)
{
	var origin = val;
	
	if( origin.length == 0 ) return "";
	 
	var dest = "";
	
	for( var i = 0 ; i < origin.length ; i++ ) {
		if( origin.charAt(i) != "," )
			dest += origin.charAt(i);
	}
	
	return dest;
}


//-----------------------------------------------------------------------------------------------------------------
//	finction	:	maskDate()
//	WORK		:	Date type Masking
//-----------------------------------------------------------------------------------------------------------------
function maskDate(source, mymaskFmt)
{
	retValue = maskDateValue(source.value, mymaskFmt);
	if (retValue == -1) {
		source.value = "";
		source.focus();
	}
	else {
		source.value = retValue;
	}	
	
	return retValue;

}


function maskDateValue(val, mymaskFmt)
{
	
	var origin = val;
	var dest = "";
	var temp = "";
	var today = "";
	
	var now = new Date();
	var day = "", month = "", year = "";
	
	day = now.getDate().toString();
	month = (now.getMonth()+1).toString();
	year = now.getYear().toString();

	if( day.length == 1 ) 	day = '0' + day;
	if( month.length == 1 ) month = '0' + month;
	
	if (mymaskFmt == "DMY") {
		today = day + month + year;
	}	
	else if (mymaskFmt == "MDY") {
		today = month + day + year;
	}	
	else {
		today = year + month + day;
	}	
	
	
	// 기본 오류 Check
	if (origin.length == 0) {
		return "";
	}
	else if (origin.length > 10) {
		return -1;
	}
	
	// - 을 공백으로 변경
	if (pos(origin, "-") != -1) {
		temp = replaceString(origin, "-", "");
	}
	else {
		temp = origin;
	}
	
	
	if (mymaskFmt == "MDY") {
		// 약식 Check
		//2004-07-06...YJJ....if (temp.length == 1 || temp.length == 3) {
		//2004-07-06...YJJ....
		//2004-07-06...YJJ....	temp = "0" + temp;			
		//2004-07-06...YJJ....	temp = temp + today.substr(temp.length, (8-temp.length));					
		//2004-07-06...YJJ....}
		//2004-07-06...YJJ....	
		//2004-07-06...YJJ....else if (temp.length == 2 || temp.length == 4) {
		//2004-07-06...YJJ....
		//2004-07-06...YJJ....	// YYYMMDD
		//2004-07-06...YJJ....	temp = temp + today.substr(temp.length, (8-temp.length));	
		//2004-07-06...YJJ....}
		//2004-07-06...YJJ....else if (temp.length != 8) {
		//2004-07-06...YJJ....	return -1;
		//2004-07-06...YJJ....}	
		
		if (temp.length == 1) {
		
			temp = "0" + temp;			
			temp = today.substr(0, 2)+ temp + today.substr(4, 4);					
		}

		else if (temp.length == 2) {//MMDDYYYY
		
			temp = today.substr(0, 2)+ temp + today.substr(4, 4);
		}	
		else if (temp.length == 3) {
		
			temp = "0" + temp;			
			temp = temp + today.substr(4, 4);					
		}
			
		else if (temp.length == 4) {
		
			temp = temp + today.substr(4, 4);	
		}
		else if (temp.length != 8) {
			return -1;
		}
				
		//2004-07-06...YJJ...여기까지 수정함....
		
		
	}
	else if (mymaskFmt == "DMY") {
		// 약식 Check
		if (temp.length == 1) {
		
			temp = "0" + temp;			
			temp = temp + today.substr(temp.length, (8-temp.length));					
		}	
		else if (temp.length == 3) {
			temp = temp.substr(0, 2) + "0" + temp.substr(2, 1);			
			temp = temp + today.substr(temp.length, (8-temp.length));					
		}		
	
		else if (temp.length == 2 || temp.length == 4) {
		
			// YYYMMDD
			temp = temp + today.substr(temp.length, (8-temp.length));	
		}
		else if (temp.length != 8) {
			return -1;
		}	
		
	}
	else {
		// 약식 Check
		if (temp.length == 1 || temp.length == 3) {
		
			temp = "0" + temp;			
			temp = today.substr(0, (8-temp.length)) + temp;					
		}
	
		else if (temp.length == 2 || temp.length == 4) {
		
			// YYYMMDD
			temp = today.substr(0, (8-temp.length)) + temp;			
		}
		else if (temp.length != 8) {
			return -1;
		}	
	}
		
		
	
	temp = fmtDateToDate(temp, mymaskFmt);
	// 입력한 날짜 오류 Check
	if( !dateCheck( temp ) ) {	
		return -1;
	}	
	
	temp = dateToFmtDateMask(temp, mymaskFmt);
			
	return temp;
}



function dateToFmtDate(src, fmt) {
	var ret = "";
	
	if (trim(src).length == 0) {
		return "";
	}
	
	if (trim(src).length != 8) {
		return -1;
	}	
	
	if (fmt == "MDY") {
		ret = src.substr(4, 2) + src.substr(6, 2) + src.substr(0, 4);	
	}
	else if (fmt == "DMY") {
		ret = src.substr(6, 2) + src.substr(4, 2) + src.substr(0, 4);	
	}
	else {
		ret = src;
	}	
		
	return ret;
}

function dateToFmtDateMask(src, fmt) {
	var ret = "";

	if (trim(src).length == 0) {
		return "";
	}
		
	if (trim(src).length != 8) {
		return -1;
	}	
	
	if (fmt == "MDY") {
		ret = src.substr(4, 2) + '-' + src.substr(6, 2) + '-' + src.substr(0, 4);	
	}
	else if (fmt == "DMY") {
		ret = src.substr(6, 2) + '-' + src.substr(4, 2) + '-' + src.substr(0, 4);	
	}
	else {
		ret = src.substr(0, 4) + '-' + src.substr(4, 2) + '-' + src.substr(6, 2);
	}	
		
	return ret;
}


function fmtDateToDate(src, fmt) {
	var ret = "";
	
	if (trim(src).length == 0) {
		return "";
	}
	
	if (trim(src).length != 8) {
		return -1;
	}	
	
	if (fmt == "MDY") {
		ret = src.substr(4, 4) + src.substr(0, 2) + src.substr(2, 2);	
	}
	else if (fmt == "DMY") {
		ret = src.substr(4, 4) + src.substr(2, 2) + src.substr(0, 2);	
	}
	else {
		ret = src;
	}	
	
	return ret;
}

function fmtDateToDateMask(src, fmt) {
	var ret = "";

	if (trim(src).length == 0) {
		return "";
	}
	
	if (trim(src).length != 8) {
		return -1;
	}	
	
	if (fmt == "MDY") {
		ret = src.substr(4, 4) + '-' + src.substr(0, 2) + '-' + src.substr(2, 2);	
	}
	else if (fmt == "DMY") {
		ret = src.substr(4, 4) + '-' + src.substr(2, 2) + '-' + src.substr(0, 2);	
	}
	else {
		ret = src.substr(0, 4) + '-' + src.substr(4, 2) + '-' + src.substr(6, 2);
	}	
	
	return ret;
}	





//-----------------------------------------------------------------------------------------------------------------
//	finction	:	unmaskDate()
//	WORK		:	Date type Masking 해지
//-----------------------------------------------------------------------------------------------------------------
function unmaskDate(source)
{

	if( source == null )
		return "";

	var retValue = unmaskDateValue(source.value);
	source.value = retValue;
		
	return retValue;
	
}
	


function unmaskDateValue(val)
{	
	
	
	var origin = val;
	
	if( origin.length == 0 ) return "";
	
	 
	var makeDate = "";
	
	for( var i = 0 ; i < origin.length ; i++ ) {
		if( origin.charAt(i) != "-" )
			makeDate += origin.charAt(i);
	}
	
	return makeDate;
}

//-----------------------------------------------------------------------------------------------------------------
//	finction	:	maskDate()
//	WORK		:	Date type Masking
//-----------------------------------------------------------------------------------------------------------------
function maskyearmonth(source)
{
	var origin = source.value;
	
	if( origin.length == 0 )
		return "";
	else if( origin.length > 6 || !isPosInteger(origin) ) {
		source.value = "";
		source.focus();
		return "";
	}
	
	var now = new Date();
	var day = "", month = "", year = "";
	
	day = now.getDate().toString();
	month = (now.getMonth()+1).toString();
	year = now.getYear().toString();
	
	if( day.length == 1 ) 	day = '0' + day;
	if( month.length == 1 ) month = '0' + month;
	
	var today = year + '' + month;
	
	if( origin.length == 1 || origin.length == 3) 	
		origin = '0' + origin;

	var makeDate = today.substr(0, (6-origin.length)) + origin;
	
	if( !dateCheck( makeDate + "01") ) {	// 입력한 날짜 오류
		source.value = "";
		source.focus();
		return origin;
	}
	
	makeDate = makeDate.substr(0, 4) + "-" + makeDate.substr(4,2);		
	
	source.value = makeDate;
	
	return makeDate;
}


//-----------------------------------------------------------------------------------------------------------------
//	finction	:	unmaskDate()
//	WORK		:	Date type Masking 해지
//-----------------------------------------------------------------------------------------------------------------
function unmaskyearmonth(source)
{
	if( source == null )
		return "";
		
	var origin = source.value;
	
	if( origin.length == 0 ) return "";
	 
	var dest = "";
	
	for( var i = 0 ; i < origin.length ; i++ ) {
		if( origin.charAt(i) != "-" )
			dest += origin.charAt(i);
	}
	
	source.value = dest;
	return dest;
}


	
//-----------------------------------------------------------------------------------------------------------------
//	finction	:	URLEncode()
//	WORK		:	Special Code encoding
//-----------------------------------------------------------------------------------------------------------------	
function URLEncode(src) {
	
	return escape(src);
}	

//-----------------------------------------------------------------------------------------------------------------
//	finction	:	URLDecode()
//	WORK		:	Special Code decoding
//-----------------------------------------------------------------------------------------------------------------
function URLDecode(src) {
	
	return unescape(src); 
}	  

//-----------------------------------------------------------------------------------------------------------------
//	finction	:	URLDecodePlus()
//	WORK		:	Special Code decoding
//-----------------------------------------------------------------------------------------------------------------
function URLDecodePlus(src) 
{
  // Create a regular expression to search all +s in the string
  var lsRegExp = /\+/g;
  // Return the decoded string
  return unescape(String(src).replace(lsRegExp, " ")); 
}

//-----------------------------------------------------------------------------------------------------------------
//	finction	:	UrlEncode()
//	WORK		:	Url decoding
//-----------------------------------------------------------------------------------------------------------------  
function UrlEncode( han )
{
 	var len = han.length ;
 	var ret = "" ;
 
 	if( len == 0 ) return ";" ;
  
 	for( i = 0 ; i < len ; i++ )
 	{
  		ret += han.charCodeAt( i ) ;
  		ret += ";" ;
 	}
     	return ret ;
}	


//-----------------------------------------------------------------------------------------------------------------
//	finction	:	str2array()
//	WORK		:	str to array by del
//-----------------------------------------------------------------------------------------------------------------  
function str2array(str, del) {

	var sp = 0;
	
	var temp;
	  	
	var retArray = new Array();

	var i = 0;
	while (pos(str, del) != -1) {
		
		var p =  pos(str, del);
		
		temp = str.substr(sp, p);
		retArray[i++] = temp;
		str = str.substr(p + 1, str.length - (p + 1));
		sp = 0;
  	}	
  	
  	retArray[i] = str;
  	
  	return retArray;

}



//-----------------------------------------------------------------------------------------------------------------
//	finction	:	setComboData()
//	WORK		:	select 박스 지우기고 데이터 넣기
//-----------------------------------------------------------------------------------------------------------------
function setComboData(el, data) {
	
	ClearSelectBox(el);
	
	for (var i = 0; i < data.length; i++ ) {
		
		var op = new Option;
		op.text = data[i];
       		op.value = data[i];
       		el.options.add(op);
	}	
	
}



//-----------------------------------------------------------------------------------------------------------------
//	finction	:	findLinkByHref()
//	WORK		:	입력된 href 에 해당하는 anchor 를 찾아 return
//-----------------------------------------------------------------------------------------------------------------


function findLinkByHref(href) {
  for (var i=0; i<document.links.length; i++) {
    if (document.links[i].href == href) return i;
  }
  return -1;
}

function findLinkByid(id) {
    if (document.getElementById) {
    	if (document.getElementById(id)) {
    		return document.getElementById(id).href;
    	}	
       
    }
    
  return -1;
}
//-----------------------------------------------------------------------------------------------------------------
//	finction	:	changeLinkHref()
//	WORK		:	anchor 의 href 속성을 변경하는 함수
//-----------------------------------------------------------------------------------------------------------------

function changeLinkHref(id,newHref,oldHref) {
  if (document.links.length > 0) {
    if (document.getElementById) {
      document.getElementById(id).href = newHref;
    }
    else if (document.all) {
      document.all[id].href = newHref;
    }
    else {
      var index = findLinkByHref(oldHref);
      if (index > -1)
        document.links[index].href = newHref;
    }
  }
}


//-----------------------------------------------------------------------------------------------------------------
//	finction	:	replaceString()
//	WORK		:	replace string
//-----------------------------------------------------------------------------------------------------------------
function replaceString(src, oldstr, newstr) {
	
	if (src.length < oldstr.length) {
		return src;
	}	
	

	var ret = "";
	var len = oldstr.length;
	
	for (var i = 0; i < src.length; i++ ) {
		
		var j = 0;
		for (j = 0; j < oldstr.length; j++ ) {
			
			if (src.charAt(i) != oldstr.charAt(j)) {
				
				break;
				
			}	
			
			i = i + 1;
		
		}
		
		
		
		if (j == oldstr.length) {
			
			ret = ret + newstr;			
			i = i - 1;
		}
		else {
			ret = ret + src.charAt(i);
		}
				
	}	
	
	
	return ret;
	
	
}	



//-----------------------------------------------------------------------------------------------------------------
//	finction	:	floatFix()
//	WORK		:	double 형 계산 보정함수
//-----------------------------------------------------------------------------------------------------------------

function floatFix (val, places, surchar) {
	var T = Number('1e'+places);
	var ret = Math.round(val*T)/T;

	if(surchar == null || surchar.length == 0) surchar = "0";
	if(surchar != "-"){
		var res;
		if(ret.toString().indexOf(".") == -1 && places != 0)
			ret += ".";
		while((res = ret.toString().length-ret.toString().indexOf(".")-1)<places){
			//alert(ret);
			ret+=surchar;
		}

		//alert(ret.lastIndexOf("."))
	}

	return ret;
}





//-----------------------------------------------------------------------------------------------------------------
//	finction	:	findControl(cname)
//	WORK		:	Control 찾기
//-----------------------------------------------------------------------------------------------------------------

function findControl(pctl, cname) {

  for (var i=0; i<pctl.elements.length; i++) {
    if (pctl.elements[i].name == cname) return true;
  }
  return false;
}

//-----------------------------------------------------------------------------------------------------------------
//	finction	:	findframe(fname)
//	WORK		:	frame 찾기
//-----------------------------------------------------------------------------------------------------------------
function findframe(fname, Doc) {

  if (Doc == null) {
  	Doc = document;
  }			
  	

  for (var i=0; i<Doc.frames.length; i++) {  
  	
  	if ((Doc.frames[i].name != null) && (Doc.frames[i].name == fname)) {
  		return true
  	}	
  	
  	if ((Doc.frames[i].id != null) && (Doc.frames[i].id == fname)) {
  		return true
  	}	
  	
  }
  return false;
}


//-----------------------------------------------------------------------------------------------------------------
//	finction	:	deletecontrol(cname)
//	WORK		:	Control 찾아서 삭제
//-----------------------------------------------------------------------------------------------------------------
function deletecontrol(pctl, cname) {
	
	var srcElements;
	
	if ((pctl == null) || (cname == null)) {
		return;
	}
	
	
	
		    
	// 각 Level 별 Control 삭제
	if (cname == "A") {
		srcElements = pctl.elements;
		for( var i = 0 ; i < srcElements.length ; i++ ) {	
			
			if (srcElements[i].type == "hidden") {
				srcElements[i].removeNode(true);
			}	
		}	
		
	}
	else if (cname == "C") {
		srcElements = pctl.elements;
		
		for( var i = 0 ; i < srcElements.length ; i++ ) {
			if (srcElements[i].type == "hidden") {
			
				if (srcElements[i].name.substr(0, 2) == "C_") {
					srcElements[i].removeNode(true);
				}	
			}	
		}	
		
		
	}		
	else if (cname == "M") {

		srcElements = pctl.elements;
		for( var i = 0 ; i < srcElements.length ; i++ ) {			
			if (srcElements[i].type == "hidden") {
			
				if (srcElements[i].name.substr(0, 2) == "M_") {
					srcElements[i].removeNode(true);
				}	
			}				
		}	
		
		
	}		
	else if (cname == "D") {
		srcElements = pctl.elements;
		
		for( var i = 0 ; i < srcElements.length ; i++ ) {	
			if (srcElements[i].type == "hidden") {
			
				if (srcElements[i].name.substr(0, 2) == "D_") {
					srcElements[i].removeNode(true);
					//pctl.removeChild(srcElements[i]);
				}	
			}	
		}		
			
	}		
  	else {
  		if (findControl(pctl, cname)) {
			if (srcElements[i].type == "hidden") {
  			
	  			srcElements[i].removeNode(true);
	  		}	
  		}	
	}
	
}


// Detail 의 Header Width 보정
function fixHeaderWidth(hdr, rdata) {
	
   try {	
   
	if (rdata[0] != null) {		
		rdata = rdata[0];		
	}
	else {		
		if (rdata == null) {
		    return;		
		}    
	}	
	
	if (hdr.rows.length == 0) {
		return;
	}
	
	if (rdata.rows.length == 0) {
		return;		
	}

	if (rdata.clientWidth == 0) {
		return ;
	}		

	hdr.width = rdata.clientWidth;
	
	var hCells = hdr.rows[0].cells;
	var dCells = rdata.rows[0].cells;

	if (hCells.length != dCells.length) {
		alert("Header Size 와 Data Column Size 가 틀립니다.");
		return false;
	}	
	
	for (var i = 0 ; i < hCells.length ; i ++ ) {	
		hCells[i].width = dCells[i].clientWidth;		
	}
	
   }
   catch(e) {
   	alert(e.description);	
   }		
   
}	



// Special Character check
function chkSpecial(src) {
	
	var comp = "~!@#$%^&*()_+|-=\{}[];:<>,.?/";
	
	for (var i = 0; i < src.length ; i ++) {
		
		if (comp.indexOf(src.substring(i, i+1)) < 0) {
			return false;
		}			
	}	
	
	return true;
}	


function reverseStr(src) {
	
	var j = 0;
	var retStr = "";
	
	for (var i = 0; i < src.length; i ++ ) {
		j = src.length - 1 - i;
		
		retStr = retStr + src.charAt(j);
	}
	
	return retStr;
	
}


// Normal Masking
function maskNormal(fmt, el) {
	
	
	var retValue = maskNormalValue(fmt, el.value);
	if (retValue == -1) {
		el.value = "";
		el.focus();
	}
	else {
		el.value = retValue;
	}	
	
	return retValue;	
	
}




// Normal Masking
function maskNormalValue(fmt, val) {
	var currency_chk = false;
	var maskData = "";
	var j = 0;	// source index
	
	
	var mymaskFmt = fmt;
	var comValue = val;
	
	if ((comValue.length == 0) || 
	    (mymaskFmt.length == 0)){
		return "";
	}
	

	for (var i = 0; i < mymaskFmt.length; i ++ ) {
		
		// Currency
		if(( mymaskFmt.charAt(i) == "$") || 
		   ( mymaskFmt.charAt(i) == "\\")) {
		   
		   	if (i != 0) {
		   		return -1;
		   	}
		   	
		   	maskData = mymaskFmt.charAt(i) + " ";
		   	currency_chk = true;
		}   
		
		// 부호
		else if( mymaskFmt.charAt(i) == "S") {
		    
		    if (currency_chk) {		// 이미 Currency 가 있으면 그 다음에 부호
		    
		    	if (i != 1) {
		    		return -1;
		    	}
		    	
		    	// Value Sign Check
		    	
		    	if (comValue.charAt(0) == "+") {
		    		maskData = maskData + "+";
		    		j++;
		    	}
		    	else if (comValue.charAt(0) == "-") {
		    		maskData = maskData + "-";
		    		j++;
		    	}
		    }
		    
		    else {	// 부호만 처리
		    
		    	if (i != 0) {
		    		return -1;
		    	}
		    	
		    	// Value Sign Check
		    	
		    	if (comValue.charAt(0) == "+") {
		    		maskData = "+";
		    		j++;
		    	}
		    	else if (comValue.charAt(0) == "-") {
		    		maskData = "-";
		    		j++;
		    	}
		    }
		    					
		}
		
		
		// 숫자 (9)
		else if (mymaskFmt.charAt(i) == "9") {
			
			if ((comValue.charAt(j) == null) || (trim(comValue.charAt(j)) == "")){
				maskData = maskData + " ";
			}
			else {
			
				if ( ! isInteger(comValue.charAt(j))) {
					return -1;
				}
			
				maskData = maskData + comValue.charAt(j);
			}
			
			j++;	
			
		}
		
		
		// 숫자 (0)
		else if (mymaskFmt.charAt(i) == "0") {
			
			if ((comValue.charAt(j) == null) || (trim(comValue.charAt(j)) == "")){
				return -1;
			}
			else {
			
			
				if ( ! isInteger(comValue.charAt(j))) {
					return -1;
				}
			
				maskData = maskData + comValue.charAt(j);
			}
			
			j++;	
			
		}
		
		
		
		
		// 문자 (A) : 영어 / 한국어
		else if (mymaskFmt.charAt(i) == "A") {
			
			if ((comValue.charAt(j) == null) || (trim(comValue.charAt(j)) == "")){
				maskData = maskData + " ";
			}
			else {
			
				if (isInteger(comValue.charAt(j))) {
					return -1;
				}
				
				if (chkSpecial(comValue.charAt(j))) {
					return -1;
				}
			
				maskData = maskData + comValue.charAt(j);						
			}
			
			
			j++;
			
		}
		
		
		// 문자 숫자 (X) : 숫자 / 영어 / 한국어
		else if (mymaskFmt.charAt(i) == "X") {
			
			if ((comValue.charAt(j) == null) || (trim(comValue.charAt(j)) == "")){
				maskData = maskData + " ";
			}
			else {
			
				if (chkSpecial(comValue.charAt(j))) {
					return -1;
				}
			
				maskData = maskData + comValue.charAt(j);						
			}
			
			j++;
			
		}
		
		else {
			maskData = maskData + mymaskFmt.charAt(i);
		}
		
		
			
	}
	
	return maskData;	

}



// Normal UnMasking
function unmaskNormal(fmt, el) {
	
	
	var retValue = unmaskNormalValue(fmt, el.value);
	if (retValue == -1) {
		el.value = "";
		el.focus();
	}
	else {
		el.value = retValue;
	}	
	
	return retValue;	

}



// Normal UnMasking
function unmaskNormalValue(fmt, val) {
	
	var IsSpace = true;
	var maskData = "";
	var j = 0;	// source index
	
	
	var mymaskFmt = fmt;
	var comValue = val;
	
	var k = comValue.length - 1;
	
	if ((comValue.length == 0) || 
	    (mymaskFmt.length == 0)){
	    	
	    	return "";
	}
	

	for (var i = 0; i < mymaskFmt.length; i ++ ) {
		
		j = mymaskFmt.length - 1 - i;
		
		
		
		// 숫자 (9)
		if (mymaskFmt.charAt(j) == "9") {
			
			if (comValue.charAt(k) == " ") {
				if (! IsSpace) {
					
					maskData = maskData + comValue.charAt(k);
					
				}
			}
			else {
				IsSpace = false;
				maskData = maskData + comValue.charAt(k);
			}
			
			k--;	
			
		}
		
		// 숫자 (0)
		else if (mymaskFmt.charAt(j) == "0") {
			
			if (comValue.charAt(k) == " ") {
				
				return -1;
		   		
			}
			else {	
				IsSpace = false;
				maskData = maskData + comValue.charAt(k);
			}
			
			k--;	
			
		}
		
		
		// 문자 (A) : 영어 / 한국어
		else if (mymaskFmt.charAt(j) == "A") {

			if (comValue.charAt(k) == " ") {
				if (! IsSpace) {
					
					maskData = maskData + comValue.charAt(k);
					
				}
			}
			else {
				IsSpace = false;
				maskData = maskData + comValue.charAt(k);
			}
			
			k--;	


		}
		
		
		// 문자 숫자 (X) : 숫자 / 영어 / 한국어
		else if (mymaskFmt.charAt(j) == "X") {

			if (comValue.charAt(k) == " ") {
				if (! IsSpace) {
					
					maskData = maskData + comValue.charAt(k);
					
				}
			}
			else {
				IsSpace = false;
				maskData = maskData + comValue.charAt(k);
			}
			
			k--;	
		}



		// 부호
		else if( mymaskFmt.charAt(j) == "S") {
			
		    if(( mymaskFmt.charAt(j-1) == "$") || 
		       ( mymaskFmt.charAt(j-1) == "\\")) {	// 이미 Currency 가 있으면 그 다음에 부호
		    		    
		    	if (j != 1) {
		    		return -1;
		    	}
		    	
		    	// Value Sign Check
		    			    	
		    	if (comValue.charAt(k) == "+") {
		    		maskData = maskData + "+";
		    		k--;
		    	}
		    	else if (comValue.charAt(k) == "-") {
		    		maskData = maskData + "-";
		    		k--;
		    	}
		    }
		    
		    else {	// 부호만 처리
		    
		    	if (j != 0) {
		    		return -1;
		    	}
		    	
		    	// Value Sign Check
		    	if (comValue.charAt(k) == "+") {
		    		maskData = maskData + "+";
		    		k--;
		    	}
		    	else if (comValue.charAt(k) == "-") {
		    		maskData = maskData + "-";
		    		k--;
		    	}
		    	
		    }
		    					
		}
		
			
		// Currency
		else if(( mymaskFmt.charAt(j) == "$") || 
		   ( mymaskFmt.charAt(j) == "\\")) {
		   
		   	if (j != 0) {
		   		return -1;
		   	}
		   	
		   	k--;
		   	
		}   
		
		else {
			
			k--;
		}
		
	}
	
	
	return reverseStr(maskData);
	
}
	
	
function selectBoxSetValueByItem(e, item)
{
	for (var i = 0; i < e.options.length; i++)
	{
		if (e.options[i].value == item) {
			
			e.selectedIndex = i;
			return;    					
		}
	}
}
	
	
function getComponent(obj, tarName) {

try {
 	while((obj.tagName.toLowerCase() != "tr") || (obj.name == null) || (obj.name != "row")) {
 			
 			if (obj.parentElement != null)
   				obj = obj.parentElement;
   			else
   			        break;	
  	}	


  	if (obj.tagName.toLowerCase() != "tr") {
   		return null;
   	}


  	var el = findDynamicElement(obj, tarName);
  	

  	if (el != null) {
  		return el;
  	}	
	
}
catch (e) {
	alert(e.description);
}		
	return null;
	
}


function getRowIndex(obj) {
	try {
 		while((obj.tagName.toLowerCase() != "tr") || (obj.name == null) || (obj.name != "row")) { 			
   			obj = obj.parentElement;
  		}
  	}
  	catch(e) {
  		return -1;
  	}	

  	return obj.rowIndex;
}


function getRow(obj) {
	try {
 		while((obj.tagName.toLowerCase() != "tr") || (obj.name == null) || (obj.name != "row")) { 			
   			obj = obj.parentElement;
  		}
  	}
  	catch(e) {
  		return -1;
  	}	

  	return obj;
}


function findDynamicElement(obj, tarName) {
	

	if ((obj.name != null) && (obj.name == tarName)) {
		
		return obj;		
	}	
	
	
	for (var i = 0; i < obj.childNodes.length; i++) {

		var RetElement = findDynamicElement(obj.childNodes[i], tarName);
		
		if (RetElement != null) {
			return RetElement;
		}
	}
	
	return null;
	
}	


function checkValidity(xmldoc){
	if(xmldoc.parseError == null || xmldoc.parseError.errorCode == 0)
		return true;
	var msg = "("+xmldoc.parseError.errorCode+") " +xmldoc.parseError.reason+"\n";
	msg += "source ("+xmldoc.parseError.linepos+" in "+xmldoc.parseError.line+") :\""+xmldoc.parseError.srcText+"\"";

	alert(msg);
	return false;
}



function OBJDisableSet(obj, flag) {
   try {
   	if (obj.tagName) {
   		if (	obj.tagName.toLowerCase() == "div" ||
   	    		obj.tagName.toLowerCase() == "input" ||
   	    		obj.tagName.toLowerCase() == "select" ||
   	    		obj.tagName.toLowerCase() == "img") {
   	    	
   			obj.disabled = flag;    	
   		}
   	}	
   	
   	if (obj.childNodes) {

   		for(var i = 0; i < obj.childNodes.length; i++) {
   			OBJDisableSet(obj.childNodes[i], flag);
   		}	   		
   	}	
   	
   }	
   catch (e) {   	
   	alert(e.description);	
   }	
	
}




function maskingValue(element, myfmtType, mymaskFmt) {

	var retValue = "";
	
	// 날짜
	if (myfmtType == "date") {
	
		maskDate(element, mymaskFmt);			
	}
	
	// 숫자
	else if (myfmtType == "number") {
		
		if (mymaskFmt == null) {
			maskNumber(element);
		}
		else {
			if (valueverify(element, mymaskFmt)) {
				maskNumber(element, mymaskFmt);
			}
		}
						
	}
	
	// 일반 String
	else if (myfmtType == "normal") {
		
		maskNormal(mymaskFmt, element);
		
	}
	else {
	}
				
}



function unmaskingValue(element, myfmtType, mymaskFmt) {

	var retValue = "";
	
	// 날짜
	if (myfmtType == "date") {
	
		unmaskDate(element);
	
	}
	
	// 숫자
	else if (myfmtType == "number") {
		
		unmaskNumber(element);
		
	}
	
	// 일반 String
	else if (myfmtType == "normal") {
		
		unmaskNormal(mymaskFmt, element);
		
	}
	else {
	}
	
	element.focus();
	element.select();
				
}


function getMsgString(code) {
	var str = Defaults.getMessage(code);
	return str;
}

function alertMessage(code) {
	alert(Defaults.getMessage(code));
}

function calcdate(pdate, fmt, day){
	try {
		var strDate = pdate;
		
		var temp = fmtDateToDateMask(unmaskDateValue(pdate), fmt);
		
		var ddate = new Date((Date.parse(temp.substring(5,7) +"/"+
						 temp.substring(8,10)+"/"+
						 temp.substring(0,4) ) 
						 + (86400000*day)));
				
		var day = ddate.getDate()+"";	
		var month = ddate.getMonth()+1;
		var sMonth = month+"";
		if(day.length == 1) day = "0"+day+"";
		if(sMonth.length == 1) sMonth = "0"+sMonth+"";
		
		strDate = dateToFmtDateMask(ddate.getYear()+trim(sMonth)+trim(day), fmt);
		
		return strDate;
	}
	catch(e) {
		alert(e.description);
	}	
	
	return strDate;
}

function getCodeFXValue(query_string,param,code,amount) {

	try{
		var text = "<prms>";
		for (var k=0 ; k<param.length ; k++) {
			if(param[k]!="")
				text += "<p>"+param[k]+"</p>";	
		}
		text += "</prms>";
		
		var MSXML_DOMID = "Msxml2.DOMDocument";
		
		var temp = new ActiveXObject(MSXML_DOMID);
		var query = new ActiveXObject(MSXML_DOMID);
		query.loadXML("<q id='SELECT0'><stmt file='xql/Brn/BN/CM/cbcode.xml' sql-id='"+query_string+"'/>"+text.toLowerCase()+"</q>");
		var cbArgs = temp.createElement("code-browser");
		var arg = temp.createElement("a");
		arg.setAttribute("lookup-method", "contains");
		arg.setAttribute("ignore-case", "false");
		arg.setAttribute("name", "CODE");
		arg.text = code;
		cbArgs.appendChild(arg);
		var env = new Envelop();

		env.addArgument(query.documentElement.cloneNode(true));
		env.addArgument(cbArgs);
		var req = new Requester();
		req.async = false;
		req.addArgument("select", env);
		if(req.perform()){
			var doc = req.http.responseXML;
			var row = doc.selectSingleNode("//recordset[@id='SELECT0']/row");
			if(row != null){
				var ret_arr = new Array(2);

				var mappingDate = row.selectSingleNode("MAPPINGDATE").text ;
				var exchBasic = row.selectSingleNode("EXCH_BASIC").text;
				var lclCcy = row.selectSingleNode("LCL_CCY").text;
				var fixCcy = row.selectSingleNode("FIX_CCY").text;
				var fxRate = row.selectSingleNode("FX_RATE").text;
				var fxUnit = row.selectSingleNode("FX_UNIT").text;
				var inCCY = code;
				var retAmount =0;
				if(inCCY==lclCcy)
					retAmount = amount;
				else {
					if(fixCcy=="F")
						retAmount = (amount * fxRate) / fxUnit;
					else
						if(fixCcy=="D") retAmount = (amount / fxRate) * fxUnit;
				}	
				ret_arr[0] =  code;
				ret_arr[1] =  retAmount;
				return ret_arr;
			}
		}

	}catch(e) {
		alert("getCodeFXValue==>"+e.description);
	}
}