var _fU_localeCode ="KO";

var COMMON_SCRIPT_00001 = jexComMl("formValidation_J0001","필수 입력 사항입니다.");

// 키보드 auto Focus 기능 제한
var IS_INT_AUTO_FOCUS       = true;
var FIRST_FOCUS_FIELD_ID    = "";
// 필수속성값 체크여부. 개발시 사용권고.
var CHK_NOTNUL_ATTRIBUTE    = false;

// IE여부
var IS_IE = false;
if(navigator.appName == 'Microsoft Internet Explorer') {
    IS_IE = true;
}

// 파이어폭스
var IS_FF = false;
if(navigator.userAgent.indexOf("Firefox")>-1) {
    IS_FF = true;
}

// 오페라브라우저 여부
var IS_OPERA = false;
if(navigator.appName.indexOf('Opera') > -1) {
    IS_OPERA = true;
}

var IS_IME_MODE = true;
if(!IS_IE && !IS_FF) {
    /*IE와 파이어폭스만 IME-MODE가 잘됨*/
    IS_IME_MODE = false;
}

var ENTFUNC = "";
/**
 * 최초 로딩시 페이지 초기 설정
*/
function initializeHtmlPage(isPopup)
{
    for ( var i = 0 ; i < document.forms.length ; i++)
    {
        if(document.forms[i].autocomplete == undefined) document.forms[i].autocomplete = "off";
        document.forms[i].initialize = initializeHtmlForm;
        document.forms[i].initialize();
    }
    
  // 마우스 기능 제한(오른쪽 버튼 무시)
  var IS_INT_MOUSE = false;

  // 특수키 기능 제한(Ctrl + R, Ctrl + N, F5, Ctrl + V)
  var IS_INT_KEY = false;   
//    if(_SERVER_DS=="U" || _SERVER_DS=="P"){
//        IS_INT_MOUSE    = true;
//        IS_INT_KEY      = true;
//    }

    if(IS_INT_MOUSE) {
    	
        document.oncontextmenu = function(){return false;}
    	
    }
    if (IS_INT_KEY){
        if(document.body)
            document.body.onkeydown = processKey;
    }
    
    
	// ipinside 호출 
	if (typeof IPinside == 'object') {
		if(typeof(isPopup) != "undefined" && isPopup != null && isPopup == true) {
			cf_initRaonKey(isPopup);
		}else{
			IPinside_Init(cf_initRaonKey, isPopup);
		}		
	} else {
		cf_initRaonKey(isPopup);
	}
	
	//cf_initRaonKey(isPopup);

	
	//'윈도우이고 && 보안키보드 적용하는 경우' 가  아닌 경우  모두 보안키패드 숨김(모바일,Mac,linnux)  2016.11.17
	if( !cf_isTouchEnValidChk()){
		$('.virInp, .virImgIco').addClass('none'); //보안키패드 아이콘 숨김
	}
	
	//모든 form의  자동완성을 없앤다.  2016.11.29
	$('form').attr('autocomplete','off');

	//로케일(언어)정보에 따라 'body' 에 클래스를 추가삭제 한다.
	if( jexjs.getLang() == "EN" ) {
		$('body').addClass("en");
	}else{
		$('body').removeClass("en");
	}

}


function cf_initRaonKey(isPopup) {
	var _isInstall = true;
	if(cf_getCookie("_IS_TOUCHEN_CHECK") == "N"){
		_isInstall = false;
	}else{
		_isInstall = true;
	}
    if(typeof(isPopup) != "undefined" && isPopup != null && isPopup == true) {
    	/* 팝업 보안키보드/키패드 객체 초기화.  */
    	if(cf_isRaonSecu()){
    		/* PC 보안키보드/키패드 실행.(TouchEnNx.js) */
	    	if(cf_isTouchEn()){
	    		if(_isInstall){
	    			initTranskey();
	    		}else{
	    			initTranskey('card');
	    		}
	    		TK_Rescan(); 
	    	} else {
	    		initmTranskey();
	    	}
    	}
    } else {
    	/* Main 보안키보드/키패드 객체 초기화.  */
    	if(cf_isRaonSecu()){
		    /* PC 보안키보드/키패드 실행.(TouchEnNx.js) */
		    if(cf_isTouchEn()){
		    	TK_Loading();
			    if(_isInstall){initTranskey();}else{initTranskey('card');}			    
		    } else {
		    	initmTranskey();
		    }
    	}
    }
}


/**
 * 특수키 기능을 제한하는 함수. (Ctrl + R, Ctrl + N, F5, Ctrl + V, ESC)
 */
function processKey() {
	if( (event.ctrlKey == true && (event.keyCode == 78 || event.keyCode == 82 || event.keyCode == 86)) || (event.keyCode >= 112 && event.keyCode <= 123) || event.keyCode == 27) {
		if(event.keyCode == 116){
			fvAlert(COMMON_SCRIPT_00020);
		}
		event.keyCode = 0;
		event.cancelBubble = true;
		event.returnValue = false;
	}
}


/**
 * 특수키 기능을 제한하는 함수. (Ctrl + R, Ctrl + N, F5, Ctrl + V)
 *  Ctrl + V 허용  || event.keyCode == 86
 */
/*
 * event.returnValue 멀티브라우저처리
 */
 function returnValue(event){
    event = checkEvent(event);

    if(IS_IE){
        event.returnValue = false;
    }else{
        event.preventDefault();
    }

}


/**
 * keycode값 리턴
 * ex) getKeycode(event);
 * @param event : 이벤트 객체
 * @return : 멀티브라우저용 keycode값
 */
function getKeycode(event){
    var keycode = IS_IE ? event.keyCode : event.which;

    return keycode;
}


/**
 * 이벤트가 발생한 객체 리턴
 * ex) getEventElement(event);
 * @param event : 이벤트 객체
 * @return : 멀티브라우저용 이벤트가 발생한 객체
 */
function getEventElement(event){
    var elem = IS_IE ? event.srcElement : event.target;

    return elem;
}

/**
 *  특정폼을 Initalize 시키는 함수
 */
function formInitalizer(frm) {
    frm.initialize = initializeHtmlForm;
    frm.initialize();
}

