﻿/* =======================================================
 텍스트박스 숫자처리 "," 포함
 소숫점까지 찍을수 있습니다. 소숫점은 두자리 까지만
 =======================================================
 <사용방법>
 txtCost.Style["ime-mode"]				= "disabled";
 txtCost.Style["text-align"]			= "right";
 txtCost.Attributes["onkeydown"]		= "IsNumKey()";  // fnc_keyIsNum('point')일경우에는 소수점까지 체크
 txtCost.Attributes["onkeyup"]			= "setMoneyKeyup()"; // fnc_onKeyManage('point')일경우에는 소수점까지 체크
 txtCost.Attributes["onFocus"]			= "setNumberFocus()";
 txtCost.Attributes["MaxLength"]			= "11"; // 조정가능
======================================================= */


// 입력키의 숫자여부
function IsNumKey(types) {
    var e = event.keyCode;

    if (types == null) {
        if ((e >= 48 && e <= 57) || (e >= 96 && e <= 105) || e == 8 || e == 9 || e == 46 || e == 37 || e == 39 || e == 109 || e == 189 || e == 35 || e == 36)
            event.returnValue = true;
        else
            event.returnValue = false;
    }
    else {
        if ((e >= 48 && e <= 57) || (e >= 96 && e <= 105) || e == 8 || e == 9 || e == 46 || e == 37 || e == 39 || e == 109 || e == 189 || e == 190 || e == 35 || e == 36)
            event.returnValue = true;
        else
            event.returnValue = false;
    }
}

//  통화만 입력받기 (자동으로 #,##0 포맷으로 바꾸기)
function setMoneyKeyup(types) {
    var e = event.keyCode;

    if (e != 9) {
        var Obj = event.srcElement;
        if (e == 37 || e == 39) return;

        removeZero(Obj);

        if (types != null)
            Obj.value = addComma(Obj.value, "point");
        else
            Obj.value = addComma(Obj.value);
    }
}

//  숫자만 입력받기
function setNumberKeyup() {
    var e = event.keyCode;

    if (e != 9) {
        var Obj = event.srcElement;
        if (e == 37 || e == 39) return;

        removeZero(Obj);
    }
}

//  숫자만 입력받기 (주민번호)
function setLicenseKeyup() {
    var e = event.keyCode;
    var Obj = event.srcElement;

    if (e != 9) {
        var Obj = event.srcElement;
        if (e == 37 || e == 39) return;

        //removeZero(Obj);
        
        if (Obj.value.length==Obj.maxLength && Obj.attributes['NEXT_FOCUS']!= null) 
            document.getElementById(Obj.attributes['NEXT_FOCUS'].value).focus();
        
    }
}

function setNumberFocus() {
    var Obj = event.srcElement;
    Obj.select();
}

function removeZero() {
    var Obj = event.srcElement;
    var oVal = Obj.value.replace(/,/g, '');
    var cut_idx = 0;
    var start_idx = 1;

    if (oVal.charAt(0) == '-') start_idx = 2;

    if (oVal.length > start_idx) {
        for (i = start_idx - 1; i < oVal.length - 1; i++) {
            if (oVal.charAt(i) == '0') cut_idx = i + 1;
            else break;
        }

        oVal = oVal.substring(cut_idx);
        Obj.value = oVal;
    }
}

function addComma(num, types) {
    var num_amount = num;
    var fmt_amount = '';
    var minus_flag = '';
    var num_point = '';
    var point_flag = '';

    num_amount = num_amount.replace(/,/g, '');

    if (num_amount.charAt(0) == '-') {
        minus_flag = 'Y';
        num_amount = num_amount.substring(1);
    }

    var num_split = num_amount.split(".");

    if (types != null) {
        if (num_split.length == 2) {
            num_amount = num_split[0];
            num_point = num_split[1];
            point_flag = 'Y';
            if (num_point.length > 2) num_point = num_point.substring(0, 2);
        }
    }

    if (num_amount.length > 3) {
        var str1 = num_amount.substring(0, num_amount.length % 3);
        var str2 = num_amount.substring(num_amount.length % 3, num_amount.length);
        if (str1.length != 0) str1 += ',';

        fmt_amount += str1;

        for (i = 0; i < str2.length; i++) {
            if (i % 3 == 0 && i != 0) fmt_amount += ',';
            fmt_amount += str2.charAt(i);
        }
    }
    else {
        fmt_amount = num_amount;
    }

    if (minus_flag == 'Y') fmt_amount = '-' + fmt_amount;
    if (point_flag == 'Y') fmt_amount = fmt_amount + "." + num_point;

    return fmt_amount;
}

