/**
 * <pre>
 * ÆÄÀÏ¸í : util.js
 * ¼³  ¸í : JSP¿¡¼­ °øÅëÀ¸·Î »ç¿ëµÇ´Â date/String/validation check¿Í °ü·ÃµÈ 
 *			JavaScript¸¦ Á¦°øÇÑ´Ù.
 * ÀÛ¼ºÀÚ : jupiter
 * ÀÛ¼ºÀÏ : 2002.04.15
 * ºÐ  ·ù : °øÅë ¾÷¹«
 * ¹ö  Àü : v1.0
 *
 * ¸Þ¼Òµå ¸ñ·Ï :
 *
 * ¼öÁ¤ÀÌ·Â :	2002/04/15  create
 *
 * ±âÅ¸»çÇ× :
 */
 
//===================================================================
//	DateUtil
//===================================================================
// DateCmp(date1, date2)
// date_Format(ymd, formatmask)
// date_FormatYM(ym, formatmask)
// format_YYYYMM(object)
// format_YYYYMMDD(object)
// getCurrentTime()
// getDay()
// getDayInterval(time1,time2)
// getHour()
// getHourInterval(time1,time2)
// getMMDD( separator)
// getMonth()
// getMonthInterval(time1,time2)
// getRelativeTime(y,m,d,h)
// getYear()
// getYYYYMM( separator)
// getYYYYMMDD( separator)
// isDate(y,m,d)
// isDateYM(ym)
// isDateYMD(ymd)
// isDateYYYY(yyyy)
// isDateYYYYMM( yyyymm )
// isFormatDate(ymd, formatmask)
// isFormatDateYM(ym, formatmask)
// isFutureTime(time)
// isPastTime(time)
// isValidDay(yyyy, mm, dd)
// isValidHour(hh)
// isValidMin(mi)
// isValidMonth(mm)
// isValidTime(time)
// isValidTimeFormat(time)
// isYM(y,m)
// isYunNyun(y)
// shiftTime(time,y,m,d,h)
// toTimeObject(time)
// toTimeString(date)
// offMoneyFormat( obj ) 
// onMoneyFormat( obj )
// cala_day(year, month, day)
// cala_weekday( x_nMonth, x_nDay, x_nYear)
// day_display(x_nDayOfWeek)

/////////////////////////////////////////////////////
function isValidMonth(mm) {
/////////////////////////////////////////////////////
//À¯È¿ÇÑ(Á¸ÀçÇÏ´Â) ¿ù(êÅ)ÀÎÁö Ã¼Å©
    var m = parseInt(mm,10);
    return (m >= 1 && m <= 12);
}


/////////////////////////////////////////////////////
function isValidDay(yyyy, mm, dd) {
/////////////////////////////////////////////////////
//À¯È¿ÇÑ(Á¸ÀçÇÏ´Â) ÀÏ(ìí)ÀÎÁö Ã¼Å©
    var m = parseInt(mm,10) - 1;
    var d = parseInt(dd,10);

    var end = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    if ((yyyy % 4 == 0 && yyyy % 100 != 0) || yyyy % 400 == 0) {
        end[1] = 29;
    }

    return (d >= 1 && d <= end[m]);
}

/////////////////////////////////////////////////////
function getCurrentTime() {
/////////////////////////////////////////////////////
// ÇöÀç ½Ã°¢À» Time Çü½ÄÀ¸·Î ¸®ÅÏ
    return toTimeString(new Date());
}

/////////////////////////////////////////////////////
function getYear() {
/////////////////////////////////////////////////////
// ÇöÀç Ò´À» YYYYÇü½ÄÀ¸·Î ¸®ÅÏ
    return getCurrentTime().substr(0,4);
}

/////////////////////////////////////////////////////
function getMonth() {
/////////////////////////////////////////////////////
// ÇöÀç êÅÀ» MMÇü½ÄÀ¸·Î ¸®ÅÏ
    return getCurrentTime().substr(4,2);
}

/////////////////////////////////////////////////////
function getDay() {
/////////////////////////////////////////////////////
// ÇöÀç ìíÀ» DDÇü½ÄÀ¸·Î ¸®ÅÏ
    return getCurrentTime().substr(6,2);
}

/////////////////////////////////////////////////////
function getYYYYMM( separator) {
/////////////////////////////////////////////////////
// ÇöÀç Ò´êÅÀ» separator ·Î ±¸ºÐÇÏ¿© ¸®ÅÏ
    return getYear() + separator + getMonth();
}


/////////////////////////////////////////////////////
function getMMDD( separator) {
/////////////////////////////////////////////////////
// ÇöÀç êÅìíÀ» separator ·Î ±¸ºÐÇÏ¿© ¸®ÅÏ
    return getMonth() + separator + getDay();
}


/////////////////////////////////////////////////////
function getYYYYMMDD( separator) {
/////////////////////////////////////////////////////
// ÇöÀç Ò´êÅìíÀ» separator ·Î ±¸ºÐÇÏ¿© ¸®ÅÏ
    return getYear() + separator + getMonth() + separator + getDay();
}

/////////////////////////////////////////////////////
function getHour() {
/////////////////////////////////////////////////////
// ÇöÀç ãÁ¸¦ HHÇü½ÄÀ¸·Î ¸®ÅÏ
    return getCurrentTime().substr(8,2);
}

/////////////////////////////////////////////////////
function format_YYYYMM(object) {
/////////////////////////////////////////////////////
/**
 * ¿¬¿ù(YYYYMM)ÀÇ À¯È¿¼ºÀ» Ã¼Å©ÇÏ°í Ç¥ÁØ ³¯Â¥ Æ÷¸Ë (YYYY/MM) À¸·Î º¯È¯ÇÏ¿© ¸®ÅÏ
 * (ÁÖÀÇ : ÀÌ ÇÔ¼öÀÇ ÆÄ¶ó¹ÌÅÍ´Â °´Ã¼ÀÓ (input object))
 */
    var num, year, month;
    num=object.value;   
    while (num.search("/") != -1) {	
		num = num.replace("/","");
	}
	if (isNaN(num)) {        
	    window.alert("¼ýÀÚ·Î¸¸ ÀÛ¼ºÇÏ¼Å¾ß ÇÕ´Ï´Ù");
		object.focus();
		return "";
	}		
    if( num != 0 && (num.length >= 5 && num.length <= 6)) {
        year = num.substring(0,4);
        month = num.substring(4);
        if (isValidMonth(month)==false){
            alert("À¯È¿ÇÏÁö ¾ÊÀº ¿ùµµÀÔ´Ï´Ù.");
         	object.focus();
         	return "";
        }
        if (num.length==6) {
        	num = year+"/"+month;
        } else if (num.length==5) {	
        	num = year+"/"+"0"+month;
        }	
    } else {
        num = "";
		window.alert("³â¿ù ÀÔ·ÂÇü½Ä ¿À·ùÀÔ´Ï´Ù.");
		object.focus();
        return "";
    }	
    return num;
}

/////////////////////////////////////////////////////
function format_YYYYMMDD(object) {
/////////////////////////////////////////////////////
// ¿¬¿ùÀÏ(YYYYMMDD)ÀÇ À¯È¿¼ºÀ» Ã¼Å©ÇÏ°í Ç¥ÁØ ³¯Â¥ Æ÷¸Ë (YYYY/MM/DD) À¸·Î º¯È¯ÇÏ¿© ¸®ÅÏ (ÁÖÀÇ : ÀÌ ÇÔ¼öÀÇ ÆÄ¶ó¹ÌÅÍ´Â °´Ã¼ÀÓ (input object))

    var num, year, month, day;
    num=object.value;
    
    while (num.search("/") != -1){	
		    num = num.replace("/","");
		}
		
		if (isNaN(num)) {        
		    window.alert("¼ýÀÚ·Î¸¸ ÀÛ¼ºÇÏ¼Å¾ß ÇÕ´Ï´Ù");
		    object.focus();
		    return "";
		}
		 
    if( num != 0 && num.length == 8 ) {
        year = num.substring( 0, 4 );
        month = num.substring( 4, 6 );  
        day = num.substring(6);
		if(isValidDay(year,month,day)==false) {
	        num = "";
	        window.alert("À¯È¿ÇÏÁö ¾Ê´Â ÀÏÀÚÀÔ´Ï´Ù.");
    	    object.focus();
        	return "";
		}        		
        num = year+"/"+month + "/" + day;
    } 
    else {
        num = "";
        window.alert("³¯Â¥ ÀÔ·ÂÇü½Ä ¿À·ùÀÔ´Ï´Ù.");
        object.focus();
        return "";
    }	
    return num;
}

/////////////////////////////////////////////////////
function isDate(y,m,d)
/////////////////////////////////////////////////////
{
	var yy,mm,dd;

//	if (!isNumber(y) || !isNumber(m) || !isNumber(d)) return false;
	yy = parseInt(y, 10);
	mm = parseInt(m, 10);
	dd = parseInt(d, 10);

	if (yy < 1900 || yy > 2200 ) return false;

	if (mm < 1 || mm > 12) return false;
	if (dd < 1) return false;
	if (mm == 1 || mm == 3 || mm == 5 || mm == 7 || mm == 8 || mm==10 || mm==12)
	{
		if (dd > 31) return false;
	}
	else if (mm==2)
	{
		if (isYunNyun(yy))
		{
			if (dd > 29) return false;
		}
		else {
			if (dd > 28) return false;
		}

	}
	else if (dd > 30) return false;
	return true;
}

