/******************************************************** 
   파일명 : lib.mask.js
   설  명 : 브라우져 공통포멧 처리관련 공통함수 모음
            화면단 Validation/Filter/Format(won, date, filter외)기능을 처리한다.
			사용되는 Mask 패턴
			won : 원화 (3자리 마다 "," 입력)
			year : 년도 (9999)
			yearmonth : 년월 (9999-99)
			date : 년월일 (9999-99-99)
			time : 시간 (99:99)
			jumin : 주민등록번호 (999999-9999999)
			bizno : 사업자등록번호 (999-99-99999)
			corpno : 기업번호 (999999-9999999)
			orgno : 기관번호 (99-999999)
			zipcode : 우편번호 (999-999)
			kor : 한글만 입력가능
			eng : 영문만 입력가능
			num : 숫자만 입력가능(단 소수점 입력가능, 오른쪽 정렬)
			num2 : 숫자만 입력가능(소수점 및 공백입력 불가, 왼쪽 정렬)
			numcode : 숫자만 입력가능 (소수점 및 공백입력 불가)
			engcode : 영문과 숫자 입력 (공백입력불가)
			koreng : 한글과 영문입력 (숫자입력불가)
			kornum : 한글과 숫자입력 (영문입력불가)
			engnum : 영문과 숫자입력
			email : 이메일 포멧
			url : URL 포멧
			tel : 전화번호 포멧
			lowerengnum : 영문(소문자)과 숫자입력
            
			사용방법 
			<input name="buy_amt" type="text" id="buy_amt" size="14" won> //제일 마지막에 Mask Format("won")을 입력한다.
   작성자 : 김현배 
   작성일 : 2008.08.18 
   수정일 : 2008.08.18 
*********************************************************/ 

var TYPE_NONE = 0;
var TYPE_WON = 1;
var TYPE_YEAR = 2;
var TYPE_YEARMONTH = 3;
var TYPE_DATE = 4;
var TYPE_TIME = 5;
var TYPE_JUMIN = 6;
var TYPE_BIZNO = 7;
var TYPE_ORGNO = 8;
var TYPE_CORPNO = 9;
var TYPE_ZIPCODE = 10;
var TYPE_NUMCODE = 11;
var TYPE_ENGCODE = 12;

var TYPE_KOR = 20;
var TYPE_ENG = 21;
var TYPE_NUM = 22;
var TYPE_KORENG = 23;
var TYPE_KORNUM = 24;
var TYPE_ENGNUM = 25;

var TYPE_EMAIL = 30;
var TYPE_URL = 31;
var TYPE_TEL = 32;
var TYPE_LOWERENGNUM = 33;

function unformat()
{
    for(i = 0; i < document.forms.length; i++)
    {
    	var form = document.forms[i];
        for(j = 0; j < form.elements.length; j++)
        {
            if(form.elements[j].type == "text" || form.elements[j].type == "password") {
                //valdation type을 정의한 필드에 대해서만 '-' 부호를 제거해 준다.
            	if( form.elements[j].getAttribute("won") != null ||
            		form.elements[j].getAttribute("yearmonth") != null ||
            		form.elements[j].getAttribute("date") != null ||
            		form.elements[j].getAttribute("time") != null ||
            		form.elements[j].getAttribute("jumin") != null ||
            		form.elements[j].getAttribute("bizno") != null ||
            		form.elements[j].getAttribute("orgno") != null ||
            		form.elements[j].getAttribute("zipcode") != null ||
             		form.elements[j].getAttribute("corpno") != null ||
             		form.elements[j].getAttribute("numcode") != null ) 
                {
                    form.elements[j].value = form.elements[j].value.replace(/(\,|\-|\:)/g,"");;
                }
            }        
        }
    }
}  

