var _HanSize = 2;
var _progress_popup;

/**
 * 문자열의 좌우측공백 제거하기
 *
 * @param		expression		If string contains null, false is returned
 * @return	string/false
 */
function trim (expression) {
	if (expression == null) {
        return false;
    } else {
	    return expression.replace(/(^\s*)|(\s*$)/gi, "");
    }
}

/**
 * 문자열의 좌측공백 제거하기
 *
 * @param		expression		If string contains null, false is returned
 * @return	string/false
 */
function ltrim (expression) {
	if (expression == null) {
        return false;
    } else {
	    return expression.replace(/(^\s*)/g, "");
    }
}

/**
 * 문자열의 우측공백 제거하기
 *
 * @param		expression		If string contains null, false is returned
 * @return	string/false
 */
function rtrim (expression) {
	if (expression == null) {
        return false;
    } else {
	    return expression.replace(/(\s*$)/g, "");
    }
}


var commonPopWin;



function fnShowModal( url, args, w, h, scroll ) {

  var wl  = (window.screen.width/2) - (w/2 + 10); //half the screen width minus half the new window width (plus 5 pixel borders).
  var wt  = (window.screen.height/2) - (h/2 + 50); //half the screen height minus half the new window height (plus title and status bars).

  var options = "dialogHeight:"+h+"px;dialogWidth:"+w+"px;dialogLeft:"+wl+";dialogTop:"+wt+";status:no;scroll:"+scroll+";";
  return window.showModalDialog(url,args,options);

}



/*
**  화면 정중앙에 POPUP WINODOW OPEN
*/
function fnOpenCenterWin( url, name, w, h, scroll) {

  var wl = (window.screen.width/2) - ((w/2) + 10);
  var wt = (window.screen.height/2) - ((h/2) + 50);

  var option = "status=no,height="+h+",width="+w+",resizable=yes,left="+wl+",top="+wt+",screenX="+wl+",screenY="+wt+",scrollbars="+scroll;

  commonPopWin = window.open( url, name, option );
  commonPopWin.focus();
  return commonPopWin;
}


/*
**  화면 정중앙에 POPUP WINODOW OPEN(POST 방식)
*/
function fnOpenCenterWinPost(form, name, w, h, scroll) {

	var wl = (window.screen.width/2) - ((w/2) + 10);
	var wt = (window.screen.height/2) - ((h/2) + 50);

	var option = "status=no,height="+h+",width="+w+",resizable=no,left="+wl+",top="+wt+",screenX="+wl+",screenY="+wt+",scrollbars="+scroll;
	commonPopWin = window.open( '', name, option );
	form.target = name;
	//form.action = url;
	form.submit();
	commonPopWin.focus();
	return commonPopWin;
}



/*
**  원하는 위치에 POPUP WINODOW OPEN
*/
function fnOpenUserWin( url, name, w, h, wl, wt, scroll) {

  var option = "status=no,height="+h+",width="+w+",resizable=no,left="+wl+",top="+wt+",screenX="+wl+",screenY="+wt+",scrollbars="+scroll;

  commonPopWin = window.open( url, name, option );
  commonPopWin.focus();
}


/**
 * 입력내용 Byte체크
 */
function checkByte(field,max_count) {

	var str;
	var str_count = 0;
	var cut_count = 0;
	var str_length = field.value.length;

	for(k=0; k < str_length; k++)
	{
		str = field.value.charAt(k);
		if(escape(str).length > 4)
		{
			str_count += _HanSize;
		}else{
			// (\r\n은 1byte 처리)
			if(escape(str)=='%0A') {
			}else{
				str_count++;
			}
		}

		if(max_count < str_count)
		{
			alert("글자수가 "+ max_count +" byte 이상은 사용불가능합니다");
			if(escape(str).length > 4) str_count -= _HanSize;
			else str_count--;

			field.value = field.value.substring(0,k);
			return false;
			break;
		}
	}
	return true;
}


/**
 * 입력내용 Byte체크
 */
function getByteLength(strValue) {
	var str;
	var str_count = 0;
	var cut_count = 0;
	var str_length = strValue.length;

	for(k=0; k < str_length; k++)
	{
		str = strValue.charAt(k);
		if(escape(str).length > 4)
		{
			str_count += _HanSize;
		}else{
			// (\r\n은 1byte 처리)
			if(escape(str)=='%0A') {
			}else{
				str_count++;
			}
		}
	}
	return str_count;
}


/**
 * 날짜인지 판별하는 함수
 */