/**********************
* <pre>
* validation check 함수
* </pre>
* @param : validation 검사를 할 폼.
* @return : boolean
* @see
************************/
function initValidationCheck(checkForm)
{
    for (var i = 0 ; i < checkForm.elements.length ; i++)
    {
        /* mask한 값에서 마스크 값 삭제 */
    	if ( ( checkForm.elements[i].getAttribute("maskform") != null && checkForm.elements[i].getAttribute("maskform") != undefined && checkForm.elements[i].getAttribute("maskform") != "")
            || ( checkForm.elements[i].getAttribute("userfmt") != null && checkForm.elements[i].getAttribute("userfmt") != undefined && checkForm.elements[i].getAttribute("userfmt") != "")
            || (checkForm.elements[i].getAttribute("chartype")!=null &&
               ( checkForm.elements[i].getAttribute("chartype").toLowerCase() =="money" || checkForm.elements[i].getAttribute("chartype").toLowerCase() =="floatmoney"|| checkForm.elements[i].getAttribute("chartype").toLowerCase() =="fexmoney"|| checkForm.elements[i].getAttribute("chartype").toLowerCase() =="zeromoney") ) )
        {
            if(checkForm.elements[i].getAttribute("maskform")!=null && checkForm.elements[i].getAttribute("maskform").toLowerCase() == "usermask")
            {
                checkForm.elements[i].value = unMaskEngNum(checkForm.elements[i].value);/* 사용자 마스크 지우기 로직. */
            } else if(checkForm.elements[i].getAttribute("chartype")!=null && (checkForm.elements[i].getAttribute("chartype").toLowerCase() =="floatmoney" || checkForm.elements[i].getAttribute("chartype").toLowerCase() =="fexmoney")) {
                checkForm.elements[i].value = getOnlyFloatNumberFormat(checkForm.elements[i].value);
            } else if(checkForm.elements[i].getAttribute("chartype")!=null && (checkForm.elements[i].getAttribute("chartype").toLowerCase() =="money" || checkForm.elements[i].getAttribute("chartype").toLowerCase() =="zeromoney")) {
            	checkForm.elements[i].value = getOnlyIntFormat(checkForm.elements[i].value);
            } else {
                checkForm.elements[i].value = getOnlyNumberFormat(checkForm.elements[i].value);
            	
            }
        }

        /* input 타입 */
        /* if (checkForm.elements[i].tagName.toString().toLowerCase() == "input" ) */
        if (checkForm.elements[i].nodeName.toString().toLowerCase() == "input")
        {
        	
            /* 필수 값 체크 */
            if (checkForm.elements[i].getAttribute("nullable") == "false")
            {
            /* alert("title -> "+checkForm.elements[i].getAttribute("title")); */
                if(checkForm.elements[i].type.toString().toLowerCase() == "text" || checkForm.elements[i].type.toString().toLowerCase() == "password"
                	 || checkForm.elements[i].type.toString().toLowerCase() == "tel")
                {
                    if( checkForm.elements[i].value == "" )
                    {
                    	
                        if(checkForm.elements[i].getAttribute("colname") != null && checkForm.elements[i].getAttribute("colname") != undefined &&
                            checkForm.elements[i].getAttribute("colname") != "") {
                        	fvAlert( "[" + checkForm.elements[i].getAttribute("colname")  + "] " + COMMON_SCRIPT_00001, checkForm.elements[i].name);  /* alert 메세지 함수 호출 */
                        }else if(checkForm.elements[i].getAttribute("title") != null && checkForm.elements[i].getAttribute("title") != undefined &&
                                checkForm.elements[i].getAttribute("title") != "") {
                        	
                        	var tmpObj = checkForm.elements[i];
                        	fvAlert( "[" + checkForm.elements[i].getAttribute("title")  + "] " + COMMON_SCRIPT_00001, checkForm.elements[i].name);  /* alert 메세지 함수 호출 */
	                    }else if($("label[for=" + checkForm.elements[i].id + "]").text() != null && $("label[for=" + checkForm.elements[i].id + "]").text() != undefined &&
	                    		$("label[for=" + checkForm.elements[i].id + "]").text() != "") {
	                    	fvAlert( "[" + $("label[for=" + checkForm.elements[i].id + "]").text() + "] " + COMMON_SCRIPT_00001, checkForm.elements[i].name);  /* alert 메세지 함수 호출 */
	                    } else {
	                    	fvAlert( COMMON_SCRIPT_00001, checkForm.elements[i].name);/* alert 메세지 함수 호출 */
                        }
                        if (_ensight_flag == "Y") {
                        	//console.log("ENSIGHTEN call : type=4, filed_name="+getObjLabel(checkForm.elements[i]));
                        	callEnsighten("4", checkForm.elements[i]);
                        }
                        return false;
                    }

                } else if(checkForm.elements[i].type.toString().toLowerCase() == "checkbox" || checkForm.elements[i].type.toString().toLowerCase() == "radio")
                {
                    var checkState = false;
                    var elementArray = eval("checkForm."+checkForm.elements[i].name);

                    for(var ct = 0 ; ct < elementArray.length ; ct++)
                    {

                        if(elementArray[ct].checked == true)
                        {
//                            alert(elementArray[ct]);
                            checkState = true;
                            break;
                        }
                    }
                    if (checkState == false)
                    {
                    	if (checkForm.elements[i].type.toString().toLowerCase() == "radio") {
                    		fvAlert(COMMON_SCRIPT_00001, checkForm.elements[i].name);/* alert 메세지 함수 호출 */
                    	} else {
	                        if(checkForm.elements[i].getAttribute("colname") != null && checkForm.elements[i].getAttribute("colname") != undefined && checkForm.elements[i].getAttribute("colname") != "") {
	                            fvAlert("[" + checkForm.elements[i].getAttribute("colname")  + "] " + COMMON_SCRIPT_00001, checkForm.elements[i].name);/* alert 메세지 함수 호출 */
	                        }else if(checkForm.elements[i].getAttribute("title") != null && checkForm.elements[i].getAttribute("title") != undefined && checkForm.elements[i].getAttribute("title") != "") {
	                            fvAlert("[" + checkForm.elements[i].getAttribute("title")  + "] " + COMMON_SCRIPT_00001, checkForm.elements[i].name);/* alert 메세지 함수 호출 */
		                    }else if($("label[for=" + checkForm.elements[i].id + "]").text() != null && $("label[for=" + checkForm.elements[i].id + "]").text() != undefined &&	$("label[for=" + checkForm.elements[i].id + "]").text() != "") {
		                        fvAlert("[" + $("label[for=" + checkForm.elements[i].id + "]").text() + "] " + COMMON_SCRIPT_00001, checkForm.elements[i].name);/* alert 메세지 함수 호출 */
		                    } else {
		                    	fvAlert(COMMON_SCRIPT_00001, checkForm.elements[i].name);/* alert 메세지 함수 호출 */
		                    }
                    	}

                         //checkForm.elements[i].focus();
                        if (_ensight_flag == "Y") {
                        	//console.log("ENSIGHTEN call : type=4, filed_name="+getObjLabel(checkForm.elements[i]));
                        	callEnsighten("4", checkForm.elements[i]);
                        }
                        return false;
                    }
                }
            }

            if( checkForm.elements[i].value != "")
            {
                /* 최대값 체크 */
                if (checkForm.elements[i].getAttribute("maximum") != null && checkForm.elements[i].getAttribute("maximum")  != undefined && checkForm.elements[i].getAttribute("maximum") != "")
                {
                    if ( !validationMaximum(checkForm.elements[i].getAttribute("maximum")  , checkForm.elements[i].value) )
                    {
                        var errMsg = COMMON_SCRIPT_00002;    /* 입력값을  % 사이로 입력해 주시기 바랍니다. */
                        if(checkForm.elements[i].getAttribute("minimum") != null && checkForm.elements[i].getAttribute("minimum") != undefined && checkForm.elements[i].getAttribute("minimum") != "") {
                        /* minimum까지 설정되어 있으면.. */
                            //min, max 의 값이 동일하면  범위없이 값만 찍어준다
                            if(checkForm.elements[i].getAttribute("minimum") == checkForm.elements[i].getAttribute("maximum")){
                                //errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("maximum"));
                                errMsg = errMsg.replace("%",changeIntMoneyType(checkForm.elements[i].getAttribute("maximum")));
                            }else{
                                //errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minimum")+" ~ "+checkForm.elements[i].getAttribute("maximum"));
                                errMsg = errMsg.replace("%",changeIntMoneyType(checkForm.elements[i].getAttribute("minimum"))+" ~ "+changeIntMoneyType(checkForm.elements[i].getAttribute("maximum")));
                            }
                        }else{
                        /* maximum만 설정되어 있으면.. */
                            //errMsg = errMsg.replace("%"," ~ "+checkForm.elements[i].getAttribute("maximum"));
                            errMsg = errMsg.replace("%"," ~ "+changeIntMoneyType(checkForm.elements[i].getAttribute("maximum")));
                        }

                        /*  최대값 체크 */
                        if(checkForm.elements[i].getAttribute("colname") != null && checkForm.elements[i].getAttribute("colname") != undefined &&
                            checkForm.elements[i].getAttribute("colname") != "") {
                            fvAlert("[" + checkForm.elements[i].getAttribute("colname")  + "] " + errMsg, checkForm.elements[i].name);/* alert 메세지 함수 호출 */
                        }else if(checkForm.elements[i].getAttribute("title") != null && checkForm.elements[i].getAttribute("title") != undefined &&
                                    checkForm.elements[i].getAttribute("title") != "") {
                                    fvAlert("[" + checkForm.elements[i].getAttribute("title")  + "] " + errMsg, checkForm.elements[i].name);/* alert 메세지 함수 호출 */
                        } else {
                            fvAlert(errMsg, checkForm.elements[i].name);
                        }
                        checkForm.elements[i].select();
                        return false;
                    }
                }


                /* 최소값 체크 */
                if ( checkForm.elements[i].getAttribute("minimum") != null && checkForm.elements[i].getAttribute("minimum") != undefined && checkForm.elements[i].getAttribute("minimum") != "")
                {
                    if ( !validationMinimum(checkForm.elements[i].getAttribute("minimum")  , checkForm.elements[i].value) )
                    {
                        var errMsg = COMMON_SCRIPT_00002;
                        if(checkForm.elements[i].getAttribute("maximum") != null && checkForm.elements[i].getAttribute("maximum") != undefined && checkForm.elements[i].getAttribute("maximum") != "") {
                        /* maximum까지 설정되어 있으면.. */
                            //min, max 의 값이 동일하면  범위없이 값만 찍어준다
                            if(checkForm.elements[i].getAttribute("minimum") == checkForm.elements[i].getAttribute("maximum")){
                                //errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minimum"));
                                errMsg = errMsg.replace("%",changeIntMoneyType(checkForm.elements[i].getAttribute("minimum")));
                            }else{
                                //errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minimum")+" ~ "+checkForm.elements[i].getAttribute("maximum"));
                                errMsg = errMsg.replace("%",changeIntMoneyType(checkForm.elements[i].getAttribute("minimum"))+" ~ "+changeIntMoneyType(checkForm.elements[i].getAttribute("maximum")));
                            }
                        }else{
                        /* minimum만 설정되어 있으면.. */
                            //errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minimum")+" ~ ");
                            errMsg = errMsg.replace("%",changeIntMoneyType(checkForm.elements[i].getAttribute("minimum"))+" ~ ");
                        }

                        /* 최소값 체크 */
                        if(checkForm.elements[i].getAttribute("colname") != undefined && checkForm.elements[i].getAttribute("colname") != "") {
                            fvAlert("[" + checkForm.elements[i].getAttribute("colname")  + "] " + errMsg , checkForm.elements[i].name);/* alert 메세지 함수 호출 */
                        }else if(checkForm.elements[i].getAttribute("title") != undefined && checkForm.elements[i].getAttribute("title") != "") {
                            fvAlert("[" + checkForm.elements[i].getAttribute("title")  + "] " + errMsg , checkForm.elements[i].name);/* alert 메세지 함수 호출 */
                        } else {
                            fvAlert(errMsg, checkForm.elements[i].name);
                        }
                        checkForm.elements[i].select();
                        return false;
                    }
                }

                //최대 바이트 체크
                if ( checkForm.elements[i].getAttribute("maxbyte") != undefined && checkForm.elements[i].getAttribute("maxbyte") != "")
                {
                    if ( !validationMaxByte(checkForm.elements[i].value , checkForm.elements[i].getAttribute("maxbyte"), checkForm.elements[i].getAttribute("numfullchar")) )
                    {
                        var errMsg = COMMON_SCRIPT_00003+"(BYTE)";
                        if(checkForm.elements[i].getAttribute("minbyte") != undefined && checkForm.elements[i].getAttribute("minbyte") != "") {
                        //minbyte까지 설정되어 있으면..
                            errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minbyte")+"~"+checkForm.elements[i].getAttribute("maxbyte"));
                        }else{
                        //maxbyte만 설정되어 있으면..
                            errMsg = errMsg.replace("%","~"+checkForm.elements[i].getAttribute("maxbyte"));
                        }

                        var kor_cnt = Math.floor(checkForm.elements[i].getAttribute("maxbyte")/2);
                        //colname 어트리뷰트 추가되면서 비교하는 if문 추가.20080129
                        if(checkForm.elements[i].getAttribute("colname") != undefined) {
                            fvAlert("[" + checkForm.elements[i].getAttribute("colname")  + "] " + errMsg, checkForm.elements[i].name );//alert 메세지 함수 호출
                        }else if(checkForm.elements[i].getAttribute("title") != undefined && checkForm.elements[i].getAttribute("title") != "") {
                            fvAlert("[" + checkForm.elements[i].getAttribute("title")  + "] " + errMsg , checkForm.elements[i].name);/* alert 메세지 함수 호출 */
                        }else{
                            fvAlert(errMsg , checkForm.elements[i].name);
                        }
                        checkForm.elements[i].select();
                        return false;
                    }
                }

                //최소 바이트 체크
                if(checkForm.elements[i].getAttribute("minbyte") != undefined && checkForm.elements[i].getAttribute("minbyte") !="")
                {
                    if(checkForm.elements[i].value.length == 0 || (!validationMinByte(checkForm.elements[i].value, checkForm.elements[i].getAttribute("minbyte"))) )
                    {
                        var errMsg = COMMON_SCRIPT_00003+"(BYTE)";
                        if(checkForm.elements[i].getAttribute("maxbyte") != undefined && checkForm.elements[i].getAttribute("maxbyte") != "") {
                        //maxbyte까지 설정되어 있으면..
                            errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minbyte")+"~"+checkForm.elements[i].getAttribute("maxbyte"));
                        }else{
                        //minbyte만 설정되어 있으면..
                            errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minbyte")+"~");
                        }

                        var kor_cnt = Math.floor(checkForm.elements[i].getAttribute("minbyte")/2);

                        if(checkForm.elements[i].getAttribute("colname") != undefined) {
                            fvAlert("[" + checkForm.elements[i].getAttribute("colname")  + "] " + errMsg, checkForm.elements[i].name);//alert 메세지 함수 호출
                        }else if(checkForm.elements[i].getAttribute("title") != undefined && checkForm.elements[i].getAttribute("title") != "") {
                            fvAlert("[" + checkForm.elements[i].getAttribute("title")  + "] " + errMsg, checkForm.elements[i].name );/* alert 메세지 함수 호출 */
                        }else{
                            fvAlert(errMsg , checkForm.elements[i].name);
                        }
                        checkForm.elements[i].select();
                        return false;

                    }
                }

/*
 * Jex에서 전각/반각 설정 있으므로 사용 해제
 * 
                //한글이 들어간 Input값은 2byte전각 문자로 바꿔준다.
                if( checkForm.elements[i].getAttribute("chartype") == "kor" || checkForm.elements[i].getAttribute("chartype") == "kornum" ||
                    checkForm.elements[i].getAttribute("chartype") == "koreng" || checkForm.elements[i].getAttribute("chartype") == "korengnum") {
                        if(checkForm.elements[i].getAttribute("fullchar") != "false"){
                            checkForm.elements[i].value = convert2ByteCharToString(checkForm.elements[i].value, checkForm.elements[i].getAttribute("numfullchar"));
                        }
                }
*/
                //최소 길이 체크
                if(checkForm.elements[i].getAttribute("minlength") != undefined && checkForm.elements[i].getAttribute("minlength") != "")
                {

                    if( checkForm.elements[i].getAttribute("chartype") == "kor" || checkForm.elements[i].getAttribute("chartype") == "kornum" ||    checkForm.elements[i].getAttribute("chartype") == "koreng" || checkForm.elements[i].getAttribute("chartype") == "korengnum")
                    {
                        if(checkForm.elements[i].getAttribute("fullchar") != "false")
                            checkForm.elements[i].value = convert2ByteCharToString(checkForm.elements[i].value, checkForm.elements[i].getAttribute("numfullchar"));

                        var _minlen = checkForm.elements[i].getAttribute("minlength");
                        if(checkForm.elements[i].getAttribute("fullchar") == "false")
                            _minlen = checkForm.elements[i].getAttribute("minlength");
                        if ( checkForm.elements[i].value.length == 0 || (!validationMinByte(checkForm.elements[i].value  , (_minlen))) )
                        {
                            var errMsg = COMMON_SCRIPT_00003;
                            if(checkForm.elements[i].getAttribute("maxLength") != undefined && checkForm.elements[i].getAttribute("maxLength") != "" && checkForm.elements[i].getAttribute("maxLength") != "2147483647") {
                            //maxlength까지 설정되어 있으면..
                                errMsg = errMsg.replace("%",_minlen/2+"~"+(checkForm.elements[i].getAttribute("maxLength"))/2);
                            }else{
                            //minlength만  설정되어 있으면..
                                errMsg = errMsg.replace("%",_minlen/2);
                            }
                            var kor_cnt = Math.floor((_minlen)/2);
                            //colname 어트리뷰트 추가되면서 비교하는 if문 추가.20080129
                            if(checkForm.elements[i].getAttribute("colname") != undefined) {
                                fvAlert("[" + checkForm.elements[i].getAttribute("colname")  + "] " + errMsg, checkForm.elements[i].name );//alert 메세지 함수 호출
                            }else if(checkForm.elements[i].getAttribute("title") != undefined && checkForm.elements[i].getAttribute("title") != "") {
                                fvAlert("[" + checkForm.elements[i].getAttribute("title")  + "] " + errMsg, checkForm.elements[i].name );/* alert 메세지 함수 호출 */
                            }else{
                                fvAlert(errMsg, checkForm.elements[i].name );
                            }
                            checkForm.elements[i].select();
                            return false;
                        }
                    }else {
                        if(checkForm.elements[i].value.length < checkForm.elements[i].getAttribute("minlength")) {
                            var errMsg = COMMON_SCRIPT_00003;
                            if(checkForm.elements[i].getAttribute("maxLength") != undefined && checkForm.elements[i].getAttribute("maxLength") != "" && checkForm.elements[i].getAttribute("maxLength") != "2147483647") {
                            //maxlength까지 설정되어 있으면..
                                if(checkForm.elements[i].getAttribute("minlength") != checkForm.elements[i].getAttribute("maxLength")){
                                    errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minlength")+"~"+checkForm.elements[i].getAttribute("maxLength"));
                                }else{
                                    errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("maxLength"));
                                }
                                //errMsg = errMsg.replace("%",checkForm.elements[i].minlength+"~"+checkForm.elements[i].maxLength);
                            }else{
                            //minlength만  설정되어 있으면..
                                errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minlength"));
                            }
                            if(checkForm.elements[i].getAttribute("colname") != undefined) {
                                fvAlert("[" + checkForm.elements[i].getAttribute("colname")  + "] " + errMsg,checkForm.elements[i].name);//alert 메세지 함수 호출
                            }else if(checkForm.elements[i].getAttribute("title") != undefined && checkForm.elements[i].getAttribute("title") != "") {
                                fvAlert("[" + checkForm.elements[i].getAttribute("title")  + "] " + errMsg, checkForm.elements[i].name );/* alert 메세지 함수 호출 */
                            }else{
                                fvAlert(errMsg, checkForm.elements[i].name );
                            }
                            //checkForm.elements[i].focus();
                            return false;
                        }
                    }
                }

                //최대 길이 체크
                if ( checkForm.elements[i].getAttribute("maxLength") != undefined && checkForm.elements[i].getAttribute("maxLength") != "")
                {
                    //한글이 들어간 Input값은  byte로 maxByte 체크를 한다. 
                    if( checkForm.elements[i].getAttribute("chartype") == "kor" || checkForm.elements[i].getAttribute("chartype") == "kornum" ||
                        checkForm.elements[i].getAttribute("chartype") == "koreng" || checkForm.elements[i].getAttribute("chartype") == "korengnum")
                    {
                        if(checkForm.elements[i].getAttribute("fullchar") != "false")
                            checkForm.elements[i].value = convert2ByteCharToString(checkForm.elements[i].value, checkForm.elements[i].getAttribute("numfullchar"));

                        var _maxlen = checkForm.elements[i].getAttribute("maxLength");
                        if(checkForm.elements[i].getAttribute("fullchar") == "false" || (checkForm.elements[i].getAttribute("numfullchar") == "false" && !cf_isHan(checkForm.elements[i].value))) {
                            _maxlen = checkForm.elements[i].getAttribute("maxLength");
                        }
                        //if(checkForm.elements[i].getAttribute("fullchar") == "false")
                        //  _maxlen = checkForm.elements[i].maxLength;

                        if ( !validationMaxByte(checkForm.elements[i].value, _maxlen, checkForm.elements[i].getAttribute("numfullchar")) )
                        {
                            var errMsg = COMMON_SCRIPT_00003;
                            if(checkForm.elements[i].getAttribute("minlength") != undefined && checkForm.elements[i].getAttribute("minlength") != "") {
                            //minlength까지 설정되어 있으면..
                                if(checkForm.elements[i].getAttribute("minlength") != checkForm.elements[i].getAttribute("maxLength")){
                                    errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minlength")/2+"~"+_maxlen/2);
                                }else{
                                    errMsg = errMsg.replace("%",_maxlen/2);
                                }
                            }else{
                            //maxlength만  설정되어 있으면..
                                errMsg = errMsg.replace("%",(checkForm.elements[i].getAttribute("maxLength"))/2);
                            }
                            var kor_cnt = Math.floor((_maxlen)/2);
                            //colname 어트리뷰트 추가되면서 비교하는 if문 추가.20080129
                            if(checkForm.elements[i].getAttribute("colname") != undefined) {
                                fvAlert("[" + checkForm.elements[i].getAttribute("colname")  + "] " + errMsg, checkForm.elements[i].name);//alert 메세지 함수 호출
                            }else if(checkForm.elements[i].getAttribute("title") != undefined && checkForm.elements[i].getAttribute("title") != "") {
                                fvAlert("[" + checkForm.elements[i].getAttribute("title")  + "] " + errMsg , checkForm.elements[i].name);/* alert 메세지 함수 호출 */
                            }else{
                                fvAlert(errMsg, checkForm.elements[i].name);
                            }
                            checkForm.elements[i].select();
                            return false;
                        }
                    }
                }
            }
        /* select 타입이 필수일때 */
        } else if (    checkForm.elements[i].nodeName.toString().toLowerCase() == "select" )
        {
            if(checkForm.elements[i].getAttribute("disables")==true) {
            	checkForm.elements[i].disabled = false;
            }
            if(checkForm.elements[i].getAttribute("nullable") == "false" && checkForm.elements[i].value == "")
            {
                /*  COMMON_SCRIPT_00001 : 필수입력 사항입니다. */
                if(checkForm.elements[i].getAttribute("colname") != null && checkForm.elements[i].getAttribute("colname") != undefined &&
                    checkForm.elements[i].getAttribute("colname") != "") {
                    fvAlert("[" + checkForm.elements[i].getAttribute("colname")  + "] " + COMMON_SCRIPT_00001 , checkForm.elements[i].name);/* alert 메세지 함수 호출 */
                }else if(checkForm.elements[i].getAttribute("title") != null && checkForm.elements[i].getAttribute("title") != undefined &&
                    checkForm.elements[i].getAttribute("title") != "") {
                    fvAlert("[" + checkForm.elements[i].getAttribute("title")  + "] " + COMMON_SCRIPT_00001 , checkForm.elements[i].name);/* alert 메세지 함수 호출 */
                }else{
                    fvAlert(COMMON_SCRIPT_00001, checkForm.elements[i].name);/* alert 메세지 함수 호출 */
                }
                 //checkForm.elements[i].focus();
                if (_ensight_flag == "Y") {
                	//console.log("ENSIGHTEN call : type=4, filed_name="+getObjLabel(checkForm.elements[i]));
                	callEnsighten("4", checkForm.elements[i]);
                }
                return false;
            }
        }
    }/* for문 끝 */
    return true;

}


  /**
   * ############   기존 formValidation.js에 있던 사항 ###################
   */

  /**
   * 이벤트 체크
   * Firefox와 IE간 호환을 위함
   */
  function checkEvent(event) {

    //if(IS_IE){ //20161208 IE10 오류로 인한 주석처리
    if (!event) { /* IE일 경우 */
    	
        event = window.event;
        event.target = event.srcElement;
        event.which = event.keyCode;
    }
    
    return event;
  }