/////////////////////////////////////////////////////
function isYM(y,m){
/////////////////////////////////////////////////////
// ³¯Â¥ÀÎÁö Ã¼Å© (³â, ¿ù)

	var yy,mm;
	if (!isNumber(y) || !isNumber(m)) return false;
	yy = parseInt(y, 10);
	mm = parseInt(m, 10);

	if (yy < 1900 ) return false;

	if (mm < 1 || mm > 12) return false;
	
	return true;
}

//=============================================================================
// Function  : setDateFormat(obj, index, obj2)
// Parameter : Obj     ÇöÀçÀÇ ÀÔ·Â °´Ã¼ 			  
//			   index   °´Ã¼ÀÇ ÀÎÅØ½º 
//			   obj2	   Å¸°Ù°´Ã¼ 
// Return    : NONE
// ±â´É      : ³¯Â¥formatÀ» check  ÇÏ°í µÎ¹øÂ° °´Ã¼ÀÇ °ªÀ¸·Î ÇÒ´çÇÑ´Ù.
//			   obj[index]ÀÇ °ªÀ» yyyy/mm/dd Çü½ÄÀ¸·Î º¯°æÇÏ°í ¿ø·¡ ÀÔ·Â°ªÀº obj2[index]ÀÇ value·Î ÇÒ´çÇÑ´Ù.
//=============================================================================
function setDateFormat(obj, index, obj2) {
    val = delChar(obj.value, '/'); //comma filtering
    obj.value = val;
    
    a = isNumber(obj);
    var no = "";
    if (a == 1) {        
        if (obj2.length == "undefined" || obj2.length == null) {
            obj2.value = "";
        } else {
            obj2[index].value = "";
        }        
        return;
    }

    val = obj.value;
    len = val.length;
    
    if (len == 6) {
		no = format_YYYYMM(obj);  
	} else if (len == 8) {
		no = format_YYYYMMDD(obj);  
	}
								
	if (no == "") {
		obj.value = no;
	}
												
	if (obj2.length == "undefined" || obj2.length == null) {
		obj2.value = obj.value;
	} else {
		obj2[index].value = obj.value;
	}
	obj.value = no;
}


/////////////////////////////////////////////////////
function date_FormatYM(ym, formatmask){
/////////////////////////////////////////////////////
	// ³¯Â¥ÀÎÁö Ã¼Å© (³â, ¿ù)
	
 	var fcount = formatmask.length;
 	var len = trim(ym).length;
	var rv = "";
	ym = trim(ym);

	if (len == 6)
	{
		if (ym.substring(4, 5) == "/")
		{
			return  ym;
		}

		y = ym.substring(0, 4);
		m = ym.substring(4, 6);
	}
	else if (len == 7)
	{
		if (ym.substring(4, 5) != "/")
		{
			return  -1;
		}
		y = ym.substring(0, 4);
		m = ym.substring(5, 7);
	}
	else 
	{
		return ym;	
	}
	
	var ym_concat = y + m;
	var ret_ = -1;
	
	if((fcount == 7) && (formatmask == "????/??"))
	{
		if (isDateYM(ym_concat))
		{
			ret_ = y + "/" + m;
		}
		else
		{
			ret_ = -1;
		}
	}
	else
	{
		alert('Format["????/??"] Çü½ÄÀ» ¹Ù¸£°Ô ÀÔ·ÂÇÏ½Ê½Ã¿ä.');
		ret_ = -1;	
	}
	
	return ret_;
}

/////////////////////////////////////////////////////
function isDateYM(ym){
/////////////////////////////////////////////////////
	var yy,mm;
	var y = "";
	var m = "";
	ym = trim(ym);
	y = ym.substring(0, 4);
	m = ym.substring(4, 6);

	if ( isYM(y, m) == true )
	{
		return true;
	}
	else
	{
		return false;	
	}
}

/////////////////////////////////////////////////////
function isYunNyun(y){
/////////////////////////////////////////////////////
// ¿î³âÀÎÁö check.
	if ( (y % 4) == 0 )
	{
		if ((y % 100) != 0) return true;
		if ((y % 400) == 0) return true;
	}
	return false;
}

/////////////////////////////////////////////////////
function date_Format(ymd, formatmask){
/////////////////////////////////////////////////////
//  "20020204"ÀÇ ³¯Â¥ ¹®ÀÚ¿­¿¡ ´ëÇÑ formattingÇÏ±â. 
 	var fcount = formatmask.length;
 	var len = trim(ymd).length;
	var rv = "";
	ymd = trim(ymd);

	if (len == 8)
	{
		if (ymd.substring(4, 5) == "/" )
		{
			return  ymd;
		}
		y = ymd.substring(0, 4);
		m = ymd.substring(4, 6);
		d = ymd.substring(6, 8);
	}
	else if (len == 9)
	{
		if (ymd.substring(4, 5) == "/")
		{
			if (ymd.substring(7, 8) == "/" )
			{
				return  ymd;
			}
			else		//yyyy/mmdd Çü½Ä
			{
				y = ymd.substring(0, 4);
				m = ymd.substring(5, 7);
				d = ymd.substring(7, 9);
			}
		}
		else
		{
			return  -1;
		}
	}
	else if (len == 10)
	{
		if (ymd.substring(4, 5) != "/" || ymd.substring(7, 8) != "/" )
		{
			return  -1;
		}
		y = ymd.substring(0, 4);
		m = ymd.substring(5, 7);
		d = ymd.substring(8, 10);
	}
	else 
	{
		return ymd;	
	}
	
	var ymd_concat = y + m + d;
	var ret_ = -1;
	
	if((fcount == 10) && (formatmask == "????/??/??"))
	{
		if (isDateYMD(ymd_concat))
		{
			ret_ = y + "/" + m + "/" + d;
		}
		else
		{
			ret_ = -1;
		}
	}
	else
	{
		alert('Format["????/??/??"] Çü½ÄÀ» ¹Ù¸£°Ô ÀÔ·ÂÇÏ½Ê½Ã¿ä.');
		ret_ = -1;	
	}

	return ret_;
}

/////////////////////////////////////////////////////
function isDateYMD(ymd){
/////////////////////////////////////////////////////
// "20020204"ÀÇ ³¯Â¥ ¹®ÀÚ¿­¿¡ ´ëÇÑ formattingÇÏ±â. 
	var yy,mm,dd;
	var y = "";
	var m = "";
	var d = "";
	ymd = trim(ymd);
	y = ymd.substring(0, 4);
	m = ymd.substring(4, 6);
	d = ymd.substring(6, 8);

	if ( isDate(y, m, d) == true )
	{
		return true;
	}
	else
	{
		return false;	
	}
}

/////////////////////////////////////////////////////
function isDateYYYY(yyyy){
/////////////////////////////////////////////////////
//³âµµ Ã¼Å©
	var yyyymmdd = yyyy + "0101";
	return isDateYMD(yyyymmdd);
}
/////////////////////////////////////////////////////
function isDateYYYYMM( yyyymm ){
/////////////////////////////////////////////////////
//³â-¿ù Ã¼Å©

	var returnValue = false;
	var len = trim(yyyymm).length;
	yyyymm = trim(yyyymm);
	
	if( len == 7 )
	{
		if( yyyymm.substring(4, 5) == "/" )
		{
			returnValue = isYM( yyyymm.substring(0, 4), yyyymm.substring(5, 7) );
		}
	}
	else if( len == 6 )
	{
		returnValue = isYM( yyyymm.substring(0, 4), yyyymm.substring(4, 6) );
	}

	return returnValue;
}

/////////////////////////////////////////////////////
function isValidHour(hh) {
/////////////////////////////////////////////////////
// À¯È¿ÇÑ(Á¸ÀçÇÏ´Â) ½Ã(ãÁ)ÀÎÁö Ã¼Å©
    var h = parseInt(hh,10);
    return (h >= 1 && h <= 24);
}

/////////////////////////////////////////////////////
function isValidMin(mi) {
/////////////////////////////////////////////////////
// À¯È¿ÇÑ(Á¸ÀçÇÏ´Â) ºÐ(ÝÂ)ÀÎÁö Ã¼Å©
    var m = parseInt(mi,10);
    return (m >= 1 && m <= 60);
}

/////////////////////////////////////////////////////
function isValidTimeFormat(time) {
/////////////////////////////////////////////////////
// Time Çü½ÄÀÎÁö Ã¼Å©(´À½¼ÇÑ Ã¼Å©)
    return (!isNaN(time) && time.length == 12);
}

/////////////////////////////////////////////////////
function isValidTime(time) {
/////////////////////////////////////////////////////
// À¯È¿ÇÏ´Â(Á¸ÀçÇÏ´Â) Time ÀÎÁö Ã¼Å©	³â/¿ù/ÀÏ ¸¸À»(½Ã°£,ºÐ Á¦¿Ü) °Ë»ç. 
    var year  = time.substring(0,4);
    var month = time.substring(4,6);
    var day   = time.substring(6,8);
    //var hour  = time.substring(8,10);
    //var min   = time.substring(10,12);

    if (parseInt(year,10) >= 1900  && isValidMonth(month) &&isValidDay(year,month,day)){
     //&& isValidHour(hour)   && isValidMin(min)) {
        return true;
    }
    return false;
}