/* =======================================================
  텍스트박스 숫자처리 "," 포함 END
 ======================================================= */


// 공백체크
function IsEmpty(oValue, sMsg) {
    var tmp ="";
    
    if (typeof(oValue) == "string")
        tmp = oValue.replace(/\s/g, "");
    else if (typeof (oValue) == "object" || typeof (oValue) == "undefined")
        tmp = oValue.value.replace(/\s/g, "");
        
    if (tmp == "") {
        if (sMsg != null && sMsg != "") alert(sMsg);
        return true;
    }
    else {
        return false;
    }
}


// 공백체크
function IsEmptyFocus(oValue, sMsg) {
    var tmp ="";
    
    if (typeof(oValue) == "string")
        tmp = oValue.replace(/\s/g, "");
    else if (typeof (oValue) == "object" || typeof (oValue) == "undefined")
        tmp = oValue.value.replace(/\s/g, "");
        
    if (tmp == "") {
        if (sMsg != null && sMsg != "") alert(sMsg);
        if (typeof (oValue) == "object") oValue.focus();
        return true;
    }
    else {
        return false;
    }
}

// 숫자여부 체크 (,.- 모두 사용가능)
function IsNumber(oValue, sMsg) {

    var reg = new RegExp(/^(\d|-)?(\d|,)*\.?\d*$/);
    var tmp;

    if (typeof (oValue) == "string")
        tmp = oValue.replace(/\s/g, "");
    else if (typeof (oValue) == "object" || typeof (oValue) == "undefined")
        tmp = oValue.value.replace(/\s/g, "");
    
    if (reg.test(tmp))
        return true;
    else {
        if (sMsg != null && sMsg != "") alert(sMsg);
        return false;
    }
}

// 라디오버튼리스트 체크여부
function IsCheckedRBL(oTag, sMsg) {

    if (oTag != null) {
        var rbl = oTag.getElementsByTagName("INPUT");
        var chk = false;
        for (var i = 0; i < rbl.length; i++) {
            if (rbl(i).type == "radio") {
                if (rbl(i).checked) { chk = true; break; }
            }
        }
        if (!chk) {
            alert(sMsg);
            return false;
        }
    }
    return true;
}

// 드롭다운 선택여부
function IsCheckedDDL(oTag, sMsg) {
    
    if (oTag.selectedIndex < 0 || oTag.options[oTag.selectedIndex].value == "" || oTag.options[oTag.selectedIndex].value == "0") {
        if (sMsg!=null && sMsg!="") alert(sMsg);
        oTag.focus();
        return false;
    }
    return true;
}

// 같은지 체크
function IsEqual(oValue1, oValue2, sMsg) {
    var tmp1 = "", tmp2 = "";

    if (typeof (oValue1) == "string")
        tmp1 = oValue1.replace(/\s/g, "");
    else if (typeof (oValue1) == "object" || typeof (oValue1) == "undefined")
        tmp1 = oValue1.value.replace(/\s/g, "");

    if (typeof (oValue2) == "string")
        tmp2 = oValue2.replace(/\s/g, "");
    else if (typeof (oValue2) == "object" || typeof (oValue2) == "undefined")
        tmp2 = oValue2.value.replace(/\s/g, "");
    
    if (tmp1 != tmp2) {
        if (sMsg != null && sMsg != "") alert(sMsg);
        return false;
    }
    else {
        return true;
    }
}

// 문자열 길이넘는지 체크
function IsMaxLength(oValue, nLength, sMsg) {
    var tmp;

    if (typeof (oValue) == "string")
        tmp = oValue.replace(/\s/g, "");
    else if (typeof (oValue) == "object" || typeof (oValue) == "undefined")
        tmp = oValue.value.replace(/\s/g, "");
    
    if (tmp.length > nLength) {
        if (sMsg != null && sMsg != "") alert(sMsg);
        return false;
    }
    else {
        return true;
    }
}

// 문자열 길이가 해당바이트에 넘는지 체크 (영문은 1byte, 한글은 2byte)
function IsMaxByte(oValue, nByte, sMsg) {
    var tmp;

    if (typeof (oValue) == "string")
        tmp = oValue.replace(/\s/g, "");
    else if (typeof (oValue) == "object" || typeof (oValue) == "undefined")
        tmp = oValue.value.replace(/\s/g, "");

    var cnt_byte = 0;
    var sub_cnt = 0;
    var chk_letter = '';
    var lmt_str = '';

    for (var i = 0; i < tmp.length; i++) {
        chk_letter = tmp.charAt(i);

        if (escape(chk_letter).length > 4) {
            cnt_byte += 2;
        }
        else {
            cnt_byte++;
        }
    }
    if (cnt_byte > nByte) {
        if (sMsg != null && sMsg != "") alert(sMsg);
        return false;
    }
    else {
        return true;
    }
}