function __fomat()
{
	switch(this.elementType)
	{
		case TYPE_WON : 
			var sWon = this.value.replace(/(^(0)*|,)/g, ""); // 앞에서 발생하는 무의미한 0와 중간의 ,(Comma)를 제거한다.

			var tWon = "";
			var i;
			var j = 0; 
			var tLen = sWon.length;

			for(i=0; i<tLen; i++)
			{
				if(i != 0 && (i % 3 == tLen % 3))
					tWon += ",";
				if(i < sWon.length)
                {
                    tWon += sWon.charAt(i);
                }
			}

			this.value = tWon;
			break;

		case TYPE_YEAR		: 
			this.value = __fomatMask(this.value, "9999");
			break;

		case TYPE_YEARMONTH : 
			this.value = __fomatMask(this.value, "9999-99");
			break;

		case TYPE_DATE		: 
			this.value = __fomatMask(this.value, "9999-99-99");
			break;

        case TYPE_TIME		: 
			this.value = __fomatMask(this.value, "99:99");
			break;


		case TYPE_JUMIN		: 
			this.value = __fomatMask(this.value, "999999-9999999");
			break;

		case TYPE_BIZNO		: 
			this.value = __fomatMask(this.value, "999-99-99999");
			break;

        case TYPE_ORGNO		: 
			this.value = __fomatMask(this.value, "99-999999");
			break;

		case TYPE_ZIPCODE	: 
			this.value = __fomatMask(this.value, "999-999");
			break;
        
        case TYPE_CORPNO	: 
			this.value = __fomatMask(this.value, "999999-9999999");
			break;
	}                 
}


function __fomatMask(str, mask)
{

	var sStr = str.replace(/(\$|\^|\*|\(|\)|\+|\.|\?|\\|\{|\}|\||\[|\]|-|:)/g,"");
	var tStr = "";
	var i;
	var j=0; 
	var tLen = sStr.length + 1 ;

	for(i=0; i< sStr.length; i++)
	{
		tStr += sStr.charAt(i);
		j++;
		if(j < mask.length && mask.charAt(j) != "9")
			tStr += mask.charAt(j++);
	 }   

	 return tStr;
}

function __onkeypress()
{
    var sKey = String.fromCharCode(event.keyCode); 
	var sFilter;

	switch(this.elementType)
	{
        // 숫자와 소수점이 입력가능
		case TYPE_WON		:
    		sFilter = "[0-9.-]";
            break;

        // 숫자만 입력가능
		case TYPE_YEAR		: 
		case TYPE_YEARMONTH : 
		case TYPE_DATE		:
		case TYPE_TIME		:
		case TYPE_JUMIN		:
		case TYPE_BIZNO		:
		case TYPE_ORGNO		:
		case TYPE_CORPNO	:

		case TYPE_ZIPCODE	:
    		sFilter = "[0-9]";
            break;

        case TYPE_NUMCODE   :
            sFilter = "[0-9]";
            break;

        case TYPE_ENGCODE   :
            sFilter = "[0-9A-Za-z]";
            break;

        case TYPE_KOR       :
            sFilter = "[^0-9A-Za-z ]";
            break;

        case TYPE_ENG       :
            sFilter = "[A-Za-z ]";
            break;

        case TYPE_NUM       :
            sFilter = "[0-9.-]";
            break;

        case TYPE_KORENG    :
            sFilter = "[^0-9 ]";
            break;

        case TYPE_KORNUM    :
            sFilter = "[^A-Za-z ]";
            break;

        case TYPE_ENGNUM    :
            sFilter = "[0-9A-Za-z ]";
            break;

        case TYPE_EMAIL     :
            sFilter = "[0-9A-Za-z@._-]";
            break;

        case TYPE_URL       :
            sFilter = "[0-9a-z:/.]";
            break;

        case TYPE_TEL       :
            sFilter = "[0-9]";
            break;

        case TYPE_LOWERENGNUM   :
            sFilter = "[0-9a-z]";
            break;
	}	

    if(sFilter)
	{ 
		var re = new RegExp(sFilter);    
    
		if(!re.test(sKey))
        {
			event.returnValue = false;
        }
	}      

    if(this.getAttribute("filter"))
    {
		var re = new RegExp(this.getAttribute("filter"));    

		if(!re.test(sKey))
        {
			window.event.returnValue = false;
        }
    }

    if(this.elementType == TYPE_WON || this.elementType == TYPE_NUM) // TYPE_WON, TYPE_NUM의 경우 컴마는 한개만
    {
        if(sKey == "." && this.value.indexOf(".") != -1)
    	window.event.returnValue = false;                    
    }

    if(this.getAttribute("keyPress"))
    {
        var fn  = eval(this.getAttribute("keyPress"));
    }
}    