/////////////////////////////////////////////////////
function toTimeObject(time) { //parseTime(time)
/////////////////////////////////////////////////////
// Time ½ºÆ®¸µÀ» ÀÚ¹Ù½ºÅ©¸³Æ® Date °´Ã¼·Î º¯È¯  parameter time: Time Çü½ÄÀÇ String
    var year  = time.substr(0,4);
    var month = time.substr(4,2) - 1; // 1¿ù=0,12¿ù=11
    var day   = time.substr(6,2);
    var hour  = time.substr(8,2);
    var min   = time.substr(10,2);

    return new Date(year,month,day,hour,min);
}



/////////////////////////////////////////////////////
function toTimeString(date) { //formatTime(date)
/////////////////////////////////////////////////////
// ÀÚ¹Ù½ºÅ©¸³Æ® Date °´Ã¼¸¦ Time ½ºÆ®¸µÀ¸·Î º¯È¯ 
// parameter date: JavaScript Date Object
    var year  = date.getFullYear();
    var month = date.getMonth() + 1; // 1¿ù=0,12¿ù=11ÀÌ¹Ç·Î 1 ´õÇÔ
    var day   = date.getDate();
    var hour  = date.getHours();
    var min   = date.getMinutes();

    if (("" + month).length == 1) { month = "0" + month; }
    if (("" + day).length   == 1) { day   = "0" + day;   }
    if (("" + hour).length  == 1) { hour  = "0" + hour;  }
    if (("" + min).length   == 1) { min   = "0" + min;   }

    return ("" + year + month + day + hour + min)
}

/////////////////////////////////////////////////////
function isFutureTime(time) {
/////////////////////////////////////////////////////
// TimeÀÌ ÇöÀç½Ã°¢ ÀÌÈÄ(¹Ì·¡)ÀÎÁö Ã¼Å©
    return (toTimeObject(time) > new Date());
}

/////////////////////////////////////////////////////
function isPastTime(time) {
/////////////////////////////////////////////////////
// TimeÀÌ ÇöÀç½Ã°¢ ÀÌÀü(°ú°Å)ÀÎÁö Ã¼Å©
    return (toTimeObject(time) < new Date());
}

/////////////////////////////////////////////////////
function shiftTime(time,y,m,d,h) { //moveTime(time,y,m,d,h)
/////////////////////////////////////////////////////
// ÁÖ¾îÁø Time °ú y³â m¿ù dÀÏ h½Ã Â÷ÀÌ³ª´Â TimeÀ» ¸®ÅÏ
    var date = toTimeObject(time);
    date.setFullYear(date.getFullYear() + y); //y³âÀ» ´õÇÔ
    date.setMonth(date.getMonth() + m);       //m¿ùÀ» ´õÇÔ
    date.setDate(date.getDate() + d);         //dÀÏÀ» ´õÇÔ
    date.setHours(date.getHours() + h);       //h½Ã¸¦ ´õÇÔ
    return toTimeString(date);
}

/////////////////////////////////////////////////////
function getMonthInterval(time1,time2) { //measureMonthInterval(time1,time2)
/////////////////////////////////////////////////////
// µÎ TimeÀÌ ¸î °³¿ù Â÷ÀÌ³ª´ÂÁö ±¸ÇÔ
    var date1 = toTimeObject(time1);
    var date2 = toTimeObject(time2);

    var years  = date2.getFullYear() - date1.getFullYear();
    var months = date2.getMonth() - date1.getMonth();
    var days   = date2.getDate() - date1.getDate();

    return (years * 12 + months + (days >= 0 ? 0 : -1) );
}

/////////////////////////////////////////////////////
function getDayInterval(time1,time2) {
/////////////////////////////////////////////////////
// µÎ TimeÀÌ ¸çÄ¥ Â÷ÀÌ³ª´ÂÁö ±¸ÇÔ
    var date1 = toTimeObject(time1);
    var date2 = toTimeObject(time2);
    var day   = 1000 * 3600 * 24; //24½Ã°£

    return parseInt((date2 - date1) / day, 10) + 1;
}

/////////////////////////////////////////////////////
function getHourInterval(time1,time2) {
/////////////////////////////////////////////////////
// µÎ TimeÀÌ ¸î ½Ã°£ Â÷ÀÌ³ª´ÂÁö ±¸ÇÔ
    var date1 = toTimeObject(time1);
    var date2 = toTimeObject(time2);
    var hour  = 1000 * 3600; //1½Ã°£

    return parseInt((date2 - date1) / hour, 10);
}

/////////////////////////////////////////////////////
function getRelativeTime(y,m,d,h) {
/////////////////////////////////////////////////////
// ÇöÀç ½Ã°¢°ú y³â m¿ù dÀÏ h½Ã Â÷ÀÌ³ª´Â TimeÀ» ¸®ÅÏ
    return shiftTime(getCurrentTime(),y,m,d,h);
}

/////////////////////////////////////////////////////
function isFormatDate(ymd, formatmask){
/////////////////////////////////////////////////////
//9999/99/99 °¡ ³¯Â¥ÀÎÁö
 	var len_ymd = trim(ymd).length;
 	var fcount = formatmask.length;

	if (len_ymd != 10)
	{
		return -1;	
	}
	
	if((fcount == 10) && (formatmask == "????/??/??"))
	{
		if (ymd.substring(4, 5) != "/" || ymd.substring(7, 8) != "/" )
		{
			return  -1;
		}
		y = ymd.substring(0, 4);
		m = ymd.substring(5, 7);
		d = ymd.substring(8, 10);

		var ymd_concat = y + m + d;
		var ret_value = -1;

		if (isDateYMD(ymd_concat))
		{
			ret_value = y + "/" + m + "/" + d;
		}
		else
		{
			ret_value = -1;
		}
	}
	else
	{
		alert('Format["????/??/??"] Çü½ÄÀ» ¹Ù¸£°Ô ÀÔ·ÂÇÏ½Ê½Ã¿ä.');
		ret_value = -1;	
	}
	
	return ret_value;
}

/////////////////////////////////////////////////////
function isFormatDateYM(ym, formatmask) {
/////////////////////////////////////////////////////
//9999/99 °¡ ³¯Â¥ÀÎÁö
 	var len_ym = trim(ym).length;
 	var fcount = formatmask.length;

	if (len_ym != 7)
	{
		return -1;	
	}
	
	if((fcount == 7) && (formatmask == "????/??"))
	{
		if (ym.substring(4, 5) != "/")
		{
			return  -1;
		}
		y = ym.substring(0, 4);
		m = ym.substring(5, 7);

		var ymd_concat = y + m + "01";
		var ret_value = -1;

		if (isDateYMD(ymd_concat))
		{
			ret_value = y + "/" + m;
		}
		else
		{
			ret_value = -1;
		}
	}
	else
	{
		alert('Format["????/??"] Çü½ÄÀ» ¹Ù¸£°Ô ÀÔ·ÂÇÏ½Ê½Ã¿ä.');
		ret_value = -1;	
	}
	
	return ret_value;

}



/////////////////////////////////////////////////////
function DateCmp(date1, date2){
/////////////////////////////////////////////////////
//³¯ÀÚ Å©±â ºñ±³ ÀÔ·ÂÇü½Ä yyyy/mm/dd ¶Ç´Â yyyymmdd
//ret = 0  if date1 == date2
//ret = 1  if date1 >  date2
//ret = -1 if date1 <  date2
	var s_date1 = date1 + "";	
	var s_date2 = date2 + "";	
	var ret = -2;
	
	if (s_date1 == s_date2)
	{
		ret = 0;
	}
	else if (s_date1 > s_date2)
	{
		ret = 1;
	}
	else if (s_date1 < s_date2)
	{
		ret = -1;
	}
	
	if (ret == -2)
	{
		alert("³¯ÀÚ ºñ±³°¡ Àß¸ø µÇ¾ú½À´Ï´Ù.");
	}
	
	return ret;
}


//===================================================================
//	NumericUtil
//===================================================================
// Format_Comma(newValue_1)
// Format_Comma_Float( p_newValue, p_n )
// Format_Decimal(number, n){
// Format_Float( newValue_1, n)
// Format_Float_Sign(in_new, n)
// isFloat(a,Min,Max){
// isNumber(a,Min,Max) {
// parseFloatComma( newValue )
// parseIntComma(newValue)
// _float_add(newValue_1, newValue_2, scale)
// _float_multiply(newValue_1, newValue_2, scale)
// _float_subtract(newValue_1, newValue_2, scale)

/////////////////////////////////////////////////////
function isNumber(a,Min,Max) {
/////////////////////////////////////////////////////
// 	ÃÖ¼Ò°ª°ú ÃÖ´ë°ª »çÀÌ¿¡ ¼ÓÇÏ´Â ¼ýÀÚ°ªÀÎ°¡? (3ÀÚ¸® ±¸ºÐÀÚ¸¦ °¡Áö´Â ¼ýÀÚµµ Áö¿øÇÑ´Ù.)
//	comma format ¼ýÀÚ ¶Ç´Â ±×³É ¼ýÀÚ
		a = delChar(a, ','); //comma filtering
	    a = trim(a);
		
	    if (isEmpty(a)) return false;
	    
	    for (i=0;i< a.length; i++)
	    {
	     	if (a.substring(i,i+1) < '0' || a.substring(i,i+1) > '9'){
	        	return false;
	     	}
	    }
		
	    if (Min != null && a < Min) return false;
	    if (Max != null && a > Max) return false;
		
		
		return true;
}		