// 문자열 길이 같은지 체크
function IsEqualLength(oValue, nLength, sMsg) {
    var tmp;

    if (typeof (oValue) == "string")
        tmp = oValue.replace(/\s/g, "");
    else if (typeof (oValue) == "object" || typeof (oValue) == "undefined")
        tmp = oValue.value.replace(/\s/g, "");
    
    if (tmp.length != nLength) {
        if (sMsg != null && sMsg != "") alert(sMsg);
        return false;
    }
    else {
        return true;
    }
}

// 메일주소 체크
// oValue1 : 메일아이디부분 (ex, myid) , oValue2 : 메일도메인부분 (ex, naver.com) , isNull : 메일 빈값허용 boolean
function IsMail(oValue1, oValue2, isNull, sMsg) {
    var tmp1,tmp2;
    
    if (typeof (oValue1) == "string")
        tmp1 = oValue1.replace(/\s/g, "");
    else if (typeof (oValue1) == "object" || typeof (oValue1) == "undefined")
        tmp1 = oValue1.value.replace(/\s/g, "");

    if (typeof (oValue2) == "string")
        tmp2 = oValue2.replace(/\s/g, "");
    else if (typeof (oValue2) == "object" || typeof (oValue2) == "undefined")
        tmp2 = oValue2.value.replace(/\s/g, "");
    
    if (!isNull) {
        if (IsEmpty(tmp1, null) || IsEmpty(tmp2, null)){
            if (sMsg != null && sMsg != "") alert(sMsg);
            return false;
        }
    }
    var r = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");

    if(!r.test(tmp1+"@"+tmp2)){
        if (sMsg != null && sMsg != "") alert(sMsg);
        return false;
    }
    else {
        return true;
    }
}

// 핸드폰 체크
// oValue1 : 핸드폰국번 , oValue2 : 두번째자리 , oValue3 : 세번째자리, isNull : 빈값허용 boolean
function IsMobile(oValue1, oValue2, oValue3, isNull, sMsg) {
    var tmp1, tmp2, tmp3;
    
    if (typeof (oValue1) == "string")
        tmp1 = oValue1.replace(/\s/g, "");
    else if (typeof (oValue1) == "object" || typeof (oValue1) == "undefined"){
        if (oValue1.tagName == "SELECT")
            tmp1 = oValue1.options[oValue1.selectedIndex].value.replace(/\s/g, "");
        else
            tmp1 = oValue1.value.replace(/\s/g, "");
    }

    if (typeof (oValue2) == "string")
        tmp2 = oValue2.replace(/\s/g, "");
    else if (typeof (oValue2) == "object" || typeof (oValue2) == "undefined")
        tmp2 = oValue2.value.replace(/\s/g, "");

    if (typeof (oValue3) == "string")
        tmp3 = oValue2.replace(/\s/g, "");
    else if (typeof (oValue3) == "object" || typeof (oValue3) == "undefined")
        tmp3 = oValue3.value.replace(/\s/g, "");
    
    if (!isNull) {
        if (IsEmpty(tmp1, null) || IsEmpty(tmp2, null)|| IsEmpty(tmp3, null)){
            if (sMsg != null && sMsg != "") alert(sMsg);
            return false;
        }
    }
    var r = /^\d{3}-\d{3,4}-\d{4}$/;

    if(!r.test(tmp1+"-"+tmp2+"-"+tmp3)){
        if (sMsg != null && sMsg != "") alert(sMsg);
        return false;
    }
    else {
        return true;
    }
}

// 전화번호 체크
// oValue1 : 전화국번 , oValue2 : 두번째자리 , oValue3 : 세번째자리, isNull : 빈값허용 boolean
function IsPhone(oValue1, oValue2, oValue3, isNull, sMsg) {
    var tmp1, tmp2, tmp3;
    
    if (typeof (oValue1) == "string")
        tmp1 = oValue1.replace(/\s/g, "");
    else if (typeof (oValue1) == "object" || typeof (oValue1) == "undefined"){
        if (oValue1.tagName == "SELECT")
            tmp1 = oValue1.options[oValue1.selectedIndex].value.replace(/\s/g, "");
        else
            tmp1 = oValue1.value.replace(/\s/g, "");
    }

    if (typeof (oValue2) == "string")
        tmp2 = oValue2.replace(/\s/g, "");
    else if (typeof (oValue2) == "object" || typeof (oValue2) == "undefined")
        tmp2 = oValue2.value.replace(/\s/g, "");

    if (typeof (oValue3) == "string")
        tmp3 = oValue2.replace(/\s/g, "");
    else if (typeof (oValue3) == "object" || typeof (oValue3) == "undefined")
        tmp3 = oValue3.value.replace(/\s/g, "");
    
    if (!isNull) {
        if (IsEmpty(tmp1, null) || IsEmpty(tmp2, null)|| IsEmpty(tmp3, null)){
            if (sMsg != null && sMsg != "") alert(sMsg);
            return false;
        }
    }
    var r = /^\d{2,3}-\d{3,4}-\d{4}$/;

    if(!r.test(tmp1+"-"+tmp2+"-"+tmp3)){
        if (sMsg != null && sMsg != "") alert(sMsg);
        return false;
    }
    else {
        return true;
    }
}