function fComDateChk(Value, Datafld, Class) {
    // 날짜이고 형식이 yyyy
    if (Datafld == "date"  &&  Class == "yyyy" )
    {
        if (fComIsNumeric(Value, "fromD") && Value.length == 4)return true;
        return false;
    }
    // 날짜이고 형식이 mm-dd
    else if (Datafld == "date"  &&  Class == "mm-dd")
    {
        if (fComIsmmdd(Value))return true;
        return false;
    }
    // 날짜이고 형식이 yyyy-mm-dd
    else if (Datafld == "date"  &&  Class == "yyyy-mm-dd")
    {
        if (fComIsDate(Value, 'All'))return true;
        return false;
    }
    // 날짜이고 형식이 yyyy-mm
    else if (Datafld == 'date' && Class == "yyyy-mm")
    {
        if (fComIsDate(Value, 'NoAll')) return true;
        return false;
    }
    // 날짜이고 형식이 yyyy/mm/dd
    else if (Datafld == 'date' && Class == "yyyy/mm/dd")
    {
        if (fComIsDate(Value, 'typeA')) return true;
        return false;
    }
	// Add by Jiman(2007-11-02)
	// 날짜이고 형식이 yyyy.mm.dd
    else if (Datafld == 'date' && Class == "yyyy.mm.dd")
    {
        if (fComIsDate(Value, 'typeB')) return true;
        return false;
    }
}


/**
 * 숫자인지 아닌지를 판별하여 true or false반환
 */
function fComIsNumeric(number,Gubun)
{
    var ch = "{0";
    var flag = true;

    if(typeof(number) == 'number') return true;

    for (var i = 0, ch = number.charAt(i); (i <number.length) && (flag); ch = number.charAt(++i))
    {
        // only 숫자인지 Check
        if (Gubun == 'fromD')
        {
            if ((ch >= '0') && (ch <= '9'));
            else
                flag = false;
        }
        // 숫자와 콤마가 맞는지 Check
        else if (Gubun == 'fromN')
        {
            if ((ch >= '0') && (ch <= '9') || (ch == ',')|| (ch == '.'));
            else
                flag = false;
        }
        else
        {
            if ((ch >= '0') && (ch <= '9') || (ch == ',')|| (ch == '.'));
            else
                flag = false;
        }
    }
    return flag;
}

/**
 * ##-## 형식이 맞는지 아닌지 check
 */
function fComIsmmdd(source)
{
    if (source.length < 5){
        return false;
    }
    else if (source.substring(2,3) != "/"){
        return false;
    }

    else{
        var month = source.substring(0,2);
        var day = source.substring(3,5);
    }

    if (!fComIsNumeric(month, "fromD")){
        return false;
    }
    if (!fComIsNumeric(day, "fromD")){
        return false;
    }
    /*--------------------------------------------------------------------------------------*/
    /* 음수 체크                                                                            */
    /*--------------------------------------------------------------------------------------*/
    if (month < 0 || day < 0){
        return false;
    }
    /*--------------------------------------------------------------------------------------*/
    /* 달에 따라                                                                            */
    /*--------------------------------------------------------------------------------------*/
    if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
    {
        if (day > 31)
        {
            return false;
        }
    }
    else if (month == 4 || month == 6 || month == 9 || month == 11)
    {
        if (day > 30)
        {
            return false;
        }
    }
    else if (month == 2)
    {
        if (day > 29)
        {
            return false;
        }
    }
    else
    {
        return false;
    }
    // false 아님 true
    if (fComIsmmdd != false){
        return true;
    }
}


/**
 * ####-##-## 형식이 맞는지 아닌지 check
 */
function fComIsDate(source, Gbn)
{   //날짜 체크 사용자가 2000-02-29 을 입력한 걸 그대로 source에 대입하면 올바른 날짜는 true
    if (Gbn != 'All' && Gbn != 'typeA' && Gbn != 'typeB') source = source + '-05';

		if(Gbn == 'typeA'){
			if (source.length != 10){
					return false;
			}
			else if (source.substring(4,5) != "/" || source.substring(7,8) != "/"){
					return false;
			}
			else{
					var year = source.substring(0, 4);
					var month = source.substring(5, 7);
					var day = source.substring(8, 10);
			}
		// Add by Jiman(2007-11-02)
		} else if(Gbn == 'typeB'){
			if (source.length != 10){
					return false;
			}
			else if (source.substring(4,5) != "." || source.substring(7,8) != "."){
					return false;
			}
			else{
					var year = source.substring(0, 4);
					var month = source.substring(5, 7);
					var day = source.substring(8, 10);
			}
		}else{
			if (source.length < 10){
					return false;
			}
			else if (source.substring(4,5) != "-" || source.substring(7,8) != "-"){
					return false;
			}
			else{
					var year = source.substring(0, 4);
					var month = source.substring(5, 7);
					var day = source.substring(8, 10);
			}
		}

	if (year < 1900 || month < 1 || day < 1)
	{
		return false;
	}

    if (!fComIsNumeric(year, "fromD")){
        return false;
    }
    if (!fComIsNumeric(month, "fromD")){
        return false;
    }
    if (!fComIsNumeric(day, "fromD")){
        return false;
    }
    // 음수 체크
    if (year < 0 || month < 0 || day < 0){
        return false;
    }
    // 달에 따라
    if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
    {
        if (day > 31)
        {
            return false;
        }
    }
    else if (month == 4 || month == 6 || month == 9 || month == 11)
    {
        if (day > 30)
        {
            return false;
        }
    }
    else if (month == 2)
    {
        if (year % 4 == 0)
        {
            if (year % 100 == 0 && year % 400 == 0)
            {
                if (day > 29)
                {
                    return false;
                }
            }
            else if (year % 100 == 0 && year % 400 != 0)
            {
                if (day > 28)
                {
                    return false;
                }
            }
            else
            {
                if (day > 29)
                {
                    return false;
                }
            }

        }
        else
        {
            if (day > 28)
            {
                return false;
            }
        }
    }
    else
    {
        return false;
    }

    // false 아님 true
    if (fComIsDate != false){
        return true;
    }
}