function isFloat(a,Min,Max){
	// ÃÖ¼Ò°ª°ú ÃÖ´ë°ª »çÀÌ¿¡ ¼ÓÇÏ´Â ¼ýÀÚ°ªÀÎ°¡? (¼Ò¼öÁ¡)
	//comma format ¼ýÀÚ ¶Ç´Â ±×³É ¼ýÀÚ
	temp_a = a;
	a = trim(delChar(a, ',')); //comma filtering
	a = trim(delChar(a, '.')); //period filtering
    a = trim(a);
    
    if (isEmpty(a)) return false;
	
	for (i=0;i< a.length; i++)
    {
		if (a.substring(i,i+1) < '0' || a.substring(i,i+1) > '9')
 		return false;
    }
	
	if (Min != null && parseFloatComma(temp_a) < Min) return false;
	if (Max != null && parseFloatComma(temp_a) > Max) return false;
	return true;
        
}

/////////////////////////////////////////////////////
function Format_Float( newValue_1, n){
/////////////////////////////////////////////////////

	var newValue = newValue_1 + ""; //¼ýÀÚÀÎ °æ¿ì ¹®ÀÚ¿­·Î º¯È¯
	var Fwlen;
	var Bklen;
	var ch = "";
	var j = 1;
	var Value = "";
	var FwformatValue = "";
	var BkformatValue = "";
	var FwnewValue = "";
	var BknewValue = "";
	var r;
	var k;
	var tot_len = 0;
	var ret_value = "";
	
	//comma(,) Á¦°Å
	newValue = delChar(newValue, ',');
	
	tot_len = newValue.length;	//ÃÑ ±æÀÌ
        
	// ¼Ò¼öÁ¡±îÁö...
    r = trim(newValue).indexOf(".");      
                
    // ¼Ò¼öÁ¡ÀÌ ¾øÀ»°æ¿ì
    if (r < 0)
    {	        
		//Á¦°ÅµÈ ¹®ÀÚ¿­ ±æÀÌ
    	FwnewValue = trim(newValue);
		Fwlen = FwnewValue.length;
		
		for (i = Fwlen; i > 0; i--)
		{
			ch = FwnewValue.substring(i - 1, i);
			FwformatValue = ch + FwformatValue;
	
			if ((j % 3) == 0 && i > 1)
			{
				FwformatValue = "," + FwformatValue;	//comma format 999,999
			}
			
			j++;
		}
		
	}
	//  ¼Ò¼öÁ¡ÀÌÈÄ...
	else
    {
		//¼Ò¼öÁ¡±îÁö Á¦°ÅµÈ ¹®ÀÚ¿­ ±æÀÌ
        FwnewValue = trim(newValue.substring(0,r));
		Fwlen = FwnewValue.length;
		
		for (i = Fwlen; i > 0; i--)
		{
			ch = FwnewValue.substring(i - 1, i);
			FwformatValue = ch + FwformatValue;
	
			if ((j % 3) == 0 && i > 1)
			{
				FwformatValue = "," + FwformatValue;		//comma format 999,999
			}
			
			j++;
		}
		
		// ¶Ç ¼Ò¼öÁ¡ÀÌÈÄ ¹«½Ã
        BknewValue = trim(newValue.substring(r + 1, tot_len));        
    	rr = trim(BknewValue).indexOf(".");      
		if (!(rr < 0))
		{
        	BknewValue = trim(BknewValue.substring(0,rr));
		}
		Bklen = BknewValue.length;
        	        			
		if ( Bklen > n)
		{
			BknewValue =  trim(BknewValue.substring(0,n));
		}

	}
	
	if (FwformatValue.length == 0)
	{
		FwformatValue = "0";	
	}
	
	if ( n == 0)
	{
		ret_value = FwformatValue;
	}
	else
	{
		ret_value = FwformatValue + "." + rpad(BknewValue, n, '0'); //¼Ò¼öÁ¡  n ÀÚ¸® Æ÷¸Ë 000
	}
	
	return ret_value;
}



/////////////////////////////////////////////////////
function Format_Float_Sign(in_new, n){
/////////////////////////////////////////////////////
	var newValue = in_new + ""; //¼ýÀÚÀÎ °æ¿ì ¹®ÀÚ¿­·Î º¯È¯
	var ret = "";
	
	//comma(,) Á¦°Å
	newValue = delChar(newValue, ',');
	
	tot_len = newValue.length;	//ÃÑ ±æÀÌ

	// sign (-) ±¸º°
    r_minus = trim(newValue).indexOf("-");      
	// sign (+) ±¸º°
    r_plus = trim(newValue).indexOf("+");      
	
	if (parseFloatComma(newValue) == 0.0){
		//0ÀÏ °æ¿ì	
		ret = Format_Float(newValue, n) 	//no sign
	} else if (r_minus == 0) {
		// (-) signÀÌ Ã³À½¿¡ ÀÖÀ» °æ¿ì
		newValue = newValue.substring(1, tot_len);
		ret = "-" + Format_Float(newValue, n) 	//- sign 
	} else if (r_plus == 0) {
		newValue = newValue.substring(1, tot_len);
		ret = "+" + Format_Float(newValue, n) 	//+ sign
	} else {
		ret = "+" + Format_Float(newValue , n) 	//+ sign
	}

	return ret;

}



/////////////////////////////////////////////////////
function Format_Decimal(number, n){
/////////////////////////////////////////////////////
// ½Ç¼öÇü ¼Ò¼öÁ¡ ÀÌÇÏ nÀÚ¸®±îÁö Â¥¸£±â(¹Ý¿Ã¸²)
	bits = "1";
	
	if (n == 0) {
		return Format_Float(Math.round(number), n);
	} 
	
	for (i=1; i<=n; i++){
		bits = bits + "0";
	}
	
	bits = parseInt(bits);
	
	result = parseFloat(Math.round(number * bits)/bits);
	
	result = Format_Float(result, n);
	
	return result;
}


/////////////////////////////////////////////////////
function Format_Comma(newValue_1){
/////////////////////////////////////////////////////
//3ÀÚ¸® ´ÜÀ§·Î comma Âï±â
	
	var newValue = newValue_1 + ""; //¼ýÀÚÀÎ °æ¿ì ¹®ÀÚ¿­·Î º¯È¯
	var len = newValue.length;
	var ch = "";
	var j = 1;
	var formatValue = "";
	var newVal1 = "";
	var newVal11 = "";
	var ch22=0;
	var ch11=0;

	//comma(,) Á¦°Å
	newValue = delChar(newValue, ',');

	if(parseInt(newValue,10)  == 0){
		return 0;
	}

	if (newValue < 0 ){
		
		for (p =  0 ; p < newValue.length ;p++ )
		{

			if (p==newValue.length)
				break;

			ch11 = newValue.substring(p+1,p+2);
			if (ch11 != 0)
				ch22++;
			
			
			if (ch22 > 0){
				newVal1 = newVal1 + ch11;
			}
		}

		len = newVal1.length;		
		
		for (i = len; i > 0; i--)
		{
			ch = newVal1.substring(i - 1, i);
			formatValue = ch + formatValue;

			if ((j % 3) == 0 && i > 1)
			{
				formatValue = "," + formatValue;
			}
			
			j++;
		}

		formatValue = "-" + formatValue
	}else{
		//comma Á¦°ÅµÈ ¹®ÀÚ¿­ ±æÀÌ
		for (p =  0 ; p < newValue.length ;p++ )
		{
			if (p==newValue.length)
				break;
			ch11 = newValue.substring(p,p+1);
			if (ch11 != 0)
				ch22++;
			
			
			if (ch22 > 0){
				newVal1 = newVal1 + ch11;
			}
		}
		len = newVal1.length;
		
		for (i = len; i > 0; i--)
		{
			ch = newVal1.substring(i - 1, i);
			formatValue = ch + formatValue;

			if ((j % 3) == 0 && i > 1)
			{
				formatValue = "," + formatValue;
			}
			
			j++;
		}
	}
	
	return formatValue;
}