// 아이디체크 ... 영문과 숫자만 사용가능/ nMin ~ nMax 자 (영문으로 시작해야 함)
function IsUserId(oValue, nMin, nMax, sMsg) {
    var tmp;

    if (typeof (oValue) == "string")
        tmp = oValue.replace(/\s/g, "");
    else if (typeof (oValue) == "object" || typeof (oValue) == "undefined")
        tmp = oValue.value.replace(/\s/g, "");

    var r = new RegExp("^[A-Za-z][A-Za-z0-9]{"+String(nMin-1)+","+String(nMax)+"}$");  // 영문으로 시작하는 ..

    if (!r.test(tmp)) {
        if (sMsg != null && sMsg != "") alert(sMsg);
        return false;
    }
    else {
        return true;
    }
}


// 아이디체크 ... 영문,숫자,한글 사용가능/ nMin ~ nMax 자 
function IsUserHanId(oValue, nMin, nMax, sMsg) {
    var tmp;

    if (typeof (oValue) == "string")
        tmp = oValue.replace(/\s/g, "");
    else if (typeof (oValue) == "object" || typeof (oValue) == "undefined")
        tmp = oValue.value.replace(/\s/g, "");

    var r = new RegExp("^[A-Za-z0-9가-힣]{" + String(nMin) + "," + String(nMax) + "}$");

    if (!r.test(tmp)) {
        if (sMsg != null && sMsg != "") alert(sMsg);
        return false;
    }
    else {
        return true;
    }
}

// 비밀번호체크 ..영문,숫자,특수문자  사용가능/ nMin ~ nMax 자 
function IsUserPw(oValue, nMin, nMax, sMsg) {
    var tmp;

    if (typeof (oValue) == "string")
        tmp = oValue.replace(/\s/g, "");
    else if (typeof (oValue) == "object" || typeof (oValue) == "undefined")
        tmp = oValue.value.replace(/\s/g, "");

    var r = new RegExp("^[A-Za-z0-9`\\-=\\\\\\[\\];',\\./~!@#\\$%\\^&\\*\\(\\)_\\+|\\{\\}:\"<>\\?]{"+String(nMin)+","+String(nMax)+"}$");

     if (!r.test(tmp)) {
        if (sMsg != null && sMsg != "") alert(sMsg);
        return false;
    }
    else {
        return true;
    }
}

// 나이계산
function getAgeFunc(idno1_OBJ, idno2_OBJ) {

	var today     = new Date();
	var currday   = today.getDate(); 
	var currmonth = today.getMonth() + 1; 
	var curryear  = today.getFullYear().toString(); 
	var sRIDFirst = idno1_OBJ.value;
	var sRIDLast  = idno2_OBJ.value;

	var yy = parseInt(sRIDFirst.substring(0,2), 10);
	var mm = parseInt(sRIDFirst.substring(2,4), 10);
	var dd = parseInt(sRIDFirst.substring(4,6), 10);
	var s  = sRIDLast.substring(0,1);
	
	if (s == 3 || s == 4 ) {
		yy += 2000;
	} 
	else {
		yy += 1900;
	}
	
	//월,일 계산
	if ( (currday - dd) < 0 ) {
		currmonth--;
	}
	if ( (currmonth - mm) < 0 ) {
		curryear--;
	}

	return (curryear - yy);
}

// 재외국인 번호 체크
function checkFgnNo(fgnno, msg) {
	var sum=0;
	var odd=0;
	buf = new Array(13);

	for(i=0; i<13; i++) { buf[i]=parseInt(fgnno.charAt(i)); }

	odd = buf[7]*10 + buf[8];
	if(odd%2 != 0) {
		alert(msg);
		return false; 
	}
	if( (buf[11]!=6) && (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9) ) {
		alert(msg);
		return false;
	}

	multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
	for(i=0, sum=0; i<12; i++) { sum += (buf[i] *= multipliers[i]); }

	sum = 11 - (sum%11);
	if(sum >= 10) { sum -= 10; }
	sum += 2;
	if(sum >= 10) { sum -= 10; }
	if(sum != buf[12]) {
		alert(msg);
		return false 
	}
	return true;
}