function __onkeyup()
{
    var nKeyCode = window.event.keyCode;
    if(nKeyCode == 9 || 
        (nKeyCode >= 33 && nKeyCode <= 40) ||
        nKeyCode == 45 || nKeyCode == 46)
        return;

    switch(this.elementType)
	{
		case TYPE_WON		:
            insertSeperatorByWon(this, ",");	
            break;

		case TYPE_YEAR		: 
            break;

		case TYPE_YEARMONTH : 
            insertSeperatorByYearMonth(this, "-");
            break;

		case TYPE_DATE		:
            insertSeperatorByDate(this, "-");
            break;

		case TYPE_TIME		:
            insertSeperatorByTime(this, ":");
            break;

		case TYPE_JUMIN		:
            insertSeperatorByJumin(this, "-");
            break;

		case TYPE_BIZNO		:
            insertSeperatorByBizno(this, "-");
            break;

		case TYPE_ORGNO		:
            insertSeperatorByOrgno(this, "-");
            break;

		case TYPE_ZIPCODE	:
            insertSeperatorByZipcode(this, "-");
            break;

		case TYPE_CORPNO	:
            insertSeperatorByCorpNo(this, "-");
            break;            

        case TYPE_NUMCODE   :
        case TYPE_ENGCODE   :
        case TYPE_KOR       :
        case TYPE_ENG       :
        case TYPE_NUM       :
        case TYPE_KORENG    :
        case TYPE_KORNUM    :
        case TYPE_ENGNUM    :
        case TYPE_EMAIL     :
        case TYPE_URL       :
        case TYPE_TEL       :
        case TYPE_LOWERENGNUM    :
            break;
	}

    if(this.getAttribute("keyUp"))
    {
        var fn  = eval(this.getAttribute("keyUp"));
    }
}

function __onkeydown()
{
    if(this.getAttribute("keyDown"))
    {
        var fn  = eval(this.getAttribute("keyDown"));
    }
}

function __onfocus()
{
	if(this.select)
    {
		this.select(); 
    }

    if(this.getAttribute("focus"))
    {
        var fn  = eval(this.getAttribute("focus"));
    }
}

function __onchange(){
    if(this.getAttribute("change"))
    {
        var fn  = eval(this.getAttribute("change"));
    }
}

function __onclick(){

    if(this.getAttribute("click"))
    {
        var fn  = eval(this.getAttribute("click"));
    }
}