/**********************

* 다국어 alert() 메세지를 출력
* ex : fvAlert('I18NUtil.getLabel(localeCode, "IBA00001","개별1회이체한도금액이 초과하였습니다.")') (스크립틀릿임.)

* @param : 다국어 메세지
* @return : alert(msg) 메세지
* @see
************************/
function fvAlert(msg,focusfield){

  //필드명 내 <br> 제거
  if(msg.indexOf('[') == 0){
      var tmp = msg.substring(msg.indexOf('['), msg.indexOf(']')+1);
      msg = msg.substring(msg.indexOf(']')+1);
      tmp = tmp.replace(/<br>/, ' ');
      tmp = tmp.replace(/<br\/>/, ' ');
      tmp = tmp.replace(/<br \/>/, ' ');

      msg = tmp + msg;
  }
  try{
      if(focusfield==null || focusfield==undefined || focusfield ==""){
//          chkFormName
          cf_alert(msg);
      }else{
//    	  alert(focusfield);
//          if(focusfield.indexOf("_E2E123_")>-1){
//        	  alert(1);
//              cf_alert(msg,"cf_setFocusField('#"+focusfield.replace("_E2E123_","")+"')");
//          }else{
//        	  alert(2);
              cf_alert(msg,"cf_setFocusFieldName('"+focusfield+"')");
//          }
      }
  }catch(e){
      cf_alert(msg);
  }
}


/* ----------------------------------- 페이지 initialize 관련 함수 시작 ------------------------------------------------ */

/*CATI 쪽 업무는 jex.ml.loading.js에서 처리 한다.*/
//if(_SITE_DS_=="TELLER"){
//	initializeHtmlPage();
//}
//	initializeHtmlPage();




/**********************
* 호출된 폼마다 셋팅하기.
* initialize시 셋팅하는 정보 : 필수 요소(css),mask,letter type
* @param :
* @return :
* @see
************************/
function initializeHtmlForm()
{
    // 입력필드 하나인 경우 엔터키 입력시 리로드 방지
    try{
        var dummy_e = document.createElement("input");
        dummy_e.setAttribute("type", "text");
        dummy_e.setattribute("name", "_DUMMY_INPUT");
        dummy_e.style.display = "none";
        this.appendChild(dummy_e);
    }catch(e){}

    var FirstObj;
    var isFirstObj = false;

    for (var i = 0 ; i < this.elements.length ; i++)
    {
    	

        if(this.elements[i].getAttribute("type") == "text" || this.elements[i].getAttribute("type") == "password"
        	 || this.elements[i].getAttribute("type") == "tel"){

            // 텍스트박스 기본 속성값 체크. 개발시에만 사용하기 바람.
            if(CHK_NOTNUL_ATTRIBUTE){
                if( (this.elements[i].getAttribute("maxlength") == null || this.elements[i].getAttribute("maxlength") == undefined)
                    && (this.elements[i].getAttribute("maxbyte") == null || this.elements[i].getAttribute("maxbyte") == undefined) ){
                    alert("maxlength "+ jexComMl("formValidation_J0002","속성 누락!") +" [" + this.elements[i].getAttribute("name") + "]");
                }
                if(this.elements[i].getAttribute("chartype") == null || this.elements[i].getAttribute("chartype") == undefined){
                	alert("chartype "+ jexComMl("formValidation_J0003","속성 누락!") +" [" + this.elements[i].getAttribute("name") + "]");
                }
                if(this.elements[i].getAttribute("title") == null || this.elements[i].getAttribute("title") == undefined){
                	alert("title "+ jexComMl("formValidation_J0004","속성 누락!") +" [" + this.elements[i].getAttribute("name") + "]");
                }
            }
        }

        if (this.elements[i].nodeName.toString().toLowerCase() == "input")
        {
        	
        	/* 모든 input의 자동완성을 제거한다. */
        	$(this.elements[i]).attr("autocomplete", "off");

            /* mask가 있을경우 #은 값을 의미함. */
            if (this.elements[i].getAttribute("maskform") != null && this.elements[i].getAttribute("maskform") != undefined && this.elements[i].getAttribute("maskform") != "")
            {
                if(this.elements[i].getAttribute("maskform") != "usermask")
                    initSetMaskUp(this.elements[i]);/* mask 타입(ex : ####/##/## , ####-##-## , ######-####### , ###-##-##### , ...) */
            }

            /* 주민/사업자번호 처리 */
            if (this.elements[i].getAttribute("userfmt") != null && this.elements[i].getAttribute("userfmt") != undefined && this.elements[i].getAttribute("userfmt") != "")
            {
            	if(IS_IE){
            		/*IE인경우에만 달력형식의 date 입력box의 maxlength를 8로 선언*/
            		if(this.elements[i].getAttribute("userfmt")=="date"){
                		this.elements[i].maxLength = 8;
                	}else if(this.elements[i].getAttribute("userfmt")=="datetime"){
                		this.elements[i].maxLength = 8;
                	}else if(this.elements[i].getAttribute("userfmt")=="monthdate"){
                		this.elements[i].maxLength = 6;
                	}
            	}
            	
            	initSetDefalutMaskUp(this.elements[i]);/* mask 타입(ex : ####/##/## , ####-##-## , ######-####### , ###-##-##### , ...) */
                
            }

            /* 문자 타입이 있을경우 */
            if (this.elements[i].getAttribute("chartype") != null &&  this.elements[i].getAttribute("chartype")  != undefined)
            {
                initSetLetterType(this.elements[i]);/* 문자 셋(english,korean,english+number, number, floatmoney,int)타입 */
            }

            /* maxlength가 있을경우 */
            if (this.elements[i].getAttribute("maxlength") != null &&  this.elements[i].getAttribute("maxlength") !=  undefined )
            {
                //initSetMaxLength(this.elements[i]); //20170626주석처리
            }

            /* maxByte가 있을경우 */
            if ( this.elements[i].getAttribute("maxbyte") != null &&  this.elements[i].getAttribute("maxbyte")  != undefined)
            {
                initSetMaxLength(this.elements[i]);
            }

            /* engcase가  있을 경우 */
            if (this.elements[i].getAttribute("engcase")  != undefined){
                    initSetUpperLower(this.elements[i]);
            }

            /* 입력 모드 설정이  있을 경우 */
            if (this.elements[i].getAttribute("imemode") != null && this.elements[i].getAttribute("imemode") != undefined){
                   initImeMode(this.elements[i]);
            }
            
            /* 사업자번호, 주민번호 MASK처리 */
            if (this.elements[i].getAttribute("mask_") != null && this.elements[i].getAttribute("mask_") != undefined){
            	if (this.elements[i].getAttribute("mask_") == "1") {		//사업자, 주민번호 모두 masking
            		initSetRegMaskUp(this.elements[i]);
            	}
            	if (this.elements[i].getAttribute("mask_") == "2") {		//주민번호만 masking
            		initSetRegMaskUp2(this.elements[i]);
            	}
            }

            // 첫번째 text 필드에 포커스 주기
            /*if(this.elements[i].type != undefined){
                if(this.elements[i].type.toLowerCase() == "text" || this.elements[i].type.toLowerCase() == "password" ){
                    if(!isFirstObj && this.elements[i].firstObj!="false"){
                        try{
                            if(this.elements[i].readonly == undefined){
                                //this.elements[i].focus();
                                //FIRST_FOCUS_FIELD_ID = this.elements[i].id;
                                try{
                                    this.elements[i].setActive();
                                }catch(e){}
                                isFirstObj = true;
                                FirstObj = this.elements[i];
                            }
                        }catch(e){}
                    }
                }
            }*/
        }/* end if */
        
        
        if(this.elements[i].getAttribute("type") == "text" || this.elements[i].getAttribute("type") == "password" 
        	 || this.elements[i].getAttribute("type") == "tel" ){
            if(this.elements[i].getAttribute("readonly") != null && this.elements[i].getAttribute("readonly") != undefined && this.elements[i].getAttribute("readonly") =="readonly"){
            	initForbidBackspace(this.elements[i]);
            }
        }
    }/* end for - elements */
}

function initSetRegMaskUp(elem)
{
	var tmpid = elem.id;
	$("#"+tmpid).attr("id", tmpid+"_view").prop("name", tmpid+"_view");
	cf_putHiddenVal($("#form1"), tmpid , elem.value);
	
	elem.style.imeMode = "disabled";
	if(!IS_IME_MODE){
        elem.onkeyup = noImeModeData;
    }
    if(elem.onkeypress == undefined) elem.onkeypress = setKeyInputNumberOnly;
    if(elem.onfocus == undefined) elem.onfocus = filterSsnCorpMask;
    if(elem.onblur == undefined) elem.onblur = setInitSsnCorpMaskUp2;
}

function initSetRegMaskUp2(elem)	
{
	var tmpid = elem.id;
	$("#"+tmpid).attr("id", tmpid+"_view").prop("name", tmpid+"_view");
	cf_putHiddenVal($("#form1"), tmpid , elem.value);
	
	elem.style.imeMode = "disabled";
	if(!IS_IME_MODE){
        elem.onkeyup = noImeModeData;
    }
    if(elem.onkeypress == undefined) elem.onkeypress = setKeyInputNumberOnly;
    if(elem.onfocus == undefined) elem.onfocus = filterSsnCorpMask;
    if(elem.onblur == undefined) elem.onblur = setInitSsnCorpMaskUp3;
}

function filterSsnCorpMask() 
{
    var inputId = this.id.replace("_view", "");
    var inputV = $("#"+inputId).val();
    
    if (inputV == undefined) inputV = "";
    
    this.value = inputV;
}

function setInitSsnCorpMaskUp2()
{

	var inputV = this.value;
    var inputId = this.id.replace("_view", "");
    $("#"+inputId).val(inputV);
    if(inputV == "") {
    	return;
    }

    /* var mask = this.maskform; */
    if(this.value.length==10){
        var mask = "###-##-***##";
    }else if (this.value.length==13){
        var mask = "######-#******";
    }else{
        return ;
    }

    inputV = getOnlyNumberFormat(this.value);
    
    for ( var i = 0 ; i < mask.length ; i++)
    {
        if ( mask.substring(i,i+1) != "#" ) {
        	if ( mask.substring(i,i+1) == "*" ){
        		inputV = inputV.substring(0, i) + "*" + inputV.substring(i+1);
            } else {
            	inputV = inputV.substring(0,i) + mask.substring(i,i+1) + inputV.substring(i);
            }            
        }
    }

    this.value = inputV;
}

function setInitSsnCorpMaskUp3()
{

	var inputV = this.value;
    var inputId = this.id.replace("_view", "");
    $("#"+inputId).val(inputV);
    if(inputV == "") {
    	return;
    }

    /* var mask = this.maskform; */
    if(this.value.length==10){
        var mask = "###-##-#####";
    }else if (this.value.length==13){
        var mask = "######-#******";
    }else{
        return ;
    }

    inputV = getOnlyNumberFormat(this.value);
    
    for ( var i = 0 ; i < mask.length ; i++)
    {
        if ( mask.substring(i,i+1) != "#" ) {
        	if ( mask.substring(i,i+1) == "*" ){
        		inputV = inputV.substring(0, i) + "*" + inputV.substring(i+1);
            } else {
            	inputV = inputV.substring(0,i) + mask.substring(i,i+1) + inputV.substring(i);
            }            
        }
    }

    this.value = inputV;
}

/**********************
* readonly 객체 backspace금지 함수
* @param : elem
* @return : void
* @see
************************/
function initForbidBackspace(elem) {
    if(elem.onkeydown == undefined) elem.onkeydown = forbidBackspace;
    
}

function forbidBackspace(event){
    event = checkEvent(event);

    if(event.which == 8)
    {
        event.which = 0;
        event.cancelBubble = true;
        returnValue(event);
    }
}


/**********************
* ImeMode 설정.
* @param : elem
* @return : void
* @see
************************/
function initImeMode(elem) {
    if(elem.imemode == "kor") {
        elem.style.imeMode = "active";
    }else if(elem.imemode == "eng") {
        elem.style.imeMode = "inactive";
    }else{
        elem.style.imeMode = "auto";
    }
}

/**********************
* uppercase, lowercase 설정시 keyPress시 이벤트 발생.
* @param : elem
* @return : void
* @see
************************/
function initSetUpperLower(elem) {
     
	 //elem.onkeyup = setUpperLowerCase;  //임성표수정 2016.10.01, onkeyup 이벤트시 변환하도록 변경
	 
	 //임성표수정 2017.05.01, (change keyup input) 3개 이벤트시 변환하도록 변경
	 $(elem).bind("change keyup input", function(e){
		 setUpperLowerCase2(elem);
		 
	 });

}