// 주민번호 체크
function checkJuminNo(jumin1, jumin2, msg) {
	if(jumin1=="" || jumin1==null || jumin1.length!=6) {
		alert(msg);
		return false;
	}
	else if(jumin2=="" || jumin2==null || jumin2.length!=7) {
		alert(msg);
		return false;
	}

	var yy     = jumin1.substr(0,2); // 년도
	var mm     = jumin1.substr(2,2); // 월
	var dd     = jumin1.substr(4,2); // 일
	var genda  = jumin2.substr(0,1); // 성별
	var msg, ss, cc;

	// 숫자가 아닌 것을 입력한 경우
	if (!IsNumber(jumin1, msg)) {
		return false;
	}
	// 길이가 6이 아닌 경우
	if (jumin1.length != 6) {
		alert(msg);
		return false;
	}
	// 첫번째 자료에서 연월일(YYMMDD) 형식 중 기본 구성 검사
	if (yy < "00" || yy > "99" ||
		mm < "01" || mm > "12" ||
		dd < "01" || dd > "31") {
		alert(msg);
		return false;
	}
	// 숫자가 아닌 것을 입력한 경우
	if (!IsNumber(jumin2, msg)) {
		return false;
	}
	// 길이가 7이 아닌 경우
	if (jumin2.length != 7) {
		alert(msg);
		return false;
	}
	// 성별부분이 1 ~ 4 가 아닌 경우
	if (genda < "1" || genda > "4") {
		alert(msg);
		return false;
	}
	// 연도 계산 - 1 또는 2: 1900년대, 3 또는 4: 2000년대
	cc = (genda == "1" || genda == "2") ? "19" : "20";
	// 첫번째 자료에서 연월일(YYMMDD) 형식 중 날짜 형식 검사
	if (isYYYYMMDD(parseInt(cc+yy), parseInt(mm), parseInt(dd)) == false) {
		alert(msg);
		return false;
	}
	// Check Digit 검사
	if (!isSSN(jumin1, jumin2)) {
		alert(msg);
		return false;
	}
	return true;
}

// 사업자등록번호 체크
function checkBusiNo(vencod, msg) {
	var sum = 0;
	var getlist =new Array(10);
	var chkvalue =new Array("1","3","7","1","3","7","1","3","5");
	for(var i=0; i<10; i++) { getlist[i] = vencod.substring(i, i+1); }
	for(var i=0; i<9; i++) { sum += getlist[i]*chkvalue[i]; }
	sum = sum + parseInt((getlist[8]*5)/10);
	sidliy = sum % 10;
	sidchk = 0;
	if(sidliy != 0) { sidchk = 10 - sidliy; }
	else { sidchk = 0; }
	if(sidchk != getlist[9]) {
		alert(msg);
		return false; 
	}
	return true;
}

function isYYYYMMDD(y, m, d) {
	switch (m) {
	case 2: // 2월의 경우
		if (d > 29) return false;
		if (d == 29) {
			// 2월 29의 경우 당해가 윤년인지를 확인
			if ((y % 4 != 0) || (y % 100 == 0) && (y % 400 != 0))
				return false;
		}
		break;

	case 4: // 작은 달의 경우
	case 6:
	case 9:
	case 11:
		if (d == 31) return false;
	}

	// 큰 달의 경우
	return true;
}

function isSSN(s1, s2) {
	n = 2;
	sum = 0;

	for (i=0; i<s1.length; i++)
		sum += parseInt(s1.substr(i, 1)) * n++;
	for (i=0; i<s2.length-1; i++) {
		sum += parseInt(s2.substr(i, 1)) * n++;
		if (n == 10) n = 2;
	}

	c = 11 - sum % 11;
	if (c == 11) c = 1;
	if (c == 10) c = 0;
	if (c != parseInt(s2.substr(6, 1))) return false;
	else return true;
}


// 통화형(#,##0) -> 숫자형으로 반환
function convertInt(oValue) {
    var tmp = "";
    
    if (typeof (oValue) == "string")
        tmp = oValue.replace(/,/g, "");
    else if (typeof (oValue) == "object" || typeof (oValue) == "undefined")
        tmp = oValue.value.replace(/,/g, "");

    return eval(tmp);
}