/////////////////////////////////////////////////////
function Format_Comma_Float( p_newValue, p_n ) {
/////////////////////////////////////////////////////
// 2001.02.16 Ãß°¡ - Çö // comma¸¦ Æ÷ÇÔÇÑ floatÇüÀÇ À¸·Î ¹Ù²Ù¾î ÁØ´Ù. 
// p_n ÀÇ °ªÀÌ ¾øÀ¸¸é ¼Ò¼öÁ¡ÀÇ Á¦ÇÑÀÌ ¾øÀ¸¸ç.. p_nÀÌ 0 ÀÌ¸é '.'  Format_Comma¿Í °°Àº ¿ªÈ°À» ÇÑ´Ù. 
	var r;
	var newValue = p_newValue + "";
	var b_newValue, a_newValue;
	var ret_value = "";	
	
	newValue = delChar( p_newValue, ',' );
	
	// ¼Ò¼öÁ¡±îÁö...
    r = trim(newValue).indexOf(".");
   
    
    if( r < 0 ) {
		ret_value = Format_Comma(  trim(newValue)  );    	
    } else 
    {
		b_newValue = trim(newValue.substring(0,r));
		ret_value = Format_Comma(  trim(b_newValue)  );
		
		a_newValue = trim(newValue.substring(r));
		a_newValue = delChar( a_newValue, '.' );
 		
		if( p_n != null ) 
		{	
			if( p_n <= 0 ) 
			{
				a_newValue = "";
			}
			else 
			{
				a_newValue = "." + a_newValue.substring( 0, p_n );			
			}
		}
		else    
		{
			a_newValue = "." + a_newValue ;
		} 	
		ret_value = ret_value + a_newValue ;    	
    }

	return ret_value;
}






/////////////////////////////////////////////////////
function parseIntComma(newValue) {
/////////////////////////////////////////////////////
//comma·Î Æ÷¸ËµÈ ¼ýÀÚ¸¦ comma Á¦°ÅÇÑ integer °ªÀ¸·Î º¯È¯
	var ret = "";
	return parseInt(delChar(newValue, ','), 10);
}

/////////////////////////////////////////////////////
function parseFloatComma( newValue )
/////////////////////////////////////////////////////
// comma·Î Æ÷¸ËµÈ floatÇü ¼ýÀÚ¸¦ comma Á¦°ÅÇÑ float °ªÀ¸·Î º¯È¯ 
{
	return parseFloat(delChar(newValue, ','), 10);
}

/////////////////////////////////////////////////////
function delChar(newValue, ch)
/////////////////////////////////////////////////////
{
	var len = newValue.length;
	var ret = "";
	
	//¹®ÀÚ¿­¿¡¼­ ch ¹®ÀÚ¸¦ Á¦°ÅÇÑ´Ù. ¿¹) ,  - µîµî
	for (i=0; i<len; ++i)
	{
		if (newValue.substring(i,i+1) != ch)
			ret = ret + newValue.substring(i,i+1);
	}
	
	return ret;
}



/////////////////////////////////////////////////////
function _float_subtract(newValue_1, newValue_2, scale){
/////////////////////////////////////////////////////
//ºÎµ¿¼Ò¼öÁ¡ »©±â ¿¬»ê
//scale :ÀÚ¸¦ ÀÚ¸´¼ö
//result = newValue_1 - newValue_2
	var ret;
	var factor1;
	var factor2;
	
	v_scale = 1;
	for (i = 0; i < scale; i++)
	{
		v_scale = v_scale * 10;	
	}

	factor1 = eval(delChar(newValue_1 + "", ',')) * v_scale;
	factor2 = eval(delChar(newValue_2 + "", ',')) * v_scale;
	
	ret = (factor1 - factor2) / v_scale;

	return ret;	
}

//ºÎµ¿¼Ò¼öÁ¡ ´õÇÏ±â ¿¬»ê
//scale :ÀÚ¸¦ ÀÚ¸´¼ö
//result = newValue_1 + newValue_2
function _float_add(newValue_1, newValue_2, scale)
{
	var ret;
	var factor1;
	var factor2;
	
	v_scale = 1;
	for (i = 0; i < scale; i++)
	{
		v_scale = v_scale * 10;	
	}

	factor1 = eval(delChar(newValue_1 + "", ',')) * v_scale;
	factor2 = eval(delChar(newValue_2 + "", ',')) * v_scale;
	
	ret = (factor1 + factor2) / v_scale;

	return ret;	
}

/////////////////////////////////////////////////////
function _float_multiply(newValue_1, newValue_2, scale){
/////////////////////////////////////////////////////
//ºÎµ¿¼Ò¼öÁ¡ °öÇÏ±â ¿¬»ê
//scale :ÀÚ¸¦ ÀÚ¸´¼ö
//result = newValue_1 * newValue_2
	var ret;
	var factor1;
	var factor2;
	var ret_factor;

	
	v_scale = 1;
	for (i = 0; i < scale; i++)
	{
		v_scale = v_scale * 10;	
	}

	factor1 = eval(delChar(newValue_1 + "", ',')) * v_scale;
	factor2 = eval(delChar(newValue_2 + "", ',')) * v_scale;
	
	ret_factor = (factor1 * factor2) / v_scale;
	ret = ret_factor / v_scale;

	return ret;	
}


//===================================================================
//	StringUtil
//===================================================================
// nvl(value, replacer)
// replace( target, replacee)
// replace( target, replacee, replacer)
// containsCharsOnly(input,chars) {
// delChar(newValue, ch)
// isEmpty(a)
// isNull(a)
// lpad(newValue, len)
// lpad(newValue, len, ch)
// ltrim(a)
// rpad(newValue, len)
// rpad(newValue, len, ch)
// rtrim(a)
// trim(a)
//===================================================================


/////////////////////////////////////////////////////
function  replace( target, replacee){
/////////////////////////////////////////////////////
// String ÀÇ ¹®ÀÚ¿­À» °ø¹é¹®ÀÚ¿­·Î Ä¡¿ÏÇÑ´Ù.
	return replace( target, replacee, " ");
}

/////////////////////////////////////////////////////
function  replace( target, replacee, replacer){
/////////////////////////////////////////////////////
// String ÀÇ ¹®ÀÚ¿­À» ´Ù¸¥ ¹®ÀÚ¿­·Î Ä¡¿ÏÇÑ´Ù.
	var ret = "";
	retStr = "" + target; 
	
	while (retStr.indexOf(replacee)>-1) { 
		pos= retStr.indexOf(replacee);
		retStr = "" + (retStr.substring(0, pos) + replacer + retStr.substring((pos + replacee.length), retStr.length)); 
	}
	
	//  ¾Æ·¡ÀÌÀÇ code´Â form°´Ã¼¿¡ ¹Ù·Î °ªÀ» ´ëÀÔÇÒ °æ¿ì.
	// document.form.target.value = temp; 
	
	return retStr;
}

//////////////////////////////////////////
function rpad(newValue, len, ch){
//////////////////////////////////////////
//  ¿À¸¥ÂÊ¿¡ ch¹®ÀÚ·Î Ã¤¿ì±â
	var strlen = trim(newValue).length;
	var ret = "";
	var alen = len - strlen;
	var astr = "";	
	
	//ºÎÁ·ÇÑ ¼ýÀÚ¸¸Å­  len Å©±â·Î ch ¹®ÀÚ·Î Ã¤¿ì±â
	for (i=0; i<alen; ++i)
	{
		astr = astr + ch;
	}
	
	ret = trim(newValue) + astr;	//µÚ¿¡¼­ Ã¤¿ì±â
	return ret;
}

//////////////////////////////////////////
function rpad(newValue, len){
//////////////////////////////////////////
//  ¿À¸¥ÂÊ¿¡ °ø¹é¹®ÀÚ·Î Ã¤¿ì±â
	return rpad(newValue, len, " " );
}

//////////////////////////////////////////
function lpad(newValue, len, ch){
//////////////////////////////////////////
//	¿ÞÂÊ¿¡ ch ¹®ÀÚ Ã¤¿ì±â
	var strlen = trim(newValue).length;
	var ret = "";
	var alen = len - strlen;
	var astr = "";	
	
	//ºÎÁ·ÇÑ ¼ýÀÚ¸¸Å­  len Å©±â·Î ch ¹®ÀÚ·Î Ã¤¿ì±â
	for (i=0; i<alen; ++i)
	{
		astr = astr + ch;
	}
	
	ret = astr + trim(newValue);	//¾Õ¿¡¼­ Ã¤¿ì±â
	return ret;
}

//////////////////////////////////////////
function lpad(newValue, len){
//////////////////////////////////////////
//  ¿ÞÂÊ¿¡ °ø¹é¹®ÀÚ·Î Ã¤¿ì±â
	return lpad(newValue, len, " " );
}

//////////////////////////////////////////
function	nvl(value, replacer){
//////////////////////////////////////////
// null ÀÏ °æ¿ì, °ª ´ëÃ¼
	if ( value == null){
		return replacer;
	}else{
		return value;
	}
}


///////////////////////////////////////////
function trim(a) {
///////////////////////////////////////////
    return(ltrim(rtrim(a)));
}

///////////////////////////////////////////
function ltrim(a) {
///////////////////////////////////////////
 var i;
 i = 0;
 while (a.substring(i,i+1) == ' ' || a.substring(i,i+1) == '¡¡')  i = i + 1;
 return a.substring(i);
}


///////////////////////////////////////////
function rtrim(a){
///////////////////////////////////////////
 var b;
 var i = a.length - 1;
 while (i >= 0 && (a.substring(i,i+1) == ' ' || a.substring(i,i+1) == '¡¡')) i = i - 1;
 return a.substring(0,i+1);
}

///////////////////////////////////////////
function isEmpty(a){
///////////////////////////////////////////
	// null ÀÌ°Å³ª null String ÀÏ¶§.
	if (a == null || trim(a) == '' )	return true;
	return false;
}

///////////////////////////////////////////
function isNull(a){
///////////////////////////////////////////
	return isEmpty(a);
}