function __onblur()
{
    if(window.event.keyCode == 9)
        return;

    var title = this.getAttribute("title")?this.getAttribute("title"):"입력자료";
    var name = this.name;

    // 범위 검사
    if(this.getAttribute("range"))
    {
        var range = this.getAttribute("range").split("-");
        if(range.length == 2)
        {
            var str = trimAll(this.value);

            if(strlen(str) != 0 && !(strlen(str) >= range[0] && strlen(str) <= range[1]))
            {
                if(range[0] == range[1]) {
                    window.alert(title + "은(는) " + range[0] +"자로 입력하세요.");
                    this.focus();
                } else {
                    window.alert(title + "은(는) 최소 " + range[0] +"자, 최대 " + range[1] + "자로 입력하세요.");
                    this.focus();
                }
                this.value = str;
                this.focus();

                return;
            }

            this.value = str;

        }
    } 

    // 유효성 검사
	switch(this.elementType)
	{
		case TYPE_YEAR		: 
            var str = this.value;

            if(str != "")
            {
                if(str != "" && !(parseInt(str) >= 1900 && parseInt(str) <= 2100))
                {
                    window.alert("[" + str + "]은(는) 유효한 " + title + "이(가) 아닙니다.");
                    this.focus();
                    
                    this.value = str;
                    return;
                }

                this.value = str;
            }
            break;

        case TYPE_YEARMONTH	: 
            var sep = "-" // 구분자
            var str = this.value;

            if(str != "")
            {            
                var arr = new Array(); 

                arr = str.split(sep);

                if(arr.length != 2)
                {
                    window.alert(title + "은(는) [" + sep + "]로 구분해야 합니다.");
                    this.value = str;
                    return;
                }

                if(!ValidYear(arr[0]) || !ValidMonth(arr[1]))
                {
                    window.alert("[" + str + "]은(는) 유효한 " + title + "이(가) 아닙니다.");
                    this.focus();
                    this.value = str;

                    return;
                }

                if(arr[1].length == 1)
                {

                    arr[1] = "0" + arr[1];
                }

                this.value = arr[0] + sep + arr[1];
            }
            break;

		case TYPE_DATE		: 
            var sep = "-";
            var str = this.value;
 
            if(str != "")
            {
                var arr = new Array();
                arr = str.split(sep);

                if(arr.length != 3)
                {
                    window.alert(title + "은(는) [" + sep + "]로 구분해야 합니다.");
                    this.focus();
                    this.value = str;
                    return;
                }

                if(!ValidDate(arr[0], arr[1], arr[2]))
                {
                    window.alert("[" + str + "]은(는) 유효한 " + title + "이(가) 아닙니다.");
                    this.focus();
                    this.value = str;
                    return;
                }

                if(arr[1].length == 1)
                {

                    arr[1] = "0" + arr[1];
                }

                if(arr[2].length == 1)
                {

                    arr[2] = "0" + arr[2];
                }

                this.value = arr[0] + sep + arr[1] + sep + arr[2];
            }
            break;

		case TYPE_TIME		: 
            var sep = ":" // 구분자
            var str = this.value;

            if(str != "")
            {            
                var arr = new Array(); 

                arr = str.split(sep);

                if(arr.length != 2)
                {
                    window.alert(title + "은(는) [" + sep + "]로 구분해야 합니다.");
                    this.focus();
                    this.value = str;
                    return;
                }

                if(!ValidHour(arr[0]) || !ValidMinute(arr[1]))
                {
                    window.alert("[" + str + "]은(는) 유효한 " + title + "이(가) 아닙니다.");
                    this.focus();
                    this.value = str;

                    return;
                }

                if(arr[1].length == 1)
                {

                    arr[1] = "0" + arr[1];
                }

                this.value = arr[0] + sep + arr[1];
            }
            break;

		case TYPE_JUMIN		:
            var sep = "-";
            var str = this.value;

            if(str != "")
            {
                var arr = new Array(); 
                arr = str.split(sep);

                if(arr.length != 2)
                {
                    window.alert(title + "은(는) [" + sep + "]로 구분해야 합니다.");
                    this.focus();
                    this.value = str;
                    return;
                }

                if(!ValidSize(arr[0], 6, 6))
                {
                    window.alert(title + "의 앞자리는 " + 6 + "자로 입력하세요.");
                    this.focus();
                    this.value = str;
                    return;
                }

                if(!ValidSize(arr[1], 7, 7))
                {
                    window.alert(title + "의 뒷자리는 " + 7 + "자로 입력하세요.");
                    this.focus();
                    this.value = str;
                    return;
                }

                var year = (parseInt(arr[0].substring(0, 2)) < 5)?"20":"19";
                if(!ValidDate(year + arr[0].substring(0, 2), arr[0].substring(2, 4), arr[0].substring(4, 6)))
                {
                    window.alert(title + "의 생년월일이 정확하지 않습니다.");
                    this.focus();
                    this.value = str;
                    return;
                }

                var hap = 0;
                for(var i = 0; i < 6; i++)
                {
                    var temp = arr[0].charAt(i) *(i+2);
                    hap += temp;
                }

                if(!(arr[0] == "000000" && arr[1] == "0000000"))
                {
                    var n1 = arr[1].charAt(0);
                    var n2 = arr[1].charAt(1);
                    var n3 = arr[1].charAt(2);
                    var n4 = arr[1].charAt(3);
                    var n5 = arr[1].charAt(4);
                    var n6 = arr[1].charAt(5);
                    var n7 = arr[1].charAt(6);

                    hap += n1*8+n2*9+n3*2+n4*3+n5*4+n6*5;
                    hap %= 11;
                    hap = 11 - hap;
                    hap %= 10;

                    if(hap != n7)
                    {	
                        window.alert(title + "이(가) 유효하지 않습니다. 확인 후 다시 입력하세요.");
                        this.focus();
                        this.value = str;
                        return;
                    }
                }

                this.value = str;
            }
            break;

		case TYPE_EMAIL		: 
            //var sep = ":" // 구분자
            re = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i; 
            var str = this.value;

            if(str != "") {
            
                if(!re.test(str)) { 
                    window.alert("e-mail 주소가 유효하지 않습니다. 확인 후 다시 입력하세요.");
                    this.focus();
                    this.value = str;
                    return; 
                }  
            }
            break;
		case TYPE_NONE		: // TYPE_NONE의 경우 document 내의 모든 element가 해당되므로 validation 검사를 하지않는다.
            break;
	}

    if(this.getAttribute("blur"))
    {
        var fn  = eval(this.getAttribute("blur"));
    }
}