/**
 * 문자열중 특정 문자(문자열)를 새로운문자로 변경한다
 */
function fComReplace(str1,old,change)
{
    if(typeof(str1) == 'number') return str1;
    var str1;
    var temp;
    if (str1.indexOf(old) >= 0)
    {
        temp = str1.substring(str1.indexOf(old)+old.length);
        str1 = str1.substring(0,str1.indexOf(old)) + change + temp;
        return(fComReplace(str1,old,change));
    }
    else
    {
        return(str1);
    }
}

/**
 * psDate1과 psDate2사이 간격
 */
function fComDateDiff(psDate1, psDate2)
{
    // 하루를 밀리초로 반환
    var llDyMilli = 1000 * 60 * 60 * 24;
    // Script에서의 Date형은 yyyy/MM/dd
    if (psDate1.substring(4,5) != "/")
    {
        psDate1 = fComReplace(psDate1, psDate1.substring(4,5), "/");
    }
    if (psDate2.substring(4,5) != "/")
    {
        psDate2 = fComReplace(psDate2, psDate2.substring(4,5), "/");
    }
    // 1970년 1월 1일 자정부터 해당 날짜 사이의 시간을 밀리초로 반환한 수의 차
    return(Math.round(Math.abs(Date.parse(psDate2) / llDyMilli))
         - Math.round(Math.abs(Date.parse(psDate1) / llDyMilli)));
}


/**
 * 주어진 날자의 long 데이트 값을 얻는다.
 */
function getDateFromFormat(val,format) {
	val=val+"";
	format=format+"";
	var i_val=0;
	var i_format=0;
	var c="";
	var token="";
	var token2="";
	var x,y;
	var now=new Date();
	var year=now.getYear();
	var month=now.getMonth()+1;
	var date=1;
	var hh=now.getHours();
	var mm=now.getMinutes();
	var ss=now.getSeconds();
	var ampm="";

	while (i_format < format.length)
	{
		// Get next token from format string
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length))
		{
			token += format.charAt(i_format++);
		}
		// Extract contents of value based on format token
		if (token=="yyyy")
		{
			if (token=="yyyy") { x=4;y=4; }
			year=_getInt(val,i_val,x,y);
			if (year==null) { return 0; }
			i_val += year.length;
			if (year.length==2) {
				if (year > 70) { year=1900+(year-0); }
				else { year=2000+(year-0); }
			}
		}
		else if (token=="MM")
		{
			month=_getInt(val,i_val,token.length,2);
			if(month==null||(month<1)||(month>12)){return 0;}
			i_val+=month.length;
		}
		else if (token=="dd")
		{
			date=_getInt(val,i_val,token.length,2);
			if(date==null||(date<1)||(date>31)){return 0;}
			i_val+=date.length;
		}
		else
		{
			if (val.substring(i_val,i_val+token.length) == token) {i_val+=token.length;}
			else {i_format = format.length;}
		}
	}
	// If there are any trailing characters left in the value, it doesn't match
	if (i_val != val.length) { return 0; }
	// Is date valid for month?
	if (month==2)
	{
		// Check for leap year
		if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) )
		{ // leap year
			if (date > 29){ return false; }
		}
		else { if (date > 28) { return false; }
	}
	}
	if ((month==4)||(month==6)||(month==9)||(month==11))
	{
		if (date > 30) { return false; }
	}
	// Correct hours value
	if (hh<12 && ampm=="PM") { hh=hh-0+12; }
	else if (hh>11 && ampm=="AM") { hh-=12; }
	var newdate=new Date(year,month-1,date,hh,mm,ss);
	return newdate.getTime();
}


/**
 * Int 형을 얻는다.
 */
function _getInt(str,i,minlength,maxlength) {
	for (var x=maxlength; x>=minlength; x--)
	{
		var token=str.substring(i,i+x);
		if (token.length < minlength) { return null; }
		if (_isInteger(token)) { return token; }
	}
	return null;
}