/////////////////////////////////////
function delChar(newValue, ch){
/////////////////////////////////////
// StrUtil.js¿¡¼­ »ç¿ëÇÏ´Â °øÅë ÇÔ¼ö
	var len = newValue.length;
	var ret = "";
	
	//¹®ÀÚ¿­¿¡¼­ ch ¹®ÀÚ¸¦ Á¦°ÅÇÑ´Ù. ¿¹) ,  - µîµî
	for (i=0; i<len; ++i)
	{
		if (newValue.substring(i,i+1) != ch)
			ret = ret + newValue.substring(i,i+1);
	}
	
	return ret;
}

//////////////////////////////////////////////////
function containsCharsOnly(input,chars) {
//////////////////////////////////////////////////
// chars·Î ³Ñ°ÜÁø ¹®ÀÚ¿­·Î¸¸ ÀÔ·« °ªÀÌ ±¸¼ºµÇ¾ú´ÂÁö ¿©ºÎ.
    for (var inx = 0; inx < input.length; inx++) {
       if (chars.indexOf(input.charAt(inx)) == -1)
           return false;
    }
    return true;
}   


/////////////////////////////////////////////////////
/// ¿µ¹®ÀÚ, ¼ýÀÚ·Î¸¸ ±¸¼ºµÇ¾îÀÖ´ÂÁö Ã¼Å©ÇÏ´Â ÇÔ¼ö ///
/////////////////////////////////////////////////////
function  isAlphaNumeric(str) {
/////////////////////////////////////////////////////
	var re = /[a-zA-Z0-9]/; 
	for (var i = 0; i < str.length; i++) {
		if (!re.test(str.charAt(i))) {
			return false;
		}
	}
	return true;
}

/////////////////////////////////////////////////////
/// ¿µ¹®ÀÚ·Î¸¸ ±¸¼ºµÇ¾îÀÖ´ÂÁö Ã¼Å©ÇÏ´Â ÇÔ¼ö ///
/////////////////////////////////////////////////////
function  isAlpha(str) {
/////////////////////////////////////////////////////
	var re = /[a-zA-Z]/; 
	for (var i = 0; i < str.length; i++) {
		if (!re.test(str.charAt(i))) {
			return false;
		}
	}
	return true;
}

/////////////////////////////////////////////////////
/// ¼Ò¹®ÀÚ, ¼ýÀÚ·Î¸¸ ±¸¼ºµÇ¾îÀÖ´ÂÁö Ã¼Å©ÇÏ´Â ÇÔ¼ö ///
/////////////////////////////////////////////////////
function  isLowAlphaNumeric(str) {
/////////////////////////////////////////////////////
	var re = /[a-z0-9]/;
	for (var i = 0; i < str.length; i++) {
		if (!re.test(str.charAt(i))) {
			return false;
		}
	}
	return true;
}

/////////////////////////////////////////////////////
/// ¼ýÀÚ·Î¸¸ ±¸¼ºµÇ¾îÀÖ´ÂÁö Ã¼Å©ÇÏ´Â ÇÔ¼ö ///
/////////////////////////////////////////////////////
function  isNumeric(str) {
/////////////////////////////////////////////////////
	var re = /[0-9]/; 
	for (var i = 0; i < str.length; i++) {
		if (!re.test(str.charAt(i))) {
			return false;
		}
	}
	return true;
}


//===================================================================
//	etc
//===================================================================
// checkdate(value)
// checkemail(value)
// checkjumin(serial1,serial2)
// checkphone(value)
// han_check( han )
// KeyFilter(text, sFilter)
// Validate(value,mask)
//===================================================================

//////////////////////////////////////////
function checkemail(strText){
///////////////////////////////////////////
 	if (strText.match(/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+.[a-zA-Z.]+$/)){
 		return true;
 	}else{
		return false;
 	}
}


///////////////////////////////////////////
function checkjumin(serial1,serial2){
///////////////////////////////////////////
// ÁÖ¹Î¹øÈ£
	if (serial1.length != 6){
		return false;
	} else if ( serial2.length != 7){
    	return false;
  	} else {
  	
		var str_serial1 = serial1;
		var str_serial2 = serial2;
		var digit=0;
		
		for (var i=0;i<str_serial1.length;i++){
			var str_dig=str_serial1.substring(i,i+1);
			if (str_dig<'0' || str_dig>'9'){ 
				digit=digit+1 ;
			}
		}

		if ((str_serial1 == '') || ( digit != 0 )){
			return false;   
		}
	
		var digit1=0
		for (var i=0;i<str_serial2.length;i++){
			var str_dig1=str_serial2.substring(i,i+1);
			if (str_dig1<'0' || str_dig1>'9'){ 
				digit1=digit1+1; 
			}
		}

		if ((str_serial2 == '') || ( digit1 != 0 )){
			return false;   
		}


		if (str_serial1.substring(2,3) > 1){
			return false;   
		}

		if (str_serial1.substring(4,5) > 3){
			return false;   
		} 

		if (str_serial2.substring(0,1) > 4 || str_serial2.substring(0,1) == 0){
			return false;   
		}

		var a1=str_serial1.substring(0,1);
		var a2=str_serial1.substring(1,2);
		var a3=str_serial1.substring(2,3);
		var a4=str_serial1.substring(3,4);
		var a5=str_serial1.substring(4,5);
		var a6=str_serial1.substring(5,6);
		
		var check_digit=a1*2+a2*3+a3*4+a4*5+a5*6+a6*7;
		
		var b1=str_serial2.substring(0,1);
		var b2=str_serial2.substring(1,2);
		var b3=str_serial2.substring(2,3);
		var b4=str_serial2.substring(3,4);
		var b5=str_serial2.substring(4,5);
		var b6=str_serial2.substring(5,6);
		var b7=str_serial2.substring(6,7);
		
		var check_digit=check_digit+b1*8+b2*9+b3*2+b4*3+b5*4+b6*5 ;
		
		check_digit = check_digit%11;
		check_digit = 11 - check_digit;
		check_digit = check_digit%10;

		if (check_digit != b7){
			return false;   
		} else {
			return true;
		}
	}
}



///////////////////////////////////////////
function han_check( han ){		     	     
///////////////////////////////////////////
//  ÇÑ±Û ¿©ºÎ °Ë»ç.
//	true : ÇÑ±Û	 
//	false : ÇÑ±ÛÀÌ ¾Æ´Ñ ¹®ÀÚ¿­

	var nIsNothan = 0;	     	
	
	for(i=0;i<(han.length);i++) 
	{
		if(han.charAt(i) < '¤¡') nIsNothan = 1;			
	}
	
	if( nIsNothan == 1){
		return false;
	} else {
		return true;
	}
	
}


///////////////////////////////////////////
function KeyFilter(text, sFilter){
///////////////////////////////////////////
//- sFilter="[abcde-y]"
//³ª¿­µÈ ³»¿ë¸¸ ÀÔ·Â°¡´ÉÇÏµµ·Ï filteringÀ» ÇÑ´Ù.
//¿¹: "[abc]" -> a, b, c¸¸ ÀÔ·Â°¡´ÉÇÏ´Ù.
//¿¹: "[acf]" -> a, c, f¸¸ ÀÔ·Â°¡´ÉÇÏ´Ù.
//¿¹: "[a-z123]" -> a¿¡¼­ z±îÁö¿Í 1, 2, 3 ÀÌ ÀÔ·Â°¡´ÉÇÏ´Ù.
//¿¹: "[a4*#$%]" -> a, 4, *, #, $, % °¡ ÀÔ·Â°¡´ÉÇÏ´Ù.
//function  (sFilter)
//{
//	var sKey = String.fromCharCode(event.keyCode);
//	var re  =new RegExp(sFilter);
	// Enter´Â Å°°Ë»ç¸¦ ÇÏÁö ¾Ê´Â´Ù.
//	if( sKey != "\r" && !re.test(sKey) ) event.returnValue = false;
//}

	var re  = new RegExp(sFilter);
	for ( i=0 ; i<text.length; i++){
		if ( !re.test(text.charAt(i)) ){
			alert(text.charAt(i)+" Àº Àß¸ø µÈ ¹®ÀÚ ÀÔ´Ï´Ù");
			return false;
		}
	}
	return true;

}



///////////////////////////////////////////
function checkphone(value){
///////////////////////////////////////////
// ÀüÈ­¹øÈ£ 
var str=value;
var filter = /^(\d{2,4})-(\d{3,4})-(\d{4})$/;
	if (filter.test(str)) 
		testresults=true ;
	else{ 
		alert("Invalid Phone # \n Please try again. \n ex)xxx-xxx-xxxx") ;
		testresults=false ;
	} 
	
	return (testresults) ;
	
}

///////////////////////////////////////////
function checkdate(value){ 
///////////////////////////////////////////
// DATE MASK
var str=value;
var filter = /^(\d{4})\/(\d{2})\/(\d{2})$/;

	if (filter.test(str)) {
		testresults=true ;
	}else{ 
		alert("À¯È¿ÇÑ ³¯Â¥°¡ ¾Æ´Õ´Ï´Ù") ;
		testresults=false ;
	} 
	
	return (testresults) ;
}

///////////////////////////////////////////
function Validate(value,mask){ 
///////////////////////////////////////////
// ´Ù¾çÇÑ Validation Check
var str=value;
var filter = mask;
	if (filter.test(str)) {
		testresults=true ;
	}else{ 
		testresults=false ;
	} 
	return (testresults) ;
}