function notifyWonDomEvent()
{
    for(i = 0; i < document.forms.length; i++)
    {
        var form = document.forms[i];
        for(j = 0; j < form.elements.length; j++)
        {
            switch(form.elements[j].type)
            {
                // 내장된 키워드가 있을 경우 오른쪽 정렬, 영숫자만 입력이 가능하도록 설정한다.
                case "password"	:
                case "text"		:
                    if(form.elements[j].getAttribute("won") != null)
                    {
                        insertSeperatorByWon(form.elements[j], ","); 
                    }
                    break;
                default:
                    break;            
            }
        }
    }
}

function enableDomEvent()
{
    for(i = 0; i < document.forms.length; i++)
    {
        var form = document.forms[i];

        for(j = 0; j < form.elements.length; j++)
        {
            switch(form.elements[j].type)
            {
                // 내장된 키워드가 있을 경우 오른쪽 정렬, 영숫자만 입력이 가능하도록 설정한다.
                case "password"	:
                case "text"		:
                    if(form.elements[j].getAttribute("won") != null)
                    {
                        form.elements[j].elementType = TYPE_WON;
                        form.elements[j].style.textAlign = "right";
                        form.elements[j].style.imeMode = "disabled"; 
						insertSeperatorByWon(form.elements[j], ","); 
                    }
                    else if(form.elements[j].getAttribute("year") != null)
                    {
                        form.elements[j].elementType = TYPE_YEAR;
                        form.elements[j].style.imeMode = "disabled";
                    }
                    else if(form.elements[j].getAttribute("yearmonth") != null)
                    {
                        form.elements[j].elementType = TYPE_YEARMONTH;
                        form.elements[j].style.imeMode = "disabled";
                        insertSeperatorByYearMonth(form.elements[j], "-");
                    }
                    else if(form.elements[j].getAttribute("date") != null)
                    {
                        form.elements[j].elementType = TYPE_DATE;
                        form.elements[j].style.imeMode = "disabled";
                        insertSeperatorByDate(form.elements[j], "-");
                    }
                    else if(form.elements[j].getAttribute("time") != null)
                    {
                        form.elements[j].elementType = TYPE_TIME;
                        form.elements[j].style.imeMode = "disabled";
                        insertSeperatorByTime(form.elements[j], ":");
                    }
                    else if(form.elements[j].getAttribute("jumin") != null)
                    {
                        form.elements[j].elementType = TYPE_JUMIN;
                        form.elements[j].style.imeMode = "disabled";
                        insertSeperatorByJumin(form.elements[j], "-");
                    }
                    else if(form.elements[j].getAttribute("bizno") != null)
                    {
                        form.elements[j].elementType = TYPE_BIZNO;
                        form.elements[j].style.imeMode = "disabled";
                        insertSeperatorByBizno(form.elements[j], "-");
                    }
                    else if(form.elements[j].getAttribute("corpno") != null)
                    {
                        form.elements[j].elementType = TYPE_CORPNO;
                        form.elements[j].style.imeMode = "disabled";
                        insertSeperatorByCorpNo(form.elements[j], "-");
                    }
                    else if(form.elements[j].getAttribute("orgno") != null)
                    {
                        form.elements[j].elementType = TYPE_ORGNO;
                        form.elements[j].style.imeMode = "disabled";
                        insertSeperatorByOrgno(form.elements[j], "-");
                    }
                    else if(form.elements[j].getAttribute("zipcode") != null)
                    {
                        form.elements[j].elementType = TYPE_ZIPCODE;
                        form.elements[j].style.imeMode = "disabled";
                        insertSeperatorByZipcode(form.elements[j], "-");
                    }
                    else if(form.elements[j].getAttribute("kor") != null)
                    {
                        form.elements[j].elementType = TYPE_KOR;
                        form.elements[j].style.imeMode = "active";
                    }
                    else if(form.elements[j].getAttribute("eng") != null)
                    {
                        form.elements[j].elementType = TYPE_ENG;
                        form.elements[j].style.imeMode = "disabled";
                    }
                    else if(form.elements[j].getAttribute("num") != null)
                    {
                        form.elements[j].elementType = TYPE_NUM;
                        form.elements[j].style.textAlign = "right";
                        form.elements[j].style.imeMode = "disabled";
                    }
                    else if(form.elements[j].getAttribute("num2") != null)
                    {
                        form.elements[j].elementType = TYPE_NUM;
                        form.elements[j].style.textAlign = "left";
                        form.elements[j].style.imeMode = "disabled";
                    }
                    else if(form.elements[j].getAttribute("numcode") != null)
                    {
                        form.elements[j].elementType = TYPE_NUMCODE;
                        form.elements[j].style.imeMode = "disabled";
                    }
                    else if(form.elements[j].getAttribute("engcode") != null)
                    {
                        form.elements[j].elementType = TYPE_ENGCODE;
                        form.elements[j].style.imeMode = "disabled";
                    }
                    else if(form.elements[j].getAttribute("koreng") != null)
                    {
                        form.elements[j].elementType = TYPE_KORENG;
                        form.elements[j].style.imeMode = "active";
                    }
                    else if(form.elements[j].getAttribute("kornum") != null)
                    {
                        form.elements[j].elementType = TYPE_KORNUM;
                        form.elements[j].style.imeMode = "active";
                    }
                    else if(form.elements[j].getAttribute("engnum") != null)
                    {
                        form.elements[j].elementType = TYPE_ENGNUM;
                        form.elements[j].style.imeMode = "disabled";
                    }
                    else if(form.elements[j].getAttribute("email") != null)
                    {
                        form.elements[j].elementType = TYPE_EMAIL;
                        form.elements[j].style.imeMode = "disabled";
                    }
                    else if(form.elements[j].getAttribute("url") != null)
                    {
                        form.elements[j].elementType = TYPE_URL;
                        form.elements[j].style.imeMode = "inactive";
                    }
                    else if(form.elements[j].getAttribute("tel") != null)
                    {
                        form.elements[j].elementType = TYPE_TEL;
                        form.elements[j].style.imeMode = "disabled";
                    }
                    else if(form.elements[j].getAttribute("lowerengnum") != null)
                    {
                        form.elements[j].elementType = TYPE_LOWERENGNUM;
                        form.elements[j].style.imeMode = "disabled";
                    }
                    else
                    {
                        form.elements[j].elementType = TYPE_NONE;
                        form.elements[j].style.imeMode = "active";
                    }
 
                    //All Object 적용되 않고, 프로젝트 환경에 따라 별도의 Function적용이 가능하도록 if 문으로 처리함
	            	if(form.elements[j].onkeypress==undefined ||form.elements[j].onkeypress==null){
                    		form.elements[j].onkeypress = __onkeypress;
					}        
					if(form.elements[j].onkeyup==undefined ||form.elements[j].onkeyup==null){
							form.elements[j].onkeyup = __onkeyup;
					}
					if(form.elements[j].onkeydown==undefined ||form.elements[j].onkeydown==null){
							form.elements[j].onkeydown = __onkeydown;
					}
			//		if(form.elements[j].format==undefined ||form.elements[j].format==null){ 
			//				form.elements[j].format = __fomat;
			//		}
					if(form.elements[j].onfocus==undefined ||form.elements[j].onfocus==null){
							form.elements[j].onfocus = __onfocus;
					}

                    break;            

                default:
                    break;            
            }
        }
    }
}