/**********************
* input 테그에 uppercase, lowercase 속성이 있을경우 발생
* @param :
* @return : void
* @see
************************/
function setUpperLowerCase() {
    if(this.value == ""){
        return;
    }

    if( this.getAttribute("engcase") != undefined) {
        if(this.getAttribute("engcase")=="lowercase"){
            this.value = this.value.toLowerCase();
        }else if(this.getAttribute("engcase")=="uppercase"){
            this.value = this.value.toUpperCase();
        }
    }
}
/**********************
* input 테그에 uppercase, lowercase 속성이 있을경우 발생 -  jquer버전
* @param :
* @return : void
* @see
************************/
function setUpperLowerCase2(elem) {
    if(elem.value == ""){
        return;
    }

    if( elem.getAttribute("engcase") != undefined) {
        if(elem.getAttribute("engcase")=="lowercase"){
        	elem.value = elem.value.toLowerCase();
        }else if(elem.getAttribute("engcase")=="uppercase"){
        	elem.value = elem.value.toUpperCase();
        }
    }
}

/**********************
* input 테그에 capslock 속성이 있을경우 발생
* @param :
* @return : void
* @see
************************/
function setCapslockCase(event) {

    return;

    /*
    event = checkEvent(event);
    var pKey = String.fromCharCode(event.which);

    //if( event.target.capslock != undefined) {
         var myKeyCode=0;
         var myShiftKey=false;

         // Internet Explorer 4+
         if ( document.all ) {
          myKeyCode=event.keyCode;
          myShiftKey=event.shiftKey;

         // Netscape 4
         } else if ( document.layers ) {
          myKeyCode=event.which;
          myShiftKey=( myKeyCode == 16 ) ? true : false;

         // Netscape 6
         } else if ( document.getElementById ) {
          myKeyCode=event.which;
          myShiftKey=( myKeyCode == 16 ) ? true : false;

         }
         // Upper case letters are seen without depressing the Shift key, therefore Caps Lock is on
         if ( ( myKeyCode >= 65 && myKeyCode <= 90 ) && !myShiftKey ) {
          fvAlert( COMMON_SCRIPT_00004 );

         // Lower case letters are seen while depressing the Shift key, therefore Caps Lock is on
         } else if ( ( myKeyCode >= 97 && myKeyCode <= 122 ) && myShiftKey ) {
          fvAlert( COMMON_SCRIPT_00004 );
         }
    //}
    */

}


/**********************
* maxlength, maxbyte 설정시 keyUp시 이벤트 발생.
* @param : elem
* @return : void
* @see
************************/
function initSetMaxLength(elem) {
    /*if((elem.maxlength != undefined && elem.maxlength > 0 && elem.maxlength != 2147483647) && elem.chartype != undefined &&
        (elem.chartype == "kor" || elem.chartype == "kornum" || elem.chartype == "koreng" || elem.chartype == "korengnum")) {
       elem.maxlength = elem.maxlength + 2;
    }*/
   if(elem.onkeyup == undefined) elem.onkeyup = setOverSetFocus;
    
    //if(elem.onblur == undefined) elem.onblur = setUpperLowerCase;
}


/**********************
* maxlength, maxbyte 설정시 최대값보다 더 들어왔을시 자동 포커스 이동.
*  ex : setOverSetFocus()
* @param :
* @return :
* @see
************************/
function setOverSetFocus(event) {
    event = checkEvent(event);
    // 탭키 입력시 실행안함.
    if(event.which == 9){
        return false;
    }
    if(event.which>=37 && event.which<=40){
        return;
    }
    //this 개체가 속한  폼이름 가져오기
    var thisFrm = eval(this.parentElement);
    while("form" != thisFrm.tagName.toString().toLowerCase())
    {
        thisFrm = eval(thisFrm.parentElement);
    }

    var nextFocus = this;
    var eleValue = this.value;
    //다음 포커스 타겟 가져오기.
    for (var i = 0 ; i < thisFrm.elements.length ; i++)
    {

        //현재 this값이 선택된 elements이면 다음으로 이동될 포커스를 가져오기 위한 로직수행.
        if(this == thisFrm.elements[i])
        {
            if(thisFrm.elements[i].nextfocus != undefined && thisFrm[thisFrm.elements[i].nextfocus] != undefined) {
                //nextfocus 속성이 있을경우 nextfocus값을 다음 포커스로 잡는다.
                nextFocus = thisFrm[thisFrm.elements[i].nextfocus];
                break;
            }
            //elements가 undefined 될때 까지 수행함.
            while(thisFrm.elements[++i] != undefined)
            	
            {
                //현재 elements의 부모중의 속성이 display = none이면 다음 포커스 타겟을 가져온다.
                var targetCursor = eval(thisFrm.elements[i].parentElement);
                while("form" != targetCursor.tagName.toString().toLowerCase())  {
                    if(targetCursor.parentElement.style.display == "none") break;
                    targetCursor = eval(targetCursor.parentElement);

                }
                if(targetCursor.parentElement.style.display == "none") continue;

                //elements타입이 input (text,radio,checkbox), textarea, select 일경우 다음 포커스 obj저장.
                if(thisFrm.elements[i].tagName.toString().toLowerCase() == "input" &&
                    ((thisFrm.elements[i].type == "text" )|| ( thisFrm.elements[i].type == "password" ) || ( thisFrm.elements[i].type == "tel" )) ||
                            (thisFrm.elements[i].tagName.toString().toLowerCase() == "textarea") ||
                                (thisFrm.elements[i].tagName.toString().toLowerCase() == "select" ))
                {
                    // nextFocus 객체가 활성화 되지 않은 상태이면 다음 객체로....
                	
                    if(thisFrm.elements[i].disabled==true
                            || thisFrm.elements[i].style.disabled==true
                            || (thisFrm.elements[i].readonly != undefined && thisFrm.elements[i].readonly != false )
                            || (thisFrm.elements[i].readOnly != undefined && thisFrm.elements[i].readOnly != false )
                            || thisFrm.elements[i].style.display == "none"
                            || thisFrm.elements[i].style.visibility == "hidden"
                            || thisFrm.elements[i].focuspass=="true" ){
                    	// || thisFrm.elements[i].disabled  =="disabled"
                    		//alert("thisFrm.elements[i].style.disabled"+thisFrm.elements[i].style.disabled);
/*                    	alert("thisFrm.elements[i] id:"+thisFrm.elements[i].id
                    		+"\ndisabled disabled:"+thisFrm.elements[i].disabled+"|"+(thisFrm.elements[i].disabled=="disabled")
                    		+"\ndisabled:"+thisFrm.elements[i].disabled+"|"+(thisFrm.elements[i].disabled==true)
                    		+"\nstyle disabled:"+thisFrm.elements[i].style.disabled+"|"+(thisFrm.elements[i].style.disabled==true)
                    		+"\nreadonly:"+thisFrm.elements[i].readonly+"|"+(thisFrm.elements[i].readonly != undefined && thisFrm.elements[i].readonly != false )
                    		+"\nreadOnly:"+thisFrm.elements[i].readOnly+"|"+(thisFrm.elements[i].readOnly != undefined && thisFrm.elements[i].readOnly != false )
                    		+"\ndisplay:"+thisFrm.elements[i].style.display+"|"+(thisFrm.elements[i].style.display == "none")
                    		+"\nvisibility:"+thisFrm.elements[i].style.visibility+"|"+(thisFrm.elements[i].style.visibility == "hidden")
                    		+"\nfocuspass:"+thisFrm.elements[i].focuspass+"|"+(thisFrm.elements[i].focuspass=="true")
                    	);*/
                    }else{
                        nextFocus = thisFrm.elements[i];
/*                        alert("nextFocus.elements[i] id:"+thisFrm.elements[i].id
                        		+"\ndisabled disabled:"+thisFrm.elements[i].disabled+"\n"+(thisFrm.elements[i].disabled=="disabled")
                        		+"\ndisabled:"+thisFrm.elements[i].disabled+"\n"+(thisFrm.elements[i].disabled==true)
                        		+"\nstyle disabled:"+thisFrm.elements[i].style.disabled+"\n"+(thisFrm.elements[i].style.disabled==true)
                        		+"\nreadonly:"+thisFrm.elements[i].readonly+"\n"+(thisFrm.elements[i].readonly != undefined)
                        		+"\nreadOnly:"+thisFrm.elements[i].readOnly+"\n"+(thisFrm.elements[i].readOnly != undefined)
                        		+"\ndisplay:"+thisFrm.elements[i].style.display+"\n"+(thisFrm.elements[i].style.display == "none")
                        		+"\nvisibility:"+thisFrm.elements[i].style.visibility+"\n"+(thisFrm.elements[i].style.visibility == "hidden")
                        		+"\nfocuspass:"+thisFrm.elements[i].focuspass+"\n"+(thisFrm.elements[i].focuspass=="true")
                        	);*/
                        break;
                    }
                }
            }
        }
    }
    if(nextFocus == this) {
        IS_INT_AUTO_FOCUS = false;
    } else { //마지막필드에서 AUTO_FOCUS값이 false가 되버리고, 다시 위에 필드를 수정시에는 AUTO_FOCUS를 true로 돌려놓아야하므로..
        IS_INT_AUTO_FOCUS = true;
    }
    // 엔터키 입력시 처리. 다음포커스로이동. 다음 포커스 없을경우 서브밋.
    if(event.which == 13){
        //try{
            if(this.type == "text" || this.type == "password" || this.type == "tel" || this.tagName.toString().toLowerCase() == "select"){
                if(nextFocus == this){
                    if(ENTFUNC != ""){
                        eval(ENTFUNC);
                        return;
                    }else{
                        //if(typeof uf_submit == "function"){
                        //    this.blur();
                        //    uf_submit();
                        //    return;
                        //}
                    }
                }
                else{
                	try{
                		nextFocus.focus();
                	}catch(e){}
                    
                }
            }
        //}catch(e){alert(e);}
    }
    //포커스 이동. maxlength 2147483647은 maxlength의 값을 주지 않았을경우 기본적으로 주는 최대값.
    if($(this).attr('maxbyte') != undefined && $(this).attr('maxLength') != 2147483647) {
    //1. maxbyte와 maxlength를 둘다 선택 하였을때..
        var orgMaxLen = $(this).attr('maxLength');
    	if($(this).attr('maxbyte') == $(this).attr('maxLength')){
    	    $(this).attr('maxLength',($(this).attr('maxLength')/2))  ;
    	}
    	if(this.getAttribute("fullchar") == "false" || (this.getAttribute("numfullchar") == "false")) {
            $(this).attr('maxLength',orgMaxLen)  ;
        }
    	
	    if(($(this).attr('maxLength') <= this.value.length) || ($(this).attr('maxbyte') <= calculate_msglen(this.value)))
	    {
	        //this.blur();
	        //IS_INT_AUTO_FOCUS true 설정 시 자동 포커싱 기능 안되게.
	        if(IS_INT_AUTO_FOCUS){
	            if(nextFocus.tagName.toString().toLowerCase() == "select") {
	            	try{
                		//nextFocus.focus();
                	}catch(e){}
	            }else {
	            	try{
	            		//nextFocus.select();
	            	}catch(e){}
	            }
	        }else{
	            //this.value = "";
	            //마지막인경우 focus를 out해서 값 지워지는 오류 제거2012.06.15
	            //document.body.focus();
	        }
	        this.value = cutStringToByte(eleValue, $(this).attr('maxbyte'));
	    }
	    $(this).attr('maxLength',orgMaxLen) ;
    }else if($(this).attr('maxbyte') == undefined && $(this).attr('maxLength') != 2147483647) {
    //2. maxlength만 설정했을때..
        //한글이 포함된 chartype경우는 maxlength 값을 넘긴다.

        var _maxlen = $(this).attr('maxLength');
        //if(this.getAttribute("fullchar") != "false" && this.getAttribute("numfullchar") != "false") {
        //  _maxlen = $(this).attr('maxLength');
        //}
        if(this.getAttribute("fullchar") == "false" || (this.getAttribute("numfullchar") == "false" && !cf_isHan(this.value))) {
            _maxlen = $(this).attr('maxLength');
        }

        if((this.chartype == "kor" || this.chartype == "kornum" || this.chartype == "koreng" || this.chartype == "korengnum"))
        {
            if(((this.getAttribute("fullchar") == "false" && _maxlen <= calculate_msglen(this.value)) ||
                (this.getAttribute("fullchar") != "false" && (_maxlen/2) <= this.value.length) )
                &&
                ((this.getAttribute("numfullchar") == "false" && _maxlen <= calcuate_HanMsglen(this.value)) ||
                (this.getAttribute("numfullchar") != "false" && (_maxlen/2) <= this.value.length))){
                this.blur();

                if(IS_INT_AUTO_FOCUS){
                    if(nextFocus.tagName.toString().toLowerCase() == "select") {
                    	try{
                    		//nextFocus.focus();
                    	}catch(e){}
                    }else {
                    	try{
                    		//nextFocus.select();
                    	}catch(e){}
                    }
                }else{
                    //this.value = "";
                    //this.focus();
                }

                if(this.getAttribute("fullchar") == "false") {
                    this.value = cutStringToByte(eleValue, _maxlen);
                }else if(this.getAttribute("numfullchar") == "false") {
                    this.value = cutStringToByte(eleValue, _maxlen, true);
                }else {
                    this.value = eleValue.substring(0,($(this).attr('maxLength'))/2);
                }
            }
        } else if($(this).attr('maxLength') <= this.value.length)
        {
        	
            //this.blur();
            if(IS_INT_AUTO_FOCUS){

                if(nextFocus.tagName.toString().toLowerCase() == "select") {
                	try{
                		//nextFocus.focus();
                	}catch(e){}
                }else {
                	try{
                		//nextFocus.select();
                	}catch(e){}
                }
            }else{
                //this.value = "";
                //this.focus();
            }
            this.value = cutStringToByte(this.value, $(this).attr('maxLength'));
        }
    }else if($(this).attr('maxbyte') != undefined && $(this).attr('maxLength') == 2147483647) {
    //3. maxByte만 설정했을때..
        if($(this).attr('maxbyte') <= calculate_msglen(this.value) )
        {
            //this.blur();
            if(IS_INT_AUTO_FOCUS){
               if(nextFocus.tagName.toString().toLowerCase() == "select") {
            	   try{
	               		//nextFocus.focus();
	               	}catch(e){}
                    
                }else {
                	try{
                		//nextFocus.select();
                	}catch(e){}
                }
            }else{
                //this.value = "";
                //this.focus();
                //마지막인경우 focus를 out해서 값 지워지는 오류 제거2012.06.15
	            //document.body.focus();
            }
           this.value = cutStringToByte(eleValue, $(this).attr('maxbyte'));
        }
    }
    //if((this.chartype == "eng" || this.chartype == "engnum" || this.chartype == "koreng" || this.chartype == "korengnum")){
    //    setUpperLowerCase(this);
    //    //setCapslockCase();
    //}

    if(this.chartype!=null && this.chartype!=undefined ){
        if(this.chartype == "money")
            this.value = changeIntMoneyType(this.value);
        if(this.chartype == "zeromoney")
            this.value = changeIntMoneyType(this.value);
        if(this.chartype == "floatmoney")
            this.value = changeIntFloatMoneyType(this.value);
        if(this.chartype == "fexmoney")
            this.value = changeIntFloatMoneyType(this.value);
    }

}