// ±Ý¾× Æ÷¸ËÆÃ OnBlur ½Ã Ã¼Å©
function offMoneyFormat( obj ) {
	var money = 0;			// ÀÔ·Â°ª
	var digitLen = 0;		// ÀüÃ¼ÀÚ¸´¼ö
	
	var preAmt = ""; 		// ¼Ò¼ýÁ¡ ±âÁØ ¼Ò¼öÁ¡ ÀÌ»óÀÇ ÀÚ¸®°ª
	var postAmt = ""; 		// ¼Ò¼ýÁ¡ ±âÁØ ¼Ò¼ýÁ¡ ÀÌÇÏÀÇ ÀÚ¸®°ª
	
	var isPlus = "";		// + Æ÷ÇÔ ¿©ºÎ
	var isMinus = "";		// - Æ÷ÇÔ ¿©ºÎ
	
	var leftAmt = "";
	var rightAmt = "";
	
	var iPos = 0;
	var iMok = 0;
	var iMod = 0;
	
	
	if( obj.value == '' || obj.value == '0' ) {
	
		obj.value = '0';
		return;
	
	}
	
	if( isNaN( obj.value ) ) {
	
		alert( "¼ýÀÚ°ªÀ» ÀÔ·ÂÇÏ½Ê½Ã¿ä" );
		obj.focus();
		obj.select();
		return;
		
	}

	money = obj.value;
	
	digitLen = money.length;
	
	isMinus = money.indexOf( '-' );
	isPlus = money.indexOf( '+' );
	
	if( isMinus == 0 ) {
	
		money = money.substr( 1, digitLen - 1 );
	
	}
	
	if( isPlus == 0 ) {
	
		money = money.substr( 1, digitLen - 1 );
		
	}
			
	iPos = money.indexOf( '.' );
		
	
	if( iPos > 0 ) {
		
		preAmt = money.substr( 0, iPos );
		
		postAmt = money.substr( iPos, digitLen - iPos );
		
	} else {
		
		preAmt = money; 
		
	}
	
	iPos = preAmt.length;
	
	iMok = parseInt( iPos/3 );
	
	iMod = iPos%3;
	
	if( iMod == 0 ) {
	
		iMod = 3;
		
	}

	if( iPos > 3 ) {
	
		leftAmt = preAmt.substr( 0, iMod );
		
		rightAmt = preAmt.substr( iMod, iPos );
		
		for( i = 0 ; i < iMok ; i++ ) {
		
			leftAmt = leftAmt + ',' + rightAmt.substr( 0, 3 );
			
			rightAmt = rightAmt.substr( 3, rightAmt.length );	
		
		}
		
		sEndChar = leftAmt.substr( leftAmt.length - 1, leftAmt.length - 1 );
		   
		if( sEndChar == ',' )
			leftAmt = leftAmt.substr( 0, leftAmt.length - 1 );
	
	} else {
	
		leftAmt = preAmt;
	
	}
	
	if( isMinus == 0 )
		leftAmt = '-' + leftAmt;
		
	preAmt = leftAmt
	
	obj.value = preAmt + postAmt;
			 
}


// ±Ý¾× Æ÷¸ËÆÃ OnFocus ½Ã Ã¼Å©
function onMoneyFormat( obj ) {

	obj.value = replace( obj.value, ',', '' );
	
}

//=============================================================================
// Function  : setCurrencyFormat(obj, index, obj2, gubun)
// Parameter : Obj     ÇöÀçÀÇ ÀÔ·Â °´Ã¼ 			  
//			   index   °´Ã¼ÀÇ ÀÎÅØ½º 
//			   obj2	   Å¸°Ù°´Ã¼ 
//             gubun   gubun Àº Á¤¼ö¿©ºÎ('Y' : Á¤¼ö¸¸, 'N' : ¼Ò¼öÁ¡ ÀÌÇÏ Æ÷ÇÔ)
// Return    : NONE
// ±â´É      : µ· ÇüÅÂÀÇ ¼ýÀÚ·Î ÆíÁýÇÏ´Â ÇÔ¼ö(¼Ò¼öÁ¡ Æ÷ÇÔ)
//			   obj[index]ÀÇ °ªÀ» currency Çü½ÄÀ¸·Î º¯°æÇÏ°í ¿ø·¡ ÀÔ·Â°ªÀº obj2[index]ÀÇ value·Î ÇÒ´çÇÑ´Ù.
//=============================================================================
function setCurrencyFormat(obj, index, obj2, gubun) {
    
    val = delChar(obj.value, ','); //comma filtering
    obj.value = val;
    
    a = isNumber(obj);
        
    if (a == 1) {        
        if (obj2.length == "undefined" || obj2.length == null) {        
            obj2.value = "";
        } else {
            obj2[index].value = "";
        }    
                
        return;
    }    

    if (obj2.length == "undefined" || obj2.length == null) {        
        obj2.value = obj.value;
    } else {
        obj2[index].value = obj.value;        
    }    
    
    number_format(obj, gubun);    

}


// ÇØ´ç ³â¿ùÀÏÀÇ ¿äÀÏ °¡Á®¿À±â
function cala_day(year, month, day) {
 var nDayOfWeek = cala_weekday(month, day, year); 
 return day_display(nDayOfWeek)
} 

// ÇØ´ç ³â¿ùÀÏ¿¡ µû¸¥ ¿äÀÏ °è»êÇÏ±â
function cala_weekday( x_nMonth, x_nDay, x_nYear) {
  

        if(x_nMonth >= 3){         
                x_nMonth -= 2; 
        } 
        else { 
                x_nMonth += 10; 
        } 

        if( (x_nMonth == 11) || (x_nMonth == 12) ){ 
                x_nYear--; 
        } 

        var nCentNum = parseInt(x_nYear / 100); 
        var nDYearNum = x_nYear % 100; 

        var g = parseInt(2.6 * x_nMonth - .2); 

        g +=  parseInt(x_nDay + nDYearNum); 
        g += nDYearNum / 4;         
        g = parseInt(g); 
        g += parseInt(nCentNum / 4); 
        g -= parseInt(2 * nCentNum); 
        g %= 7; 
         
        if(x_nYear >= 1700 && x_nYear <= 1751) { 
                g -= 3; 
        } 
        else { 
   if(x_nYear <= 1699) { 
     g -= 4; 
   } 
        } 
         
        if(g < 0){ 
                g += 7; 
        } 
         
        return g; 
} 

//¿äÀÏ º¸¿©ÁÖ±â
function day_display(x_nDayOfWeek) { 

 if(x_nDayOfWeek == 0) return "ÀÏ"; 
 if(x_nDayOfWeek == 1) return "¿ù"; 
 if(x_nDayOfWeek == 2) return "È­"; 
 if(x_nDayOfWeek == 3) return "¼ö"; 
 if(x_nDayOfWeek == 4) return "¸ñ"; 
 if(x_nDayOfWeek == 5) return "±Ý"; 
 if(x_nDayOfWeek == 6) return "Åä"; 

} 

function number_format(obj,int_yn)
{
 if(int_yn != null && (int_yn == 'N' || int_yn == 'n')){
  point_format(obj);
  return;
 }
    sValue = "" + obj.value;
 var nI = 0;
 var sStr = "";
 var sReturn = "";
 var nCount = 0;
 var nSymbol = 0;
 var sBuho = "";
    if (sValue.substring(0, 1) == "-"){
     sBuho = "-";
 }
      
 for(nI=sValue.length - 1; nI>=0; nI--)
 {
  if ((sValue.charAt(nI) * 1 > -1 && sValue.charAt(nI) * 1 < 10))
  {
   sStr = sValue.charAt(nI) + sStr;
  }
 }
 
 nSymbol = parseInt(sStr.length / 3, 10);
 if ((sStr.length % 3) == 0)
 {
  nSymbol = nSymbol - 1;
 }
 
 if (nSymbol > 0)
 {
  for(nI=sStr.length - 1; nI>=0; nI--)
  {
   sReturn = sStr.charAt(nI) + sReturn;
   nCount = nCount + 1;
   if (nCount == 3 && nSymbol > 0)
   {
    nCount = 0
    nSymbol = nSymbol - 1
    sReturn = "," + sReturn
   }
  }
 }
 else
 {
  sReturn = sStr
 }
    obj.value=sBuho + sReturn;
}