/**
function	amtLimit
	param	:	ctl		(control)
				limit	(limit value)
				msg		(message)			
				sValue	(default value)		"3,000"
				isMsg	(alert message use)	true/false
	date	:	2009.3.20
	updater	:	khkim
*/
function amtLimit(ctl, limit, msg, sValue, isMsg){

	var nAmt = 0;
	if(isMsg == null){	//null 체크 추가
		isMsg = true;
	}
	
	if(sValue == null){	//null 체크 추가
		sValue = "0";
	}

	if(ctl.value == "") ctl.value = "0";

	nAmt = parseInt(del_comma(ctl), 10);
	nAmt = nAmt % limit;
	if (nAmt > 0){
		if(isMsg){
			alert(msg);
		}
		ctl.value=sValue;
		ctl.focus();
		return false;
	}
	return true;
}

function insertSeperatorByWon(obj, sep)
{
	if(!isObject(obj))
		return false;

	var str = trimAll(obj.value);
	str = removeString(str, sep);

    var signFlag = false;
    if(str.indexOf("-") != -1)
    {
    	str = removeString(str, "-");
        signFlag = true;
    }

    var size = 3;
	var strMain = "";
    var strTail = "";
	var strTemp = "";
	var strSep = sep;

    if(str.indexOf(".") != -1)
    {
        strMain = str.substring(0, str.indexOf("."));
        strTail = str.substring(str.indexOf("."));
    }
    else
    {
        strMain = str;
    }

    if(str.indexOf(".") == -1) // 소수점이 없을경우 -> ,(Comma)로 분할한다
    {
        var strMainLength  = strMain.length;

        if(strMainLength > size)
        {
            var divLength = parseInt((strMainLength)/ size);
            var remLength = parseInt((strMainLength)% size);

            if (remLength > 0)
            {
                strTemp = strMain.substring(0, remLength) + strSep;
            }

            for (var i=0; i < divLength; i++)
            {
                if (i == 0)
                {
                    strTemp = strTemp + strMain.substring(remLength, remLength + size);
                }
                else
                {
                    strTemp = strTemp + strSep + strMain.substring(remLength + (size * i), remLength + (size * i) + size);
                }
            }
        }
        else
        {
            strTemp = strMain;
        }

        obj.value = (signFlag?"-":"") + strTemp + strTail;
    }
    else // 소수점이 있을 경우
    {
        var strMainLength = strMain.length;
        if(strMainLength <= size) // 소수점이 있고 소수점이상이 3자리를 초과하지 않을경우 -> 소수점이상 그대로 복사
        {
            strTemp = strMain;
        }
        else // 소수점이 있고 소수점이상이 3자리를 초과할 경우 -> 소수점이상 ,(Comma)로 분할한다.
        {
            var divLength = parseInt((strMainLength)/ size);
            var remLength = parseInt((strMainLength)% size);

            if (remLength > 0)
            {
                strTemp = strMain.substring(0, remLength) + strSep;
            }

            for (var i = 0; i < divLength; i++)
            {
                if (i == 0)
                {
                    strTemp = strTemp + strMain.substring(remLength, remLength + size);
                }
                else
                {
                    strTemp = strTemp + strSep + strMain.substring(remLength + (size * i), remLength + (size * i) + size);
                }
            }
        }

        obj.value = (signFlag?"-":"") + strTemp + strTail;
    }
}