/**********************
* 문자열을 Byte길이로 잘라옴.
*  ex : cutStringToByte(form1.name.value, bytelength)
* @param : 바이트 길이로 자를 문자열
* @return : 바이트 길이
* @see
************************/
function cutStringToByte(strValue,cutByte,numfullchar)
{
    var sumLength = 0;
    var resultStr = "";
    for(var i= 0;i < strValue.length; i++)
    {
        if( escape(strValue.charAt(i)).length > 3 ) {  strLength = 2; }
            else if (strValue.charAt(i) == '<' || strValue.charAt(i) == '>') { strLength = 4; }
            else { if(numfullchar && cf_isHan(strValue)) strLength = 2; else strLength = 1 ; }
        if ( cutByte < (sumLength + strLength) ) { break; }
            sumLength += strLength;
            resultStr += strValue.charAt(i);
    }
    return resultStr;
}


/**********************
* 기본 masking 처리
*  ex : initSetDefalutMaskUp(form1.name)
* @param : 마스크를 셋팅할 element
* @return : void
* @see
************************/
function initSetDefalutMaskUp(elem)
{
	elem.style.imeMode = "disabled";
    if(elem.getAttribute("userfmt")=="ssncorp"){
        if(elem.onkeypress == undefined) elem.onkeypress = setKeyInputNumberOnly;
        if(elem.onfocus == undefined) elem.onfocus = filterGetNumberOnly;
        if(elem.onblur == undefined) elem.onblur = setInitSsnCorpMaskUp;
    }else if(elem.getAttribute("userfmt")=="post"){
        if(elem.onkeypress == undefined) elem.onkeypress = setKeyInputNumberOnly;
        if(elem.onfocus == undefined) elem.onfocus = filterGetNumberOnly;
        if(elem.onblur == undefined) elem.onblur = setInitPostMaskUp;
    }else if(elem.getAttribute("userfmt")=="datetime"){
        if(elem.onkeypress == undefined) elem.onkeypress = setKeyInputNumberOnly;
        if(elem.onfocus == undefined) elem.onfocus = filterGetNumberOnly;
        if(elem.onblur == undefined) elem.onblur = setInitDateTimeMaskUp;
    }else if(elem.getAttribute("userfmt")=="date"){
        if(elem.onkeypress == undefined) elem.onkeypress = setKeyInputNumberOnly;
        if(elem.onfocus == undefined) elem.onfocus = filterGetNumberOnly;
        if(elem.onblur == undefined) elem.onblur = setInitDateMaskUp;
    }else if(elem.getAttribute("userfmt")=="monthdate"){
        if(elem.onkeypress == undefined) elem.onkeypress = setKeyInputNumberOnly;
        if(elem.onfocus == undefined) elem.onfocus = filterGetNumberOnly;
        if(elem.onblur == undefined) elem.onblur = setInitMonthDateMaskUp;
    }else if(elem.getAttribute("userfmt")=="cusno"){
        if(elem.onkeypress == undefined) elem.onkeypress = setKeyInputNumberOnly;
        if(elem.onfocus == undefined) elem.onfocus = filterGetNumberOnly;
        if(elem.onblur == undefined) elem.onblur = setInitCusnoMaskUp;
    }else if(elem.getAttribute("userfmt")=="account"){
        if(elem.onkeypress == undefined) elem.onkeypress = setKeyInputNumberOnly;
        if(elem.onfocus == undefined) elem.onfocus = filterGetNumberOnly;
        if(elem.onblur == undefined) elem.onblur = setInitAccountMaskUp;
    }else if(elem.getAttribute("userfmt")=="phone"){
        if(elem.onkeypress == undefined) elem.onkeypress = setKeyInputNumberOnly;
        if(elem.onfocus == undefined) elem.onfocus = filterGetNumberOnly;
        if(elem.onblur == undefined) elem.onblur = setInitPhoneMaskUp;
    }
}


/**********************
* 날짜형식 위한 함수
* @param :
* @return : void
* @see
************************/
function setInitDateMaskUp()
{

    if(this.value == "") return;

    /* var mask = this.maskform; */
    if(this.value.length==8){
        var mask = "####-##-##";
    }else{
        return ;
    }


    var inputV = getOnlyNumberFormat(this.value);

    for ( var i = 0 ; i < mask.length ; i++)
    {
        if ( mask.substring(i,i+1) != "#" )
            inputV = inputV.substring(0,i) + mask.substring(i,i+1) + inputV.substring(i);
    }

    this.value = inputV;
}


/**********************
* 날짜시간형식 위한 함수
* @param :
* @return : void
* @see
************************/
function setInitDateTimeMaskUp()
{

    if(this.value == "") return;

    /* var mask = this.maskform; */
    if(this.value.length==6){
        var mask = "##:##:##";
    }else if(this.value.length==8){
        var mask = "####-##-##";
    }else{
        return ;
    }


    var inputV = getOnlyNumberFormat(this.value);

    for ( var i = 0 ; i < mask.length ; i++)
    {
        if ( mask.substring(i,i+1) != "#" )
            inputV = inputV.substring(0,i) + mask.substring(i,i+1) + inputV.substring(i);
    }

    this.value = inputV;
}


/**********************
* 년월날짜형식 위한 함수
* @param :
* @return : void
* @see
************************/
function setInitMonthDateMaskUp()
{

    if(this.value == "") return;

    /* var mask = this.maskform; */
    if(this.value.length==6){
        var mask = "####-##";
    }else{
        return ;
    }


    var inputV = getOnlyNumberFormat(this.value);

    for ( var i = 0 ; i < mask.length ; i++)
    {
        if ( mask.substring(i,i+1) != "#" )
            inputV = inputV.substring(0,i) + mask.substring(i,i+1) + inputV.substring(i);
    }

    this.value = inputV;
}

/**********************
* 우편번호 셋팅하기 위한 함수
* @param :
* @return : void
* @see
************************/
function setInitPostMaskUp()
{

    if(this.value == "") return;

    /* var mask = this.maskform; */
    if(this.value.length==6){
        var mask = "###-###";
    }else{
        return ;
    }


    var inputV = getOnlyNumberFormat(this.value);

    for ( var i = 0 ; i < mask.length ; i++)
    {
        if ( mask.substring(i,i+1) != "#" )
            inputV = inputV.substring(0,i) + mask.substring(i,i+1) + inputV.substring(i);
    }

    this.value = inputV;
}

/**********************
* 고객번호 셋팅하기 위한 함수 0패딩
* @param :
* @return : void
* @see
************************/
function setInitCusnoMaskUp()
{

    if(this.value == ""){
    	return;
    }

    /* var mask = this.maskform; */
    if(this.value.length>9){
        return;
    }
    
    this.value = cf_lpad(this.value,9,'0');;
}

/**********************
* 계좌번호 포멧을 셋팅하기 위한 함수
* @param :
* @return : void
* @see
************************/
function setInitAccountMaskUp()
{
    if(this.value == "") return;

    /* var mask = this.maskform; */
    if(this.value.length==10){
    	var mask = "#-######-###";
	}else if(this.value.length==11){
		var mask = "###-#####-###";
	}else if(this.value.length==12){
		var mask = "#-#######-##-##";
	}else if(this.value.length==13){
		var mask = "###-#####-###-##";
	}else if(this.value.length==14){
		var mask = "###-#####-###-###";
	}else if(this.value.length==15){
		var mask = "#########-##-####";
	}else{
		return ;
	}
    
    var inputV = getOnlyNumberFormat(this.value);

    for ( var i = 0 ; i < mask.length ; i++)
    {
        if ( mask.substring(i,i+1) != "#" )
            inputV = inputV.substring(0,i) + mask.substring(i,i+1) + inputV.substring(i);
    }

    this.value = inputV;
    
}

/**********************
* 전화번호 포멧을 셋팅하기 위한 함수
* @param :
* @return : void
* @see
************************/

function setInitPhoneMaskUp()
{
	if(this.value == "") return;
	var inputV = getOnlyNumberFormat(this.value);
	inputV = inputV.replace(/(^02.{0}|^01.{1}|[0-9]{3})([0-9]+)([0-9]{4})/, "$1-$2-$3");
	
	this.value = inputV;
}

/**********************
* 주민사업자번호 셋팅하기 위한 함수
* @param :
* @return : void
* @see
************************/
function setInitSsnCorpMaskUp()
{

    if(this.value == "") return;

    /* var mask = this.maskform; */
    if(this.value.length==10){
        var mask = "###-##-#####";
    }else if (this.value.length==13){
        var mask = "######-#######";
    }else{
        return ;
    }


    var inputV = getOnlyNumberFormat(this.value);

    for ( var i = 0 ; i < mask.length ; i++)
    {
        if ( mask.substring(i,i+1) != "#" )
            inputV = inputV.substring(0,i) + mask.substring(i,i+1) + inputV.substring(i);
    }

    this.value = inputV;
}


/**********************
* 숫자열 마스크 씌우기
*  ex : initSetMaskUp(form1.name)
* @param : 마스크를 셋팅할 element
* @return : void
* @see
************************/
function initSetMaskUp(elem)
{
    elem.onkeypress = setKeyInputNumberOnly;
    if(elem.onfocus == undefined) elem.onfocus = filterGetNumberOnly;
    if(elem.onblur == undefined) elem.onblur = setInitMaskUp;
}


/**********************
* 페이지 초기화시에 onfocus 이벤트에 할당되면 이 Elemnent에 숫자외의 문자("," , "/" , "-")는 focus시에 제거됨
* @param :
* @return : void
* @see
************************/
function filterGetNumberOnly()
{
    this.value = getOnlyNumberFormat(this.value);
    this.select();
}

/**********************
* 페이지 초기화시에 onfocus 이벤트에 할당되면 이 Elemnent에 숫자외의 문자("," , "/")는 focus시에 제거됨
* @param :
* @return : void
* @see
************************/
function filterGetNumber()
{
    this.value = getOnlyIntFormat(this.value);
    this.select();
}

/**********************
* 문자열에서 숫자만 빼오기 체크 로직
* ex : getOnlyNumberFormat(form1.name.value)
* @param : 변환할 String 값
* @return : void
* @see
************************/
function getOnlyNumberFormat(sv)
{
    if(sv == null) return;
    var temp="";
    var ret = "";

    for(var index = 0 ; index < sv.length ; index++)
    {
        temp = parseInt(sv.charAt(index), 10);
        if( temp >= 0 || temp <= 9)
        {
            ret +=temp;
        }
    }
    return ret;

}

/**********************
* 문자열에서 숫자,'-'만 빼오기 체크 로직
* ex : getOnlyNumberFormat(form1.name.value)
* @param : 변환할 String 값
* @return : void
* @see
************************/
function getOnlyIntFormat(sv)
{
	if(sv == null) return;
    var temp="";
    var ret = "";
    for(var index = 0 ; index < sv.length ; index++)
    {
        if(sv.charAt(index) == '-') {
            ret += sv.charAt(index);
            continue;
        }

        temp = parseInt(sv.charAt(index), 10);
        if( temp >= 0 || temp <= 9)
        {
            ret += temp;
        }
    }
    return ret;

}

/**********************
* 문자열에서 숫자,'-','.' 만 빼오기 체크 로직
* ex : getOnlyNumberFormat(form1.name.value)
* @param : 변환할 String 값
* @return : void
* @see
************************/
function getOnlyFloatNumberFormat(sv)
{
    if(sv == null) return;
    var temp="";
    var ret = "";
    for(var index = 0 ; index < sv.length ; index++)
    {
        if(sv.charAt(index) == '-' || sv.charAt(index) == '.') {
            ret += sv.charAt(index);
            continue;
        }

        temp = parseInt(sv.charAt(index), 10);
        if( temp >= 0 || temp <= 9)
        {
            ret += temp;
        }
    }
    return ret;

}



/**********************
* 페이지 초기화시에 마스크 설정값대로 변환하기
* @param :
* @return : void
* @see
************************/
function setInitMaskUp()
{
    /* var mask = this.maskform; */
    var mask = document.getElementsByName(this.name)[0].getAttribute('maskform');

    if(this.value == "")
        return;

    var inputV = getOnlyNumberFormat(this.value);

    for ( var i = 0 ; i < mask.length ; i++)
    {
        if ( mask.substring(i,i+1) != "#" )
            inputV = inputV.substring(0,i) + mask.substring(i,i+1) + inputV.substring(i);
    }

    this.value = inputV;
}

/**********************
* 페이지 초기화시 숫자만 입력받기
* @param :
* @return : void
* @see
************************/
function setKeyInputNumberOnly(event)
{
    event = checkEvent(event);
    
    if(event.shiftKey == true)  returnValue(event);
    
    if ( event.which<48||(event.which>57&&event.which<96)||event.which>105 )/* 숫자 키코드값 */
    {
        /*  enter, tab, backspace 방향키(앞,뒤)는 예외처리 */
        if(event.which == null || event.which == 0 || event.which == 8 || event.which == 9 || event.which == 37 )	// || event.which == 39 - 작은따옴표 안들어가도록 제거
        {
            return true;
        }
        if( event.which != 46 ){
        	turnoff_fx_event_func(event);
        }
    }
    var pKey = String.fromCharCode(event.which);
    if( getEventElement(event).getAttribute("userchar") != undefined) {
        var userKey = getEventElement(event).getAttribute("userchar");
        if(userKey.toLowerCase()=="all"){
            userKey = getusercharall();
        }
        for(i=0;i< userKey.length;i++) {
            if(pKey == userKey.charAt(i)) {
                event.returnValue=true;
                break;
            }
        }
    }
    if (this.type == "number" && $(this).attr('maxLength') == this.value.length) {
    	event.returnValue = false;
    }
}

// event 발생시 브라우저별로 자체 제공하는 특별기능 끄기.
function turnoff_fx_event_func(event) {
    event = event || window.event;

    if (event.preventDefault) {
        event.preventDefault();   // firefox/모질라에서 event 발생시 자체 제공하는 특별기능 끄기.
    } else {
        returnValue(event);
    }
}

function preventDefault(event) {
    if (event.currentTarget.allowDefault) {
         return;
    }
    e.preventDefault();
}