/**
 * Integer형을 얻는다.
 */
function _isInteger(val) {
	var digits="1234567890";
	for (var i=0; i < val.length; i++)
	{
		if (digits.indexOf(val.charAt(i))==-1) { return false; }
	}
	return true;
}

/**
 * 날자형식 변환(yyyyMMdd ==> yyyy-mm-dd)
 */
function getDateFormat(date, format) {
	var year = date.substring(0, 4);
	var mm = date.substring(4, 6);
	var dd = date.substring(6, 8);
	var del = format.substring(4, 5);
	return year + del + mm + del + dd
}


/*
입력날짜 기준으로 해당하는 월만큼 계산해서 리턴
fnAddMonth('20060501',4) 20060901 리턴
fnAddMonth('20060501',-4) 20060101 리턴
*/
function fnAddMonth(strTargetDate, strAmount) {

    var strYear   = Number(strTargetDate.substring(0,4));
    var saMon    = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

    if( ( ( strYear % 4 == 0 ) && ( strYear % 100 != 0 ) ) || ( strYear % 400 == 0 ) ){
        saMon[1] = "29";
    }else{
        saMon[1] = "28";
    }

    var strPhoneTime =
        new Date(strTargetDate.substring(0,4), strTargetDate.substring(4,6) - 1, strTargetDate.substring(6,8),0, 0, 0, 0);

    var tmp = Number(strAmount);
    var sMon = Number(strTargetDate.substring(4,6));
    var val = 0;

    if(tmp < 0) {
        tmp = tmp*-1;
        var chk = false;
        var tt = 0;

        for(var i = tmp; i > 0; i--) {

            if(chk){
                tt--;
            }else{
                tt = sMon--;
            }

            if(tt < 1){
                tt = 13;
                tt--;
                chk = true;
            }
            val += Number(saMon[tt-1]);
        }
        val = val*-1;

    }else{

        var chk = false;
        var tt = 0;
        for(var i = 0; i < tmp; i++){

            if(chk){
                tt++;
            }else{
                tt = sMon+i;
            }

            if(tt > 12){
                tt = 0;
                tt++;
                chk = true;
            }

            val += Number(saMon[tt-1]);
        }
    }

    var strIDay = strPhoneTime.getTime() + 24*3600*1000*val;
    var strDay = new Date();
    strDay.setTime(strIDay);

    var strYear = strDay.getYear();
    var strMonth = strDay.getMonth()+1;
    var strDay = strDay.getDate();

    if(strMonth < 10){
        strMonth = "0" + strMonth;
    }
    if(strDay < 10){
        strDay = "0" + strDay;
    }
    return strYear.toString()+strMonth.toString()+strDay.toString();

}

/*
입력날짜 기준으로 해당하는 일만큼 계산해서 리턴
fnAddDay('20060505',-4) 20060501 리턴
fnAddDay('20060505',-4) 20060509 리턴
*/
function fnAddDay(strTargetDate , strAmount){

    var strAmount = Number(strAmount);

    var strPhoneTime =
        new Date(strTargetDate.substring(0,4), strTargetDate.substring(4,6) - 1, strTargetDate.substring(6,8),0, 0, 0, 0);
    var strIDay = strPhoneTime.getTime() + 24*3600*1000*strAmount;
    var strDay = new Date();

    strDay.setTime(strIDay);

    var strYear = strDay.getYear();
    var strMonth = strDay.getMonth()+1;
    var strDay = strDay.getDate();

    if(strMonth < 10){
        strMonth = "0" + strMonth;
    }
    if(strDay < 10){
        strDay = "0" + strDay;
    }
    return strYear.toString()+strMonth.toString()+strDay.toString();
}

/*
* 날자를 기본 포멧으로 리턴한다.
*/
function fnOrgDateFormat(date) {
	if(date.length == 8) {
		return date;
	} else {
		var year = date.substring(0, 4);
		var mm = date.substring(4, 6);
		var dd = date.substring(6, 8);
		return year + mm + dd
	}
}


/*****
  * 사업자등록번호 체크
  * return : boolean
  * ex) 111-11-11111
  *****/
function check_worknum(strNumb) {
    strNumb = strNumb.replace(/-/g,"");
    sumMod = 0;
    sumMod += parseInt(strNumb.substring(0,1));
    sumMod += parseInt(strNumb.substring(1,2)) * 3 % 10;
    sumMod += parseInt(strNumb.substring(2,3)) * 7 % 10;
    sumMod += parseInt(strNumb.substring(3,4)) * 1 % 10;
    sumMod += parseInt(strNumb.substring(4,5)) * 3 % 10;
    sumMod += parseInt(strNumb.substring(5,6)) * 7 % 10;
    sumMod += parseInt(strNumb.substring(6,7)) * 1 % 10;
    sumMod += parseInt(strNumb.substring(7,8)) * 3 % 10;
    sumMod += Math.floor(parseInt(strNumb.substring(8,9)) * 5 / 10);
    sumMod += parseInt(strNumb.substring(8,9)) * 5 % 10;
    sumMod += parseInt(strNumb.substring(9,10));
    if (sumMod % 10 != 0) {
        return false;
    }
    return true;
}