function insertSeperatorByYearMonth(obj, sep)
{
	if(!isObject(obj))
		return false;

	var str = trimAll(obj.value);
	str = removeString(str, sep);

	if(str.length == 4)
	{
		obj.value = str.substring(0, 4);
	}
	else if(str.length > 4)
	{
		obj.value = str.substring(0, 4) + sep + str.substring(4, (str.length > 6)?6:str.length);
	}
}

function insertSeperatorBySsn(obj, sep)
{
	if(!isObject(obj))
		return false;

	var str = trimAll(obj.value);
	str = removeString(str, sep);

	if(str.length == 6)
	{
		obj.value =  str.substring(0, 6);
	}
	else if(str.length > 6)
	{
		obj.value =  str.substring(0, 6) + sep + str.substring(6, (str.length > 13)?13:str.length);
	}
}

function insertSeperatorByDate(obj, sep)
{
	if(!isObject(obj))
		return false;

	var str = trimAll(obj.value);
	str = removeString(str, sep);

	if(str.length == 4)
	{
		obj.value = str.substring(0, 4);
	}
	else if(str.length > 4 && str.length < 6)
	{
		obj.value = str.substring(0, 4) + sep + str.substring(4, (str.length>6)?6:str.length);
	}
	else if(str.length == 6)
	{
		obj.value =  str.substring(0, 4) + sep + str.substring(4, 6);
	}
    else if(str.length > 6)
	{
		obj.value =  str.substring(0, 4) + sep + str.substring(4, 6) + sep + str.substring(6, (str.length > 8)?8:str.length);
	}
}