/**********************
* 숫자만 입력하는 INPUT창에 붙여넣기를 했을 경우에도 숫자만 입력 되게.
* @param :
* @return : void
* @see
************************/
function setPasteNumberOnly(event)
{
    event = checkEvent(event);
    var clipdata = "";
    try {
        clipdata = window.clipboardData.getData("Text");	
    } catch (e) {
    	clipdata = event.clipboardData.getData("Text");
    }
    clipdata = clipdata.replace(/-/gi,"");
    if(clipdata.match(/^\d+$/ig) == null){
        /* alert("형식이 맞지 않습니다."); */
        return false;
    }

    var element;
    try {
    	element = document.all.tags('INPUT');
    } catch (e) {
    	element = document.getElementsByTagName('INPUT');
    }

    for(var idx=0; idx < element.length; idx++){
        var obj = element[idx];
        if(obj.onpaste && obj == this){

            obj.value = clipdata.substring(0,clipdata.length);
        }
    }

    turnoff_fx_event_func(event);
}

/**********************
* 페이지 초기화시에 언어 및 숫자형 입력 및 표현 처리.
* @param : 이벤트를 셋팅할 element
* @return : void
* @see
************************/
function initSetLetterType(elem) {
	//////////////////////////////////////////////////////////
	var language = "KO"; // 언어처리 확인 되면 제거. 임시로 구현.
	//////////////////////////////////////////////////////////
	// touchen 설치여부 (_FORMCHECK_IS_TOUCHEN 이 N이면 설치없이 사용, 이외에는 무조건 설치해야하니까 true)
	var touchen_installed = cf_getCookie("_IS_TOUCHEN_CHECK") == "N" ? false : true;
	console.log("키보드보안 이용중이신가요?? > " + touchen_installed);
	if(cf_isTouchEnValidChk()&& touchen_installed){
	    var userKey = elem.getAttribute("userchar");
	    if (!cf_isEmpty(userKey)) {
	    	if(userKey.toLowerCase() == "all"){
	            userKey = getusercharall();
	        }
	        
	    	if( userKey != null && userKey.trim() != "" ){
	    		elem.setAttribute("data-mask", userKey ); // 2016.10.11
	    	}
	    }
	}
	
	if (elem.getAttribute("chartype") == "kor")/* 한글만 */
    {
    	if(cf_isTouchEnValidChk() && touchen_installed){
    		elem.setAttribute("data-datatype", "h"); // 2016.10.11
    	}else{
	   		elem.style.imeMode = "active";
	        if(elem.onkeypress == undefined) elem.onkeypress = setLetterKoreanOnly;
    	}
    } else if (elem.getAttribute("chartype").toLowerCase() == "kornum")/* 한글+숫자 */
    {
    	if(cf_isTouchEnValidChk() && touchen_installed){
    		elem.setAttribute("data-datatype", "hn"); // 2016.10.11
    	}else{
	   		elem.style.imeMode = "active";
	        if(elem.onkeypress == undefined) elem.onkeypress = setLetterKorNumOnly;
    	}
    } else if (elem.getAttribute("chartype").toLowerCase() == "koreng")/* 한글+영문 */
    {
    	if(cf_isTouchEnValidChk() && touchen_installed){
    		elem.setAttribute("data-datatype", "ha"); // 2016.10.11
    	}else{
	    	if(language == "KO"){
	    		elem.style.imeMode = "active";
	    	}else{
	    		elem.style.imeMode = "inactive";
	    	}
	        if(elem.onkeypress == undefined) elem.onkeypress = setLetterKorEngOnly;
    	}
    } else if (elem.getAttribute("chartype").toLowerCase() == "korengnum")/* 한글+영문+숫자 */
    {
    	if(cf_isTouchEnValidChk() && touchen_installed){
    		elem.setAttribute("data-datatype", "han"); // 2016.10.11
    	}else{
	    	if(language =="KO"){
	    		elem.style.imeMode = "active";
	    	}else{
	    		elem.style.imeMode = "inactive";
	    	}
	         if(elem.onkeypress == undefined) elem.onkeypress = setLetterKorEngNumOnly;
    	}
    }else if (elem.getAttribute("chartype").toLowerCase() == "userid")	 /* 사용자 id : 숫자+영문 둘다 포함해야함 */
    {
    	if(cf_isTouchEnValidChk() && touchen_installed){
    		elem.setAttribute("data-datatype", "an"); // 2016.10.11
    	}else{
	        elem.style.imeMode = "disabled";
	        if(!IS_IME_MODE){
	            if(elem.onkeyup == undefined) elem.onkeyup = noImeModeData;
	        }
	         if(elem.onkeypress == undefined) elem.onkeypress = setLetterEngNumOnly;
	         if(elem.onblur == undefined) elem.onblur = chkIncludeEngNum;  //숫자+영문 모두 포함했는지 여부 체크
    	}
    }  else if (elem.getAttribute("chartype").toLowerCase()  == "eng")/* 영어만 */
    {
    	if(cf_isTouchEnValidChk() && touchen_installed){
    		elem.setAttribute("data-datatype", "a"); // 2016.10.11
    	}else{
	        elem.style.imeMode = "disabled";
	        if(!IS_IME_MODE){
	            if(elem.onkeyup == undefined) elem.onkeyup = noImeModeData;
	        }
	        if(elem.onkeypress == undefined) elem.onkeypress = setLetterEnglishOnly;
	        if(elem.onblur == undefined) elem.onblur = chkNotKorField;  //한글오류처리IE제외브라우져관련
    	}
    } else if (elem.getAttribute("chartype").toLowerCase()  == "engnum")/* 영어+숫자 */
    {
    	if(cf_isTouchEnValidChk() && touchen_installed){
    		elem.setAttribute("data-datatype", "an"); // 2016.10.11
    	}else{
	        elem.style.imeMode = "disabled";
	        if(!IS_IME_MODE){
	            if(elem.onkeyup == undefined) elem.onkeyup = noImeModeData;
	        }
	         if(elem.onkeypress == undefined) elem.onkeypress = setLetterEngNumOnly;
	         if(elem.onblur == undefined) elem.onblur = chkNotKorField;
	        /* 특수문자 입력 안되게 수정해야함. */
    	}
    } else if (elem.getAttribute("chartype").toLowerCase()  == "float")/* 실수형 [숫자 , . , -] 값만 입력받음.*/
    {
    	if(cf_isTouchEnValidChk() && touchen_installed){
    		elem.setAttribute("data-datatype", "n"); // 2016.10.11
    		elem.setAttribute("data-mask", "-."); // 2016.10.11
    	}else{
	        if(!IS_IME_MODE){
	            if(elem.onkeyup == undefined) elem.onkeyup = noImeModeData;
	        }
	         if(elem.onkeypress == undefined) elem.onkeypress = setLetterFloatOnly;
	         if(elem.onblur == undefined) elem.onblur = setFloat;
    	}
    } else if (elem.getAttribute("chartype").toLowerCase()  == "int")/* 정수형 [숫자 , -] 값만 입력받음.*/
    {
    	if(cf_isTouchEnValidChk() && touchen_installed){
    		elem.setAttribute("data-datatype", "n"); // 2016.10.11
    		elem.setAttribute("data-mask", "-"); // 2016.10.11
    	}else{
	        if(!IS_IME_MODE){
	            if(elem.onkeyup == undefined) elem.onkeyup = noImeModeData;
	        }
	         if(elem.onkeypress == undefined) elem.onkeypress = setLetterInteger;
	         if(elem.onblur == undefined) elem.onblur = chkNotKorField;
    	}
    } else if (elem.getAttribute("chartype").toLowerCase()  == "onlynum")/* 오직 숫자만 */
    {
    	if(cf_isTouchEnValidChk() && touchen_installed){
    		elem.setAttribute("data-datatype", "n"); // 2016.10.11
    	}else{
	        elem.style.imeMode = "disabled";
	        elem.onpaste = setPasteNumberOnly;
	        if(!IS_IME_MODE){
	            if(elem.onkeyup == undefined) elem.onkeyup = noImeModeData;
	        }
	        //elem.onkeypress = setKeyInputNumberOnly;
	        $(elem).on(
	        	'input change paste',
	        	function filterNumericAndDecimal(event){
	        		var formTarget;
	        		formTarget = $(event.target);
	        		formTarget.val(formTarget.val().replace(/[^0-9]+/g, ""));
	        	}
	        );
	        if(elem.onblur == undefined) elem.onblur = chkNotKorField;
    	}
    } else if ((elem.getAttribute("chartype").toLowerCase()  == "money") && !(elem.getAttribute("readonly")))/* 정수로만 된 아주 기본적인 금액 표시 */
    {
    	if(cf_isTouchEnValidChk() && touchen_installed){
    		elem.setAttribute("data-datatype", "n");
    	}else{
	        elem.style.imeMode = "disabled";
	        //elem.style.direction = "rtl";  // 인풋박스 오른쪽 정렬 스타일
	//        elem.style.textAlign = "right";
	//        elem.style.paddingRight = "56px";
	        if(!IS_IME_MODE){
	            if(elem.onkeyup == undefined) elem.onkeyup = noImeModeData;
	        }
	        if(elem.onkeypress == undefined) elem.onkeypress = setLetterInteger;//setFloatMoney;//키를 눌렀다 놓았을때
	        
	        //if(elem.onfocus == undefined) elem.onfocus = filterGetNumber;
    	}        
    	if(elem.onblur == undefined) elem.onblur = setKeypressMoney;
    	if(elem.onfocus == undefined) elem.onfocus = filterGetNumber;
    } else if ((elem.getAttribute("chartype").toLowerCase()  == "zeromoney") && !(elem.getAttribute("readonly")))/* 정수로만 된 아주 기본적인 금액 표시 */
    {
    	if(cf_isTouchEnValidChk() && touchen_installed){
    		elem.setAttribute("data-datatype", "c"); // 2016.10.11
    	}else{
	        elem.style.imeMode = "disabled";
	        //elem.style.direction = "rtl";  // 인풋박스 오른쪽 정렬 스타일
	//        elem.style.textAlign = "right";
	//        elem.style.paddingRight = "56px";
	        if(!IS_IME_MODE){
	            if(elem.onkeyup == undefined) elem.onkeyup = noImeModeData;
	        }
	        if(elem.onkeypress == undefined) elem.onkeypress = setLetterInteger;//setFloatMoney;//키를 눌렀다 놓았을때
	        if(elem.onblur == undefined) elem.onblur = setKeypressZeroMoney;
    	}
    } else if ((elem.getAttribute("chartype").toLowerCase() == "floatmoney") && !(elem.getAttribute("readonly")))
    {
    	if(cf_isTouchEnValidChk() && touchen_installed){
    		elem.setAttribute("data-datatype", "c"); // 2016.10.11
    		elem.setAttribute("data-mask", "-."); // 2016.10.11
    	}else{
	        elem.style.imeMode = "disabled";
	           //elem.style.direction = "rtl";
	//             elem.style.textAlign = "right";
	//             elem.style.paddingRight = "56px";
	             if(!IS_IME_MODE){
	            if(elem.onkeyup == undefined) elem.onkeyup = noImeModeData;
	        }
	         if(elem.onkeypress == undefined) elem.onkeypress = setLetterFloatOnly;//키를 눌렀다 놓았을때
	         if(elem.onblur == undefined) elem.onblur = setFloatMoney;
    	}
    }else if ((elem.getAttribute("chartype").toLowerCase() == "fexmoney") && !(elem.getAttribute("readonly")))
    {
    	if(cf_isTouchEnValidChk() && touchen_installed){
    		elem.setAttribute("data-datatype", "c"); // 2016.10.11
    		elem.setAttribute("data-mask", "-."); // 2016.10.11
    	}else{
	        elem.style.imeMode = "disabled";
	//        elem.style.textAlign = "right";
	//        elem.style.paddingRight = "56px";
	        if(!IS_IME_MODE){
	            if(elem.onkeyup == undefined) elem.onkeyup = noImeModeData;
	        }
	        if(elem.onkeypress == undefined) elem.onkeypress = setLetterFloatOnly;//키를 눌렀다 놓았을때
	        if(elem.onblur == undefined) elem.onblur = setFexMoney;
    	}
   }
}

/**********************
* 페이지 초기화시 -,숫자 입력받기( - 키코드값 189)
* @param :
* @return : void
* @see
************************/
function setKeydownMoney(event)
{
    event = checkEvent(event);
    if(event.shiftKey == true) returnValue(event);

    if ( event.which<48||(event.which>57&&event.which<96)||event.which>105 )/* 숫자 키코드값 */
    {
        /*  enter, tab, backspace 방향키(앞,뒤),delete는 예외처리 */
        if(event.which == 8 || event.which == 9 || event.which == 37 || event.which == 39 || event.which == 189 || event.which == 46)
        {
            return true;
        }
        turnoff_fx_event_func(event);
    }
}



/**********************
* 페이지 초기화 시에 금액 형태일 경우 키 입력시 금액 형태로 전환 empty이면 0처리 함.
* @param :
* @return : void
* @see
************************/
function setKeypressZeroMoney(event)
{

    event = checkEvent(event);
    var ev = getEventElement(event);

    var pKey = String.fromCharCode(event.which);

    var tempV = ev.value;

    if(tempV.length > 0){
        var stat = true;
        while(stat)
        {
            if(tempV.length > 0 && tempV.substring(0,1)==0)
            {
                tempV = tempV.substr(1);
            } else {
                stat = false;
            }
        }
    }

    var moneyReg = new RegExp('(-?[0-9]+)([0-9]{3})');
    if (pKey.charCodeAt() != 0) {
        tempV = tempV + pKey;
    }
    tempV = tempV.replace(/\,/g, "");
    while(moneyReg.test(tempV))
    {
        tempV = tempV.replace(moneyReg, '$1,$2');
    }
    ev.value = tempV;
    if(ev.value=="") ev.value = "0";
    if(event.which == 9){ev.select();}
    turnoff_fx_event_func(event);
    chkNotKorFieldVal(this, this.id, this.value);
}

/**********************
* 페이지 초기화 시에 금액 형태일 경우 키 입력시 금액 형태로 전환
* @param :
* @return : void
* @see
************************/
function setKeypressMoney(event)
{
    event = checkEvent(event);
    var ev = getEventElement(event);

    var pKey = String.fromCharCode(event.which);

    var tempV = ev.value;

    tempV = tempV.replace(/\,/g, "");
    
    if(tempV.length > 0){
    	if(tempV != 0){
	        var stat = true;
	        while(stat)
	        {	
	            if(tempV.length > 0 && tempV.substring(0,1)==0)
	            {
	                tempV = tempV.substr(1);
	            } else {
	                stat = false;
	            }
	        }
    	}else{	// '0'이 여러개입력된경우 '00000' 인경우 => 0으로 변경
    		tempV ="0";
    	}
    }

    var moneyReg = new RegExp('(-?[0-9]+)([0-9]{3})');
    if (pKey.charCodeAt() != 0) {
        tempV = tempV + pKey;
    }
    while(moneyReg.test(tempV))
    {
        tempV = tempV.replace(moneyReg, '$1,$2');
    }
    ev.value = tempV;
    
    if(event.which == 9){ev.select();}
    turnoff_fx_event_func(event);
    chkNotKorFieldVal(this, this.id, this.value);
}