function Check_SChar(df) {
	var k_code = df.value;
	var str = df.name;
	if (
		k_code.indexOf("'")!=-1 ||
		k_code.indexOf("$")!=-1 ||
		k_code.indexOf("&")!=-1 ||
		k_code.indexOf("!")!=-1 ||
		k_code.indexOf("~")!=-1 ||
		k_code.indexOf("(")!=-1 ||
		k_code.indexOf(")")!=-1 ||
		k_code.indexOf("\\")!=-1
	) {
		alert("특수문자는 입력할수 없습니다.");
		obj=document.getElementById(str);
		obj.value=obj.value.replaceAll("'","");
		obj.value=obj.value.replaceAll("$","");
		obj.value=obj.value.replaceAll("&","");
		obj.value=obj.value.replaceAll("!","");
		obj.value=obj.value.replaceAll("~","");
		obj.value=obj.value.replaceAll("(","");
		obj.value=obj.value.replaceAll(")","");
		obj.value=obj.value.replaceAll("\\","");
		return false;
	}
}



/*
**  화면 정중앙에 POPUP WINODOW OPEN
*/
function fnOpenCenterUserMulti(corporate_regist_no) {

	var w = 450;
	var h = 595;
	var name = "searchUserMulti";
	var url = "/v20/common/searchUserMultiPopup.jsp";
	if(corporate_regist_no != null && corporate_regist_no != "undefined" && corporate_regist_no != "") {
		url += "?corporate_regist_no=" + corporate_regist_no
	}

	var wl = (window.screen.width/2) - ((w/2) + 10);
	var wt = (window.screen.height/2) - ((h/2) + 50);

	var option = "status=no,height="+h+",width="+w+",resizable=no,left="+wl+",top="+wt+",screenX="+wl+",screenY="+wt+",scrollbars=no";
	var userPopWin = window.open( url, name, option );
	userPopWin.focus();
}

function fnOpenCenterUserSingle(corporate_regist_no) {

	var w = 450;
	var h = 475;
	var name = "searchUserSingle";
	var url = "/v20/common/searchUserSinglePopup.jsp";
	if(corporate_regist_no != null && corporate_regist_no != "undefined" && corporate_regist_no != "") {
		url += "?corporate_regist_no=" + corporate_regist_no
	}

	var wl = (window.screen.width/2) - ((w/2) + 10);
	var wt = (window.screen.height/2) - ((h/2) + 50);

	var option = "status=no,height="+h+",width="+w+",resizable=no,left="+wl+",top="+wt+",screenX="+wl+",screenY="+wt+",scrollbars=no";
	var userPopWin = window.open( url, name, option );
	userPopWin.focus();
}

function fnOpenCenterDocTypeSingle(owner, resource_id) {
	if(owner == null || owner == "") {
		owner = "standard";
	}

	var w = 450;
	var h = 515;
	var name = "docTypeTreeSingle";
	var url = "/nosm/admin/edmsService.do?dispatch=initDocType&auth_all=Y&forward=docTypeFormSinglePopup&owner=" + owner + "&resource_id=" + resource_id;

	var wl = (window.screen.width/2) - ((w/2) + 10);
	var wt = (window.screen.height/2) - ((h/2) + 50);

	var option = "status=no,height="+h+",width="+w+",resizable=no,left="+wl+",top="+wt+",screenX="+wl+",screenY="+wt+",scrollbars=no";
	var userPopWin = window.open( url, name, option );
	userPopWin.focus();
}



function on_ClearOption(obj) {
	if(obj == null) return;

	var len = obj.length;

	for(var i=len-1; i>=0; i--) {
		obj.options[i] = null;
	}
}

function on_AddOption(obj, text, value) {
	var newOption = new Option(text, value, "false");
	obj[obj.length] = newOption;
}

function on_GoHomePage(cp) {
	top.location.href = cp;
}

function on_GoAdminPage() {
	top.location.href = "/admin/common.do?dispatch=main"; // /admin
}

function _CalcTerm(date, y, m) {
	var year   = Number(date.substring(0,4));
	var mon   = Number(date.substring(4,6));
	var mon2 = mon;
	var day   = Number(date.substring(6,8));

    var mons    = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

    if( ( ( year % 4 == 0 ) && ( year % 100 != 0 ) ) || ( year % 400 == 0 ) ){
        mons[1] = "29";
    } else {
        mons[1] = "28";
    }

	mon = parseInt((mon + Number(m)) % 12);
	if(mon == 0) {
		mon = 12;
	}

	if(day > mons[mon - 1]) {
		day = 0 + (day - mons[mon - 1]);
		mon += 1;
	}

	var _m = parseInt((mon2 + Number(m)) / 12);
	if(parseInt((mon2 + Number(m)) % 12) == 0) {
		_m = 0; 
	}
	year += Number(y) + _m;

	var sMon = mon + "";
	var sDay = day + "";
	if(mon < 10) {
		sMon = "0" + mon + "";
	}
	if(day < 10) {
		sDay = "0" + day + "";
	}

	return year.toString() + sMon + sDay;
}