//=============================================================================
// Function  : point_format(Object)
// Parameter : Object(ÆíÁýÇÒ OBJECT)
// Return    : NONE
// ±â´É      : µ· ÇüÅÂÀÇ ¼ýÀÚ·Î ÆíÁýÇÏ´Â ÇÔ¼ö(¼Ò¼öÁ¡ Æ÷ÇÔ)
//=============================================================================
function point_format(obj)
{
    sValue = "" + obj.value;
 var nI = 0;
 var sStrNumber = "";
 var sStrDecimal = "";
 var sReturn = "";
 var nCount = 0;
 var nSymbol = 0;
 var sStr1 = "";
 var sStr2 = "";
 var nDecimal = 0;
 
 for(nI=0; nI<=sValue.length - 1; nI++)
 {
  if (sValue.charAt(nI) == ".")
   break;
 }
 sStrNumber = sValue.substr(0, nI);    // Á¤¼öºÎºÐ
 
 sStrDecimal = sValue.substr(nI, sValue.length - 1);    // ¼Ò¼öºÎºÐ
 
 for(nI=sStrDecimal.length - 1; nI>=0; nI--)
 {
  if ((sStrDecimal.charAt(nI) * 1 > -1 && sStrDecimal.charAt(nI) * 1 < 10) || sStrDecimal.charAt(nI) == ".")
  {
   if (sStrDecimal.charAt(nI) == 110)
   {
    nDecimal = nDecimal + 1;
   }
   if (nDecimal < 2)
   {
    sStr2 = sStrDecimal.charAt(nI) + sStr2;
   }
  }
 }
 
 for(nI=sStrNumber.length - 1; nI>=0; nI--)
 {
  if ((sStrNumber.charAt(nI) * 1 > -1 && sStrNumber.charAt(nI) * 1 < 10))
  {
   sStr1 = sStrNumber.charAt(nI) + sStr1;
  }
 }
 
 nSymbol = parseInt(sStr1.length / 3, 10);
 if ((sStr1.length % 3) == 0)
 {
  nSymbol = nSymbol - 1;
 }
 
 if (nSymbol > 0)
 {
  for(nI=sStr1.length - 1; nI>=0; nI--)
  {
   sReturn = sStr1.charAt(nI) + sReturn;
   nCount = nCount + 1;
   if (nCount == 3 && nSymbol > 0)
   {
    nCount = 0
    nSymbol = nSymbol - 1
    sReturn = "," + sReturn
   }
  }
 }
 else
 {
  sReturn = sStr1
 }
    obj.value=sReturn + sStr2;
}


//=============================================================================
// Function  : setCurrencyFormat(obj, index, obj2, gubun)
// Parameter : Obj     ÇöÀçÀÇ ÀÔ·Â °´Ã¼ 			  
//			   index   °´Ã¼ÀÇ ÀÎÅØ½º 
//			   obj2	   Å¸°Ù°´Ã¼ 
//             gubun   gubun Àº Á¤¼ö¿©ºÎ('Y' : Á¤¼ö¸¸, 'N' : ¼Ò¼öÁ¡ ÀÌÇÏ Æ÷ÇÔ)
// Return    : NONE
// ±â´É      : µ· ÇüÅÂÀÇ ¼ýÀÚ·Î ÆíÁýÇÏ´Â ÇÔ¼ö(¼Ò¼öÁ¡ Æ÷ÇÔ)
//			   obj[index]ÀÇ °ªÀ» currency Çü½ÄÀ¸·Î º¯°æÇÏ°í ¿ø·¡ ÀÔ·Â°ªÀº obj2[index]ÀÇ value·Î ÇÒ´çÇÑ´Ù.
//=============================================================================
function setCurrencyFormat(obj, index, obj2, gubun) {
    
    val = delChar(obj.value, ','); //comma filtering
    obj.value = val;
    a = isNumber(obj);
        
    if (a == 1) {        
        if (obj2.length == "undefined" || obj2.length == null) {        
            obj2.value = "";
        } else {
            obj2[index].value = "";
        }  
                
        return;
    }    

    if (obj2.length == "undefined" || obj2.length == null) {        
        obj2.value = obj.value;
    } else {
        obj2[index].value = obj.value;        
    }    
    
    val = parseFloat(val);
    if (val < 0) {
    	val = val * -1;   	
    	obj.value = val;    	
    	number_format(obj, gubun);    
    	obj.value = "-" + obj.value;    	
    }   else {
    	number_format(obj, gubun);    	
    }   

}

//=============================================================================
// Function  : setDateFormat(obj, index, obj2)
// Parameter : Obj     ÇöÀçÀÇ ÀÔ·Â °´Ã¼ 			  
//			   index   °´Ã¼ÀÇ ÀÎÅØ½º 
//			   obj2	   Å¸°Ù°´Ã¼ 
// Return    : NONE
// ±â´É      : ³¯Â¥formatÀ» check  ÇÏ°í µÎ¹øÂ° °´Ã¼ÀÇ °ªÀ¸·Î ÇÒ´çÇÑ´Ù.
//			   obj[index]ÀÇ °ªÀ» yyyy/mm/dd Çü½ÄÀ¸·Î º¯°æÇÏ°í ¿ø·¡ ÀÔ·Â°ªÀº obj2[index]ÀÇ value·Î ÇÒ´çÇÑ´Ù.
//=============================================================================
function setDateFormat(obj, index, obj2) {
	    
    val = delChar(obj.value, '/'); //comma filtering
    obj.value = val;
    
    a = isNumber(obj);
    var no = "";
        
    if (a == 1) {        
        if (obj2.length == "undefined" || obj2.length == null) {
            obj2.value = "";
            obj2.focus();
        } else {
            obj2[index].value = "";
            obj2[index].focus();
        }        
        
        return;
    }

    val = obj.value;
    len = val.length;       

    if (len == 6) {
		no = format_YYYYMM(obj);  
	} else if (len == 8) {
		no = format_YYYYMMDD(obj);  
	}
										
	if (no == "") {
		obj.value = no;
		obj.focus();
		return;
	}
												
	if (obj2.length == "undefined" || obj2.length == null) {
		obj2.value = obj.value;
	} else {
		obj2[index].value = obj.value;
	}
	obj.value = no;
}

///////////////////////////////////////////////////
//
//  ÁÖ¾îÁø °ªÀÇ ±æÀÌ¸¦ check ÇÑ´Ù.
//  val ÀÇ length °¡ len °ú µ¿ÀÏÇÏ¸é 1, ¾Æ´Ï¸é -1
//  À» ¹ÝÈ¯ÇÑ´Ù.
//
///////////////////////////////////////////////////

function chkValueLength(val, len) {
    valLen = val.length;
	if (valLen == len) {
		return 1;
    } else {        
	    return -1;
	}
		    
}


//////////////////////////////////////////////////////
//
//   from, to¸¦ ÁÖ¾î ±â°£ÀÇ valid¸¦ checkÇÑ´Ù.  
//
//////////////////////////////////////////////////////
function chkDuration(obj, obj1, flag, fMsg, tMsg){
	//util.js¿¡¼­ ³¯Â¥ format Ã¼Å©
	if(obj.value == "") return true;
	var dateValue, compareValue
	
	dateValue = format_YYYYMMDD(obj);
	if(dateValue == "") {
		obj.value = dateValue;
		return false;
	}
	
	if(!(flag == "")) {
		if( flag == "From") {
			compareValue = obj1.value;
			if (dateValue > compareValue ){
				alert(fMsg+" Àº(´Â) "+tMsg+" º¸´Ù ÀÌÀüÀÏÀÚ¸¦ ÀÔ·Â ÇÏ½Ê½Ã¿À.");
				obj.value="";
				obj.focus();
				return false;
			}
		} else {  // To
			compareValue = obj1.value;
			if (dateValue < compareValue ){
				alert(fMsg+" Àº(´Â) "+tMsg+" º¸´Ù ÀÌÈÄÀÏÀÚ¸¦ ÀÔ·ÂÇÏ½Ê½Ã¿À.");
				obj.value="";
				obj.focus();
				return false;
			}
		}
	}
	obj.value = dateValue;
	return true;
}


/* ==============================================
-- Focus °¡ ¿ÔÀ»¶§. °ª Select
============================================== */
function atFocus(obj) {
	if (obj.readOnly) return;
	obj.select();
}

// ÀÔ·ÂµÈ °ªÀÌ ¼ýÀÚÀÎÁö Ã¼Å©
function check_num(field) { 
	var nval = field.value.substr(field.value.length -1, 1);
	
	if (isNaN(nval) || nval == "") {
		alert("¼ýÀÚ·Î ÀÔ·ÂÇÏ½Ê½Ã¿À.");
		field.value = "";
		field.focus();
		return false;
	} else {
		return true;
	}
}

function winOpen(url, name, t, d, st, sc, r, m, w, h)
{
	para = "startX=100,startY=50,top=50,left=100,toolbar="+t+",directories="+d+",status="+st+",scrollbars="+sc+",resizable="+r+",menubar="+m+",width="+w+",height="+h;
	openWin = window.open(url, name, para);
	openWin.focus();
//	return openWin;
}

function popupClose(val){
	if(confirm(val+" will be closed \n Are you sure")){
		window.close();
	}
}

function showModaless(site, width, height){
	var opt = "status:false;dialogWidth:"+width+"px;dialogHeight:"+height+"px"
	showModelessDialog(site,window,opt);
}
function showModal(site, width, height){
	var opt = "status:no;help:no;dialogWidth:"+width+"px;dialogHeight:"+height+"px;scroll:no";
	showModalDialog(site, window, opt);
}


function printpreview(){
	var OLECMDID = 7;
	/* OLECMDID values:
	* 6 - print
	* 7 - print preview
	* 1 - open window
	* 4 - Save As
	*/
	var PROMPT = 1; // 2 DONTPROMPTUSER 
	var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
	document.body.insertAdjacentHTML('beforeEnd', WebBrowser); 
	WebBrowser1.ExecWB(OLECMDID, PROMPT);
	WebBrowser1.outerHTML = "";
}
	