/**********************
* 스트링값을 정수형 머니 형태로 변환
*  ex : changeIntMoneyType("1100000") 리턴되는 데이타 : 1,100,000
* @param : 변환할 String 데이타
* @return : 금액 형태로 변환된 스트링
* @see
************************/
function changeIntMoneyType(data)
{	
    var tempV = data;

    tempV = String(tempV);
    tempV = tempV.replace(/\,/g, "");
    
    if(typeof tempV == "string") {
    	
/*    	if( !isNaN(parseFloat(tempV)) ){
    		tempV = parseFloat(tempV);
    	}*/
    	
    	tempV = tempV.replace(/([^\-0-9])/g, "");	
    }
    
    tempV = String(tempV);
    
    var moneyReg = new RegExp('(-?[0-9]+)([0-9]{3})');
    while(moneyReg.test(tempV))
    {
        tempV = tempV.replace(moneyReg, '$1,$2');
    }
    return tempV;
}


/**********************
* 스트링값을 실수형 머니 형태로 변환
*  ex : changeIntFloatMoneyType("11000.11") 리턴되는 데이타 : 11,000.11
* @param : 변환할 String 데이타
* @return : 금액 형태로 변환된 스트링
* @see
************************/
function changeIntFloatMoneyType(data)
{
 var tempV = data;
 var floatnum = ""
 if(tempV.indexOf(".") != -1)
 {
  floatnum = tempV.substring(tempV.indexOf("."));// + pKey;
  tempV = tempV.substring(0,tempV.indexOf("."));
 } else {
  tempV = tempV;// + pKey;
 }

 var moneyReg = new RegExp('(-?[0-9]+)([0-9]{3})');
 tempV = tempV.replace(/\,/g, "");
 while(moneyReg.test(tempV))
 {
  tempV = tempV.replace(moneyReg, '$1,$2');
 }

 tempV = tempV+floatnum;
 return tempV;
}



/**********************
* 실수형 금액 입력제어 스크립트. 숫자 , . , - 값만 입력받음. 소수점 두째 자리까지만 입력됨
*  ex : changeIntMoneyType("1100000") 리턴되는 데이타 : 1,100,000
* @param : 변환할 String 데이타
* @return : 금액 형태로 변환된 스트링
* @see
************************/
function setKeydownFloatMoney(event)
{
    event = checkEvent(event);
    if(event.shiftKey == true) returnValue(event);

    var floatindex = getEventElement(event).value.indexOf(".");

    if(floatindex != -1)
    {
        var floatNum = getEventElement(event).value.substring(floatindex+1);
        if (event.which == 8 )
            return;
        else if (floatNum.length > 1 )
            turnoff_fx_event_func(event);
    }

    if ( event.which<48||(event.which>57&&event.which<96)||event.which>105 )/* 숫자 키코드값 */
    {
        if( event.which == 8 || event.which == 9 || event.which == 37 || event.which == 39 || event.which == 189)
        {
            return;
        } else if( event.which == 190 && floatindex == -1 )
        {
            return
        }

        turnoff_fx_event_func(event);
    }
}


/**********************
* 키 입력시 float 타입의 금액 형태로 전환
* @param :
* @return :
* @see
************************/
function setFloatMoney(event)
{
    event = checkEvent(event);
    var ev = getEventElement(event);
    var pKey = String.fromCharCode(event.which);

    var tempV = ev.value;
    var floatnum = "";

    if(tempV.indexOf(".") != -1)
    {
        floatnum = tempV.substring(tempV.indexOf(".")) + pKey;
        tempV = tempV.substring(0,tempV.indexOf("."));
    } else {
    	if (pKey.charCodeAt() != 0) {
            tempV = tempV + pKey;
        }
    }

    var moneyReg = new RegExp('(-?[0-9]+)([0-9]{3})');
    tempV = tempV.replace(/\,/g, "");
    while(moneyReg.test(tempV))
    {
        tempV = tempV.replace(moneyReg, '$1,$2');
    }

    ev.value = tempV+floatnum;
    
    
    if(event.which == 9){ev.select();}
    turnoff_fx_event_func(event);

    chkNotKorFieldVal(this, this.id, this.value);
}

/**********************
* 키 입력시 float 타입의 외환금액 형태로 전환 - 소수점 둘째자리에서 버림.
* @param :
* @return :
* @see
************************/
function setFexMoney(event)
{
    event = checkEvent(event);
    var ev = getEventElement(event);
    var pKey = String.fromCharCode(event.which);

    var tempV = ev.value;
    var floatnum = "";
    
    if(tempV.indexOf(".") != -1)
    {
        floatnum = tempV.substring(tempV.indexOf("."), parseInt(tempV.indexOf(".") + 3)) + pKey;
        tempV = tempV.substring(0,tempV.indexOf("."));
    } else {
    	if (pKey.charCodeAt() != 0) {
            tempV = tempV + pKey;
        }
    }

    var moneyReg = new RegExp('(-?[0-9]+)([0-9]{3})');
    tempV = tempV.replace(/\,/g, "");
    while(moneyReg.test(tempV))
    {
        tempV = tempV.replace(moneyReg, '$1,$2');
    }

    ev.value = tempV+floatnum;
    
    if(event.which == 9){ev.select();}
    turnoff_fx_event_func(event);

    chkNotKorFieldVal(this, this.id, this.value);
}

/**********************
* 키 입력시 float 타입의 형태로 전환
* @param :
* @return :
* @see
************************/
function setFloat(event)
{
    event = checkEvent(event);
    var ev = getEventElement(event);
    var pKey = String.fromCharCode(event.which);

    var tempV = ev.value;
    var floatnum = "";

    if(tempV.indexOf(".") != -1)
    {
        floatnum = tempV.substring(tempV.indexOf(".")) + pKey;
        tempV = tempV.substring(0,tempV.indexOf("."));
    } else {
    	if (pKey.charCodeAt() != 0) {
            tempV = tempV + pKey;
        }
    }
    
    if(typeof tempV == "string") {
    	if( !isNaN(parseFloat(tempV)) ){
    		tempV = parseFloat(tempV);
    	}
    }
    
    tempV = String(tempV);

    ev.value = tempV+floatnum;
    
    
    if(event.which == 9){ev.select();}
    turnoff_fx_event_func(event);

    chkNotKorFieldVal(this, this.id, this.value);
}

/**********************
* 키 입력시 한글만 입력받기
* @param :
* @return :
* @see
************************/
function setLetterKoreanOnly(event)
{
    event = checkEvent(event);

    if(event.which == null || event.which == 0 || event.which == 8 || event.which == 9 ||  event.which == 39)
    {
        return true;
    }
    var pKey = String.fromCharCode(event.which);
    if(!((pKey.charCodeAt() > 0x3130 && pKey.charCodeAt() < 0x318F) || (pKey.charCodeAt() >= 0xAC00 && pKey.charCodeAt() <= 0xD7A3)))
    {
        turnoff_fx_event_func(event);
        delete eReg;
    }

    if( getEventElement(event).getAttribute("userchar") != undefined) {
        var userKey = getEventElement(event).getAttribute("userchar");
        if(userKey.toLowerCase()=="all"){
            userKey = getusercharall();
        }
        for(i=0;i< userKey.length;i++) {
            if(pKey == userKey.charAt(i)) {
                event.returnValue=true;
                break;
            }
        }
    }
}

/**********************
* 키 입력시 한글,숫자 입력받기
* @param :
* @return :
* @see
************************/
function setLetterKorNumOnly(event)
{
    event = checkEvent(event);
    var pKey = String.fromCharCode(event.which);
    if(event.which == null || event.which == 0 || event.which == 8 || event.which == 9 ||  event.which == 39)
    {
        return true;
    }
    if(!((pKey.charCodeAt() > 0x3130 && pKey.charCodeAt() < 0x318F) || (pKey.charCodeAt() >= 0xAC00 && pKey.charCodeAt() <= 0xD7A3)
    || !setKeyInputNumberOnly(event)))
    {
        turnoff_fx_event_func(event);
       // delete eReg;
    }

    if( getEventElement(event).getAttribute("userchar") != undefined) {
        var userKey = getEventElement(event).getAttribute("userchar");
        if(userKey.toLowerCase()=="all"){
            userKey = getusercharall();
        }
        for(i=0;i< userKey.length;i++) {
            if(pKey == userKey.charAt(i)) {
                event.returnValue=true;
                break;
            }
        }
    }
}


/**********************
* 키 입력시 한글,영어만 입력받기
* @param :
* @return :
* @see
************************/
function setLetterKorEngOnly(event)
{
    event = checkEvent(event);
    var pKey = String.fromCharCode(event.which);
    var eReg = /[a-zA-Z]/g;
    if(event.which == null || event.which == 0 || event.which == 8 || event.which == 9 ||  event.which == 39)
    {
        return true;
    }
    if(!((pKey.charCodeAt() > 0x3130 && pKey.charCodeAt() < 0x318F) || (pKey.charCodeAt() >= 0xAC00 && pKey.charCodeAt() <= 0xD7A3)
        || !(pKey!="\r" && setLetterEnglishOnly(event))))
    {
        turnoff_fx_event_func(event);
        delete eReg;
    }

    //setUpperLowerCase();
    setCapslockCase();

    if( getEventElement(event).getAttribute("userchar") != undefined) {
        var userKey = getEventElement(event).getAttribute("userchar");
        if(userKey.toLowerCase()=="all"){
            userKey = getusercharall();
        }
        for(i=0;i< userKey.length;i++) {
            if(pKey == userKey.charAt(i)) {
                event.returnValue=true;
                break;
            }
        }
    }
}

function test(event) {
 event = event || window.event;

    if (event.preventDefault) {
        return true;
    } else {
        event.returnValue  = true;
    }
}

/*이벤트 한글체크*/
function chkNotKorField(){
    /* engcase가  있을 경우 */
    if (this.getAttribute("engcase")  != undefined){
        if(this.value == ""){
            return;
        }
    
        if( this.getAttribute("engcase") != undefined) {
            if(this.getAttribute("engcase")=="lowercase"){
                this.value = this.value.toLowerCase();
            }else if(this.getAttribute("engcase")=="uppercase"){
                this.value = this.value.toUpperCase();
            }
        }
    }
    if(cf_isHan(this.value)){
        fvAlert(COMMON_SCRIPT_00014,""+this.id+"");
    }
}


/* 숫자, 영어 모두 포함했는지의 여부를 체크 */
function chkIncludeEngNum(){
	/* engcase가  있을 경우 */
    if (this.getAttribute("engcase")  != undefined){
        if(this.value == ""){
            return;
        }
    
        if( this.getAttribute("engcase") != undefined) {
            if(this.getAttribute("engcase")=="lowercase"){
                this.value = this.value.toLowerCase();
            }else if(this.getAttribute("engcase")=="uppercase"){
                this.value = this.value.toUpperCase();
            }
        }
    }
    
    // 숫자, 영문 둘중 하나라도 포함되어있지 않으면 alert
    if(!cf_includeNum(this.value) || !cf_includeAlpha(this.value)){
    	fvAlert(COMMON_SCRIPT_00090,""+this.id+""); //영어와 숫자를 모두 포함하여야 합니다.
    }
    
    if(cf_isHan(this.value)){
        fvAlert(COMMON_SCRIPT_00014,""+this.id+"");
    }
}



/* 한글, 영문 모두 포함했는지의 여부를 체크 */
function chkIncludeKorEng(){
	/* engcase가  있을 경우 */
    if (this.getAttribute("engcase")  != undefined){
        if(this.value == ""){
            return;
        }
    
        if( this.getAttribute("engcase") != undefined) {
            if(this.getAttribute("engcase")=="lowercase"){
                this.value = this.value.toLowerCase();
            }else if(this.getAttribute("engcase")=="uppercase"){
                this.value = this.value.toUpperCase();
            }
        }
    }
  //  alert("한글:"+cf_isHan(this.value)+",영문:"+cf_includeAlpha(this.value));
    // 한글, 영문 둘중 하나라도 포함되어있지 않으면 alert
    if(!cf_isHan(this.value) || !cf_includeAlpha(this.value)){
    	fvAlert(COMMON_SCRIPT_00089,""+this.id+""); //한글과 영문을 모두 포함하여야 합니다.
    }
}

/*입력값 한글체크*/
function chkNotKorFieldVal(thisobj, objid, val){
    /* engcase가  있을 경우 */
    if (thisobj.getAttribute("engcase")  != undefined){
        if(this.value == ""){
            return;
        }
    
        if( this.getAttribute("engcase") != undefined) {
            if(this.getAttribute("engcase")=="lowercase"){
                this.value = this.value.toLowerCase();
            }else if(this.getAttribute("engcase")=="uppercase"){
                this.value = this.value.toUpperCase();
            }
        }
    }
    if(cf_isHan(val)){
        fvAlert(COMMON_SCRIPT_00014,""+objid+"");
    }
}


/**********************
* 키 입력시 한글,영어,숫자만 입력받기
* @param :
* @return :
* @see
************************/
function setLetterKorEngNumOnly(event)
{
    event = checkEvent(event);
    var pKey = String.fromCharCode(event.which);
    var eReg = /[a-zA-Z]/g;


    if( getEventElement(event).getAttribute("userchar") != undefined) {
        var userKey = getEventElement(event).getAttribute("userchar");
        if(userKey.toLowerCase()=="all"){
            userKey = getusercharall();
        }
        for(i=0;i< userKey.length;i++) {
            if(pKey == userKey.charAt(i)) {
            	return true;
                //event.returnValue=true;
                break;
            }
        }
    }
    
    if(!((pKey.charCodeAt() > 0x3130 && pKey.charCodeAt() < 0x318F) || (pKey.charCodeAt() >= 0xAC00 && pKey.charCodeAt() <= 0xD7A3))
    && ( (event.which < 65 || event.which > 122) ||   (90 < event.which && event.which < 97)))
    {
        if((47 < event.which && event.which < 58) && !event.shiftKey) { /* 숫자허용 */
            return true;
        }
        /*  enter, tab, backspace 방향키(앞,뒤)는 예외처리 */
        if(event.which == null || event.which == 0 || event.which == 8 || event.which == 9 || event.which == 39)
        {
           return true;
        }
        turnoff_fx_event_func(event);
 //       delete eReg;
    }
    //setUpperLowerCase();
    setCapslockCase();
    chkUserCharFieldVal(event);
    
}