function _replace(source,from,to) {
	var result = '';
	var index0 = source.indexOf(from);
	while(index0>0) {
		//source = source.substring(0,index0) + to + source.substring(index0+from.length+1);
		source = source.substring(0,index0) + to + source.substring(index0+from.length); // modify by jiman(2008-05-07)
		index0 = source.indexOf(from);
	}
	return source;
}

/* ===================================================================
	Function : _onlyNumberInput()
	Return 	 :
	Usage 	 : 숫자만 입력 가능 (onKeyDown 이벤트)
	ex       : <input size="14" type="text" name="jumin" maxLength="14" onKeyDown="_onlyNumberInput();">
=================================================================== */
function _onlyNumberInput(){
 var code = window.event.keyCode;

 /*if ((code > 32 && code < 48) || (code > 57 && code < 65) || (code > 90 && code < 97)){
    window.event.returnValue = false;
	return;
 }*/

 if ((code > 32 && code < 48) || (code > 57 && code < 65) || (code > 90 && code < 97) || (code > 34 && code < 41) || (code > 47 && code < 58) || (code > 95 && code < 106) || code == 8 || code == 9 || code == 13 || code == 46){
  window.event.returnValue = true;
  return;
 }
 window.event.returnValue = false;
}

/**
 * 두 날짜 사이의 날수 구하기(yyyymmdd)
 *
 * @param		sFrom
 * @param		sTo
 * @return	days
 */
function _DateDiff (sFrom, sTo) {
	var dFrom = new Date(_convertInt(sFrom.substr(0,4)), _convertInt(sFrom.substr(4,2))-1, _convertInt(sFrom.substr(6,2)));
	var dTo = new Date(_convertInt(sTo.substr(0,4)), _convertInt(sTo.substr(4,2))-1, _convertInt(sTo.substr(6,2)));

	return Math.ceil((dTo - dFrom) / 1000 / 24 / 60 / 60)
}

/**
 * 날짜 포멧 변경하기
 *
 * @param		sFrom
 * @param		sTo
 * @return	days
 */
function _DateFormat (date, delim) {
	var rtn = "";
	if(date.length > 8) {
		rtn = date.substring(0, 4) + delim + date.substring(5, 7) + delim + date.substring(8, 10);
	} else {
		rtn = date.substring(0, 4) + delim + date.substring(4, 6) + delim + date.substring(6, 8);
	}

	return rtn;
}

/**
 * parsetInt()의 대용 메소드, parsetInt()에소드에서 오류가 발생하여 작성
 *
 * @param		iValue
 * @return	convert value (Numeric이 아닌 경우 0)
 */
function _convertInt (iValue) {
	if (_isNumber(iValue.toString()) == false) return 0;

	return parseInt(parseFloat(iValue));
}

/**
 * Returns a Boolean value indicating whether an expression can be evaluated as a number
 * (this includes values like $15,656.00)
 *
 * @param		expression		variant containing a numeric expression or string expression.
 * @return	boolean
 */
function _isNumber (expression) {
	expression = expression.toLowerCase();
	var refString = "0123456789.-";

	if (expression.length < 1) return (false);

	for (var i = 0; i < expression.length; i++)	{
		var ch = expression.substr(i, 1)
		var a = refString.indexOf(ch, 0)
		if (a == -1) return (false);
	}
	return(true);
}

//onkeydown 이벤트시 숫자만 입력받는다. 백스페이스, 엔터, del, 방향 및 탭문자는 허용한다.(rhkd)
function numberOnly() {
    if (event.keyCode==8 || event.keyCode==9 || event.keyCode==13 || event.keyCode==46 || event.keyCode==37 || event.keyCode==38 || event.keyCode==39 || event.keyCode==40) //backspace, tab, enter, del, 방향
        return;
    if ( !( (event.keyCode>=48 && event.keyCode<=57) || (event.keyCode>=96 && event.keyCode<=105) ) ) {
        alert("숫자만 입력하십시오.");
        event.returnValue = false; return;
    }
}
function numberOnly2() { //숫자+하이픈문자(-)
    if (event.keyCode==8 || event.keyCode==9 || event.keyCode==189 ) //backspace, tab, -
        return;

    //if (event.keyCode<48 || event.keyCode>57) {
    if ( !( (event.keyCode>=48 && event.keyCode<=57) || (event.keyCode>=96 && event.keyCode<=105) ) ) {
        alert("숫자와 - 문자만 입력하십시오.");
        event.returnValue = false; return;
    }
}