function insertSeperatorByTime(obj, sep)
{
	if(!isObject(obj))
		return false;

	var str = trimAll(obj.value);
	str = removeString(str, sep);

	if(str.length == 2)
	{
		obj.value = str.substring(0, 2);
	}
	else if(str.length > 2)
	{
		obj.value = str.substring(0, 2) + sep + str.substring(2, (str.length > 4)?4:str.length);
	}
}

function insertSeperatorByDay(obj, sep)
{
	return insertSeperatorByDate(obj, sep);
}

function insertSeperatorByJumin(obj, sep)
{
	return insertSeperatorBySsn(obj, sep);
}

function insertSeperatorByCorpNo(obj, sep)
{
	return insertSeperatorBySsn(obj, sep);
}

function insertSeperatorByBrn(obj, sep)
{
	if(!isObject(obj))
		return false;

	var str = trimAll(obj.value);
	str = removeString(str, sep);

	if(str.length == 3)
	{
		obj.value =  str.substring(0, 3);
	}
	else if(str.length > 3 && str.length < 5)
	{
		obj.value =  str.substring(0, 3) + sep + str.substring(3, (str.length>5)?5:str.length);
	}
	else if(str.length == 5)
	{
		obj.value =  str.substring(0, 3) + sep + str.substring(3, 5);
	}
    else if(str.length > 5)
	{
		obj.value =  str.substring(0, 3) + sep + str.substring(3, 5) + sep + str.substring(5, (str.length > 10)?10:str.length);
	}
}

function insertSeperatorByBizno(obj, sep)
{
	return insertSeperatorByBrn(obj, sep);
}

function insertSeperatorByOrgno(obj, sep)
{
	if(!isObject(obj))
		return false;

	var str = trimAll(obj.value);
	str = removeString(str, sep);

	if(str.length == 2)
	{
		obj.value =  str.substring(0, 2);
	}
	if(str.length > 2)
	{
		obj.value =  str.substring(0, 2) + sep + str.substring(2, (str.length>8)?8:str.length);
	}
}

function insertSeperatorByZipcode(obj, sep)
{
	if(!isObject(obj))
		return false;

	var str = trimAll(obj.value);
	str = removeString(str, sep);

	if(str.length == 3)
	{
		obj.value =  str.substring(0, 3);
	}
	else if(str.length > 3)
	{
		obj.value =  str.substring(0, 3) + sep + str.substring(3, (str.length > 6)?6:str.length);
	}
}


/**
 * A-2. Input Object가 실제로 페이지상에 존재하는 HTMLObject인지를 검사한다.
 *
 * @param obj	Object ID
 * @return
 */
function isObject(obj)
{
	if(typeof(obj) != "object")
	{
//		window.alert("Object가 존재하지 않습니다. Object의 철자를 확인하세요.");
		return false;
	}

	return true;
}

/**
 * A-3. Input Object가 Array 형태인지 검사한다.
 *
 * @param obj	Object ID
 * @return
 */
function isArray(obj)
{
	if((typeof(obj) != "object") || (typeof(obj[0]) != "object"))
	{
//		window.alert("element(checkbox)가 Array가 아닙니다.");
		return false;
	}

	return true;
}



/**
 * B-10. Input 문자열의 지정문자를 제거한다.
 *
 * @param str	문자열
 * @return
 */
function removeString(str, delStr)
{
	var oldVal = str + "";
	var newVal = "";


	var n = oldVal.length;

	for(var i=0; i<n; i++)
	{
		if(oldVal.charAt(i) == delStr)
		{
			continue;
		}
		else
		{
			newVal += oldVal.charAt(i);
		}
	}
	
	return newVal;
}