/**********************
* 키 입력시 영어만 입력받기
* @param :
* @return :
* @see
************************/
function setLetterEnglishOnly(event)
{
    event = checkEvent(event);
    var pKey = String.fromCharCode(event.which);
    if ((event.which < 65 || event.which > 122) ||  (90 < event.which && event.which < 97) )/* 문자 키코드값 */
    {
        /*  enter, tab, backspace 방향키(앞,뒤)는 예외처리 */
        if(event.which == null || event.which == 0 || event.which == 8 || event.which == 9 ||  event.which == 39  ||  event.which == 32)
        {
            return true;
        }
        turnoff_fx_event_func(event);
    }
    //setUpperLowerCase();
    setCapslockCase();

    if( getEventElement(event).getAttribute("userchar") != undefined) {
        var userKey = getEventElement(event).getAttribute("userchar");
        if(userKey.toLowerCase()=="all"){
            userKey = getusercharall();
        }
        for(i=0;i< userKey.length;i++) {
            if(pKey == userKey.charAt(i)) {
                event.returnValue=true;
                break;
            }
        }
    }
    chkUserCharFieldVal(event);
}

/**********************
* 키 입력시 영어,숫자만 입력받기
* @param :
* @return :
* @see
************************/
function setLetterEngNumOnly(event)
{
    event = checkEvent(event);
    var pKey = String.fromCharCode(event.which);
    if ( (event.which < 65 || event.which > 122) ||   (90 < event.which && event.which < 97) )/* 문자 키코드값 */
    {

        if((47 < event.which && event.which < 58) && !event.shiftKey) { /* 숫자허용 */
            return true;
        }
        /*  enter, tab, backspace 방향키(앞,뒤)는 예외처리 */
        if(event.which == null || event.which == 0 || event.which == 8 || event.which == 9 || event.which == 39)
        {
            return true;
        }
        turnoff_fx_event_func(event);
    }

    //setUpperLowerCase();
    setCapslockCase();
    
    if( getEventElement(event).getAttribute("userchar") != undefined) {
        var userKey = getEventElement(event).getAttribute("userchar");
        if(userKey.toLowerCase()=="all"){
            userKey = getusercharall();
        }
        for(var i=0;i< userKey.length;i++) {
            if(pKey == userKey.charAt(i)) {
                event.returnValue=true;
                
                break;
            }
        }
    }
    chkUserCharFieldVal(event);
}

/**********************
* 키 입력시 숫자,- 값만 입력받음.
* @param :
* @return :
* @see
************************/
function setLetterInteger(event)
{
    event = checkEvent(event);
    var pKey = String.fromCharCode(event.which);
    var intReg = /[0-9\\-]/g;

    if(pKey!="\r" && !intReg.test(pKey)) /* 엔터키 및 regkey가 아닐경우 리턴 */
        turnoff_fx_event_func(event);

    delete intReg;

    if( getEventElement(event).getAttribute("userchar") != undefined) {
        var userKey = getEventElement(event).getAttribute("userchar");
        if(userKey.toLowerCase()=="all"){
            userKey = getusercharall();
        }
        for(i=0;i< userKey.length;i++) {
            if(pKey == userKey.charAt(i)) {
                event.returnValue=true;
                break;
            }
        }
    }
    chkUserCharFieldVal(event);
}



/**********************
* 키 입력시 숫자 , . , - 값만 입력받음.
* @param :
* @return :
* @see
************************/
function setLetterFloatOnly(event)
{
    event = checkEvent(event);
    var pKey = String.fromCharCode(event.which);
    var floatReg = /[0-9\\.\\-]/g;
    if(pKey!="\r" && !floatReg.test(pKey)) /* 엔터키 및 regkey가 아닐경우 리턴 */
        turnoff_fx_event_func(event);
    delete floatReg;

    if( getEventElement(event).getAttribute("userchar") != undefined) {
        var userKey = getEventElement(event).getAttribute("userchar");
        if(userKey.toLowerCase()=="all"){
            userKey = getusercharall();
        }
        for(i=0;i< userKey.length;i++) {
            if(pKey == userKey.charAt(i)) {
                event.returnValue=true;
                break;
            }
        }
    }
    chkUserCharFieldVal(event);
}


/* -----------------------------------------------------------------------------------------------------------------
----------------------------------- 페이지 initialize 관련 함수 끝 ------------------------------------------------
*/

/**********************
*  최소값 체크 로직
*  ex : validationMinimum("100000","10000")
* @param : 지정된 최소 value
* @param : 입력된 Value
* @return : boolean
* @see
************************/
function validationMinimum(minV,inV)
{
    if (minV == "")
    {
        fvAlert(COMMON_SCRIPT_00005);
        return false;
    }

    if ( parseFloat(inV) < parseFloat(minV) )
    {
        return false;
    }

    return true;
}


/**********************
*  최대값 체크 로직
*  ex : validationMaximum("100000","10000")
* @param : 지정된 최대 value
* @param : 입력된 Value
* @return : boolean
* @see
************************/

function validationMaximum(maxV,inV)
{
    if (maxV == "")
    {
        fvAlert(COMMON_SCRIPT_00006);
        return false;
    }

    if ( parseFloat(maxV) < parseFloat(inV) )
    {
        return false;
    }
    return true;
}


/**********************
*  최대 btye 체크 로직
*  ex : validationMaxByte(form1.inputname.value , 10)
* @param : 체크할 String value
* @param : 최대 byte
* @return : boolean
* @see
************************/
function validationMaxByte(textObj, length_limit, numfullchar)
{
    if(numfullchar == "false" && !cf_isHan(textObj)){
        return true;
    }
    var length = calculate_msglen(textObj);
    var kor_cnt = Math.floor(length_limit/2);
    if (length > length_limit) {
        return false;
    }
    return true;
}


/**********************
*  최소 btye 체크 로직
*  ex : validationMinByte(form1.inputname.value , 10)
* @param : 체크할 String value
* @param : 최소 byte
* @return : boolean
* @see
************************/
function validationMinByte(textObj, length_limit)
{
    var length = calculate_msglen(textObj);
    var kor_cnt = Math.floor(length_limit/2);
    if (length < length_limit) {
        return false;
    }
    return true;
}



function calcuate_HanMsglen(message) {
    var nbytes = 0;
    var isHangul = false;
    for (i=0; i<message.length; i++) {
        var ch = message.charAt(i);
        if(cf_isHangul(ch)) {
            //nbytes = calculate_msglen(convert2ByteCharToString(message));
            isHangul = true;
        } else {
            //nbytes = calculate_msglen(message);
            //if(!isHangul) isHangul = false;
        }
    }
    if(isHangul) {
        nbytes = calculate_msglen(convert2ByteCharToString(message));
    }else {
        nbytes = calculate_msglen(message);
    }
    return nbytes;
}

/*********************
*  한글 2글자 영문 1글자로 길이 측정하여 문자열의 byte 길이를 리턴한다.
*  ex : validationMaxByte(form1.inputname.value , 10)
* @param : 체크할 String value
* @return : 측정한 해당 값의 byte 길이
* @see
************************/
function calculate_msglen(message)
{
    var nbytes = 0;

    for (i=0; i<message.length; i++) {
        var ch = message.charAt(i);

        if(escape(ch).length > 4) {
            nbytes += 2;
        } else if (ch == '\n') {
            if (message.charAt(i-1) != '\r') {
                nbytes += 1;
            }
        } else if (ch == '<' || ch == '>') {
            nbytes += 4;
        } else {
            nbytes += 1;
        }
    }
    return nbytes;
}


/**********************
* 사용자가 지정한 마스크업 스타일중 영어,숫자 혼합인 데이타의 mask를 지울때 사용 영어,숫자 이외의 문자 제거
*  ex : unMaskEngNum(String)
* @param : 마스크가 있는 String
* @return : 구분자를 제외한 String
* @see
************************/
function unMaskEngNum(data) {

    var accReg = new RegExp('([a-zA-Z0-9])');

    var temp = "";
    for(var i = 0 ; i < data.length ; i++)
    {
        if(accReg.test(data.substr(i,1)))
        {
            temp += data.substr(i,1);
        }
    }
    return temp;
}

/**********************
* 문자열을 전각문자열로 변환 (문자열의 반각문자를 전각문자로 변환함)
* @param : x_string 변환할 문자열
* @return : 변환된 전각문자열
* @see
************************/
function convert2ByteCharToString(x_string, numfullchar) {

    if(numfullchar == "false") {
        if(!cf_isHan(x_string)){
            return x_string;
        }
        /*var isAllNum = true;
        //만약 필드에 숫자만 들어가있다면 전각문자로 변환하지 않는다.

        for(i=0;i < x_string.length;i++) {
            var c  = x_string.charCodeAt(i)
            if(((c > 0x3130 && c < 0x318F) || (c >= 0xAC00 && c <= 0xD7A3)))
            {
                isAllNum = false;
                break;
            }
        }
        if(isAllNum) {
            return x_string;
        }*/
    }
    var x_2byteString = ""; /* 컨버트된 문자 */
    var isBeforeSpace = false;
    for(i=0;i < x_string.length;i++) {
        var c = x_string.charCodeAt(i);
        if(32 <= c && c <= 126) { /* 전각으로 변환될수 있는 문자의 범위 */
            if(c == 32) { /* 스페이스인경우 ascii 코드 32 */
                /* 아래와 같이 변환시 깨짐. */
                /* x_2byteString = x_2byteString + unescape("%uFFFC"); */
                if(isBeforeSpace) { /*스페이스가 연속으로 2개 들어왔을경우 스페이스 하나로 처리하기 위함..*/
                    x_2byteString = x_2byteString + "";
                    isBeforeSpace = false;
                } else {
                    x_2byteString = x_2byteString + unescape("%u"+gf_DecToHex(12288));
                    isBeforeSpace = true;
                }
            } else {
                x_2byteString = x_2byteString + unescape("%u"+gf_DecToHex(c+65248));
                isBeforeSpace = false;
            }
        }else{
            x_2byteString = x_2byteString + x_string.charAt(i);
            isBeforeSpace = false;
        }
    }
    return  x_2byteString;
}


/**********************
* 반각문자를 전각문자로 변환한다.
* @param : 전각문자로 변환할 문자
* @return : 변환된 전각문자
* @see
************************/
function convert2ByteChar(x_char) {
    var x_2byteChar = ""; /* 컨버트된 문자 */
    var c = x_char.charCodeAt(0);
    if(32 <= c && c <= 126) { /* 전각으로 변환될수 있는 문자의 범위 */
        if(c == 32) { /* 스페이스인경우 ascii 코드 32 */
            /* 아래와 같이 변환시 깨짐. */
            /* x_2byteChar = unescape("%uFFFC"); */
            x_2byteChar = unescape("%u"+gf_DecToHex(12288));
        } else {
            x_2byteChar = unescape("%u"+gf_DecToHex(c+65248));
        }
    }
    return  x_2byteChar;
}


function gf_DecToHex(dec) {
    return dec.toString(16);
}

/**********************
* 문자 방지(한글 제외)
*  ex : ONKEYPRESS="hasOnlyNumber();"
* @param : boolean
* @return : void
* @see
************************/
function hasOnlyNumber(Obj, event){
    event = checkEvent(event);
    var keyCode = event.which ? event.which :
            event.which ? event.which : event.charCode;
    if(keyCode > 222) return false;        /*  Select Box외 기타 이벤트 방지 */
    if (keyCode != 13) {
        if( !((keyCode>45 && keyCode<58) || (keyCode>95 && keyCode<106) || (keyCode>7 && keyCode<10) || (keyCode>36 && keyCode<41)) ){

            fvAlert(COMMON_SCRIPT_00007);
            if(Obj == null) {
                    turnoff_fx_event_func(event);
                } else {
                    Obj.value = "";
                Obj.focus();
                }
        }
    }
}

function getusercharall(){
    return "~!@#$%^&*()_+|-=.,? ";
}


function noImeModeData(event){
    this.value = this.value.replace(/[\ㄱ-ㅎㅏ-ㅣ가-힣]/g,"");
    
}

function getObjLabel(obj) {
	var vRtn = "";
	try{
		if ( !cf_isEmpty(obj.getAttribute("title"))) {
			vRtn = obj.getAttribute("title");
		} else if ( !cf_isEmpty($("label[for=" + obj.id + "]").text())) {
			vRtn = $("label[for=" + obj.id + "]").text();
		}
	}catch(e){
		vRtn = "";
	}
	return vRtn;
	  
}

function initEnsighten(frm)
{
    for (var i = 0 ; i < frm.elements.length ; i++)
    {
    	if (frm.elements[i].nodeName.toString().toLowerCase() == "input") {
	        if(frm.elements[i].getAttribute("type") == "text" || frm.elements[i].getAttribute("type") == "password" 
	        	 || frm.elements[i].getAttribute("type") == "tel" ){
	        	frm.elements[i].onfocusout = function(e){
					if (!cf_isEmpty(this.value)) {
						//console.log("ENSIGHTEN call : type=5, filed_name="+getObjLabel(this));
						callEnsighten("5", this);
					}
				};
	        } else if (frm.elements[i].getAttribute("type") == "radio" || frm.elements[i].getAttribute("type") == "checkbox"){
	        	$(frm.elements[i]).change(function(e){
					//console.log("ENSIGHTEN call : type=5, filed_name="+getObjLabel(this));;
	        		callEnsighten("5", this);
				});
	        }
    	} else if (frm.elements[i].nodeName.toString().toLowerCase() == "select") {
    		$(frm.elements[i]).change(function(e){
				//console.log("ENSIGHTEN call : type=5, filed_name="+getObjLabel(this));
				callEnsighten("5", this);
			});
    	}
    }
}

function callEnsighten(type, elem) {
	if ("RND" == _IS_PRODSYSTEM_) {
		console.log("ENSIGHTEN call : type="+type+", filed_name="+getObjLabel(elem));
	} else {
		try {
			if (type == "2") {
				sendFormEnsighten(type);
			} else {
				sendFormEnsighten(type, getObjLabel(elem));
			}
		} catch(e) {
			// Ensighten 오류
			
		}
	}
}

/*userchar 속성 처리 추가 */
function chkUserCharFieldVal(event){
	var touchen_installed = cf_getCookie("_IS_TOUCHEN_CHECK") == "N" ? false : true;
	if(!touchen_installed){
		event = checkEvent(event);
	    var pKey = String.fromCharCode(event.which);

	    //setUpperLowerCase();
	    setCapslockCase();
	    var userChar = "";
	    if( getEventElement(event).getAttribute("userchar") != undefined) {
	        var userKey = getEventElement(event).getAttribute("userchar");
	        for(var i=0;i< userKey.length;i++) {
	            if(pKey == userKey.charAt(i)) {
	                userChar = pKey;
	                break;
	            }
	        }
	        
	    }
	    getEventElement(event).value += userChar;
	}
}