function numberOnly3(obj) {
    if (event.keyCode==8 || event.keyCode==9 || event.keyCode==13 || event.keyCode==46 || event.keyCode==37 || event.keyCode==38 || event.keyCode==39 || event.keyCode==40) //backspace, tab, enter, del, 방향
        return;
    if ( !( (event.keyCode>=48 && event.keyCode<=57) || (event.keyCode>=96 && event.keyCode<=105) || event.keyCode==110 || event.keyCode==190 ) ) {
        alert("숫자만 입력하십시오.");
        event.returnValue = false; return;
    }
	
    if(event.keyCode==110 || event.keyCode==190) {
		if (obj.value.indexOf(".") >= 2) {
			alert("숫자만 입력하십시오.");
            event.returnValue = false; return;
        }
	}
    }




function _result_message(result, message) {
	if(result == "Y") {
		document.getElementById("RESULT_MESSAGE").color = "#3366CC";
		document.getElementById("RESULT_MESSAGE").innerHTML = message;
	} else {
		document.getElementById("RESULT_MESSAGE").color = "#FF00CC";
		document.getElementById("RESULT_MESSAGE").innerHTML = '* ' + message;
	}
}


// 파일 다운로드
if(!document._download_form) {
	document.write("<form name='_download_form' method='post' action='/v20/common/download.jsp'><input type='hidden' name='file_path'><input type='hidden' name='target_filename'><input type='hidden' name='source_filename'></form>");
}
function _download(file_path, target_filename, source_filename, target) {
	if(target == null || target == "") { target = "_self"; }
	document._download_form.file_path.value = file_path;
	document._download_form.target_filename.value = target_filename;
	document._download_form.source_filename.value = source_filename;
	document._download_form.target = target;
	document._download_form.submit();
}

//상단의 메인 숫자키인지 여부
function isNumberMainKey(keyCode) {
    if (keyCode>=48 && keyCode<=57)
        return true;
    return false;
}
//오른쪽의 숫자키인지 여부
function isNumberSubKey(keyCode) {
    if (keyCode>=96 && keyCode<=105)
        return true;
    return false;
}

//상단 or 오른쪽의 숫자키인지 여부
function isNumberKey(keyCode) {
    return (isNumberMainKey(keyCode) || isNumberSubKey(keyCode));
}

//알파벳키인지 여부
function isAlphaKey(keyCode) {
    if (keyCode>=65 && keyCode<=90)
        return true;
    return false;
}

//기능키인지 여부
function isFunctionKey(keyCode) {
    if (keyCode>=112 && keyCode<=123) //F1 ~ F12
        return true;
    return false;
}

//'이름' 항목에 입력가능한 필드 제한
function restrictNameField(kcode, event) {
    //backspace, tab, enter, shift, space, delete
    if ( kcode==8 || kcode==9 || kcode==13 || kcode==16 || kcode==32 || kcode==46 )
        return true;

    //영문, 한글(한영키), 점(.), 콤마(,) 만 입력가능
    if ( !( isAlphaKey(kcode) || kcode==229 || kcode==188 || kcode==190 ) ) {
        alert("이름 항목에 입력할 수 없는 문자입니다.");
        if (event!=null)
            event.returnValue = false;
        return false;
    }
    return true;
}

function _check_user_id(user_id) {
	if(user_id == "standard" || user_id == "STANDARD") {
		alert(user_id + " 는 사용 할 수 없는 아이디 입니다.");
		return false;
	}
	return true;
}

// 조직도
if(!document._org_info_form) {
	document.write("<form name='_org_info_form' method='post'></form>");
}
function on_PupupOrgInfoSingle() {
	var page = '/admin/user.do?dispatch=getDeptTreeList&forward=searchUserSinglePopup';
	var df = document._org_info_form;
	var w = 800;
	var h = 768;
	var wl = (window.screen.width/2) - ((w/2) + 10);
	var wt = (window.screen.height/2) - ((h/2) + 50);

	var option = "status=yes,height="+h+",width="+w+",resizable=yes,left="+wl+",top="+wt+",screenX="+wl+",screenY="+wt+",scrollbars=yes";
	commonPopWin = window.open( '', "org_info_win", option );
	df.target = "org_info_win";
	df.action = page;
	df.submit();
	commonPopWin.focus();
}

function on_PupupOrgInfoMulti() {
	var page = '/admin/user.do?dispatch=getDeptTreeList&forward=searchUsersiMultiPopup';
	var df = document._org_info_form;
	var w = 800;
	var h = 768;
	var wl = (window.screen.width/2) - ((w/2) + 10);
	var wt = (window.screen.height/2) - ((h/2) + 50);

	var option = "status=yes,height="+h+",width="+w+",resizable=yes,left="+wl+",top="+wt+",screenX="+wl+",screenY="+wt+",scrollbars=yes";
	commonPopWin = window.open( '', "org_info_win", option );
	df.target = "org_info_win";
	df.action = page;
	df.submit();
	commonPopWin.focus();
}

/*if (document.getElementById('_progress_bar_content') == null) {
	document.write("<div id='_progress_bar_content' style='display: none;'>");
	document.write("<h1>Loading...</h1>");
	
	document.write("업무를 처리중 입니다.<br>잠시만 기다려 주십시오.");
	document.write("<br>");
	document.write("<br>");
	
	document.write("<img src='/resources/images/ProgressBar.gif' width='260px' height='36px'>");
	document.write("</div>");
}*/
if (document.getElementById('_progress_bar_content') == null) {
    document.write("<div id='_progress_bar_content' style='display: none;'>");
    document.write("<img src='/v20/resources/images/ProgressBar.gif' width='250px' height='120px'>");
    document.write("</div>");
}

function _progressbar_open() {
    $("#_progress_bar_content").modal();
}

function _progressbar_close() {
    $("#simplemodal-container a.modalCloseImg").click();
}
    
function _on_PreactivityHistPopUp(project_id, activity_key, activity_name) {
    //var df = document.form2;
      //df.dispatch.value = "getPlanList";
      fnOpenCenterWin("/work/todo.do?dispatch=getRAIDHist&project_id="+ project_id + "&activity_key=" + activity_key + "&activity_name=" + encodeURI(activity_name), "RAID_Hist", "787", "700", "yes");
}
    
function _on_ManualPopUp(activity_key) {
      fnOpenCenterWin("/admin/activity.do?dispatch=getActivityViewManual&activitykey=" + activity_key, "Job_Manual", "830", "668", "yes");
}

function on_ToggleMenu(menu_id, child_idx) {


	$('.tr_menu_' + menu_id).each(on_ToggleMenu2);
}


function on_ToggleMenu2() {

				if($(this).css("display") == "" || $(this).css("display") == "block" || $(this).css("display") == null) {
					//$(this).css("display", "none");
					$('.closeAll').each(on_ToggleMenu3);
				} else {
					$(this).css("display", "");
				}
}


function on_ToggleMenu3() {

					$(this).css("display", "none");
}

function _AddSelect(id, value, text, isSel) {
    var obj = $("#" + id).get(0); //document.getElementById(id);
        obj.options[obj.length] = new Option(text, value);
}

function _DelSelect(id, value) {
    var obj = $("#" + id).get(0);//document.getElementById(id);
    for(var i=obj.options.length - 1; i>=0; i--) {
         if(obj.options[i].value == value) {
            obj.options[i]=null;
            return;
         }
    }
}

function _ClearSelect(id) {
    var obj = $("#" + id).get(0);//document.getElementById(id);
    for(var i=obj.options.length - 1; i>=0; i--) {
    	obj.options[i]=null;
    }
}





function MM_preloadImages() { //v3.0
	  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
	}

	function MM_swapImgRestore() { //v3.0
	  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
	}

	function MM_findObj(n, d) { //v4.01
	  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	  if(!x && d.getElementById) x=d.getElementById(n); return x;
	}

	function MM_swapImage() { //v3.0
	  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
	}
	function MM_showHideLayers() { //v9.0
	  var i,p,v,obj,args=MM_showHideLayers.arguments;
	  for (i=0; i<(args.length-2); i+=3) 
	  with (document) if (getElementById && ((obj=getElementById(args[i]))!=null)) { v=args[i+2];
	    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
	    obj.visibility=v; }
	}

	
	function _nvl(str) {
		if(str == null || str == "undefined") {
			return "";
		}
		return str;
	}
	
	// 메뉴 링크
	if(!document._menu_link_form) {
		document.write(
				"<form name='_menu_link_form' method='post'>" + 
				"	<input type='hidden' name='menu_id' />" +
				"	<input type='hidden' name='parent_menu_id' />" +
				"	<input type='hidden' name='menu_auth_yn' />" +
				"	<input type='hidden' name='menu_gubun' />" +
				"	<input type='hidden' name='menu_link' />" +
				"</form>");
	}
	function _on_GoMenuUrl(url, menu_id, parent_menu_id, menu_auth_yn, menu_gubun, menu_link, target) {
		document._menu_link_form.action = url;
		document._menu_link_form.menu_id.value = menu_id;
		document._menu_link_form.parent_menu_id.value = parent_menu_id;
		document._menu_link_form.menu_auth_yn.value = menu_auth_yn;
		document._menu_link_form.menu_gubun.value = menu_gubun;
		document._menu_link_form.menu_link.value = menu_link;
		if(target != null && target != "") {
			document._menu_link_form.target = target;
		} else {
			document._menu_link_form.target = "_self";
		}
		document._menu_link_form.submit();
	}
