//  입력/수정/삭제시 주로 사용되는 함수

//  blnk()           - 공백필드(입력이 없는 경우) 검사
//  blank1()         - 공백필드(스페이스포함)검사
//  special()        - 특수문자(공백포함)검사
//  notSelected()    - 콤보박스 선택이 없는 경우 검사
//  numberkeyin()    - 숫자만 입력가능 검사
//  msg_del()        - 삭제확인 메시지후 삭제 (form명 : del_ok)
//  keypress()       - Enter키 입력 체크
//  textareaLen()    - textarea에 입력 받은 내용의 길이를 체크하여 메시지 처리(100byte)
//  수정일자 : 2008년 2월 4일 작성자 :

//  floatCheck()     - string이 실수형인지 체크
//  numberCheck()    - string이 숫자인지 체크
//  numbBarCheck()   - string이 숫자 혹은 '-'인지 체크
//  strLenB()        - 문자열의 Byte수를 센다
//  splitLen()       - 문자열을 Byte수만큼 자른다
//  rrn()            - 주민등록번호가 맞는지 체크
//  texttrim()       - 문자열 트림
//  datetrim()       - date형식 '-' 트림

// 공백검사
function blank(field, name) {
    var val = field.value;
    if (texttrim(val) == "") {
        alert(name + "를(을) 입력 하세요.")
        field.focus();
        return false;
    }
    else
        return true;
}

function blank2(field, name) {
    var val = field.value;
    if (texttrim(val) == "") {
        alert(name + "를(을) 입력 하세요.")
        return false;
    }
    else
        return true;
}

function special(field) {

    var val = field.value;
    var special = '"\'/';
    for (var i = 0; i < field.value.length; i++)
    {
        ch = field.value.charAt(i);

        for (var j = 0; j < special.length; j++) {
            if (ch == special.charAt(j)) {
                //alert("특수 문자는 안됩니다.");
                field.value = "";
                field.focus();
                return false;
            }
        }
    }
    return true;
}

// 특수문자 입력 check
function specialNotBlank(field) {

    var val = field.value;
    var special = '`~!@#$%^&*()-_=+|\\{}[];:"\'<>,.?\/';
    for (var i = 0; i < field.value.length; i++)
    {
        ch = field.value.charAt(i);

        for (var j = 0; j < special.length; j++) {
            if (ch == special.charAt(j)) {
                //alert("특수 문자는 안됩니다.");
                field.value = "";
                field.focus();
                return false;
            }
        }
    }
    return true;
}

// 특수문자 & 한글
function specialAndKorean(field) {

    var val = field.value;
    var special = '`~!@#$%^&*()-_=+|\\{}[];:"\'<>,.?\/';
    for (var i = 0; i < field.value.length; i++)
    {
        ch = field.value.charAt(i);

        if (((ch >= "ㅏ") && (ch <= "히")) || ((ch >= "ㄱ") && (ch <= "ㅎ")))
        {//모든 한글을 확인하는 구문. 한글이 아니라면 alert창 띄우기.
            alert("한글은 안됩니다.");
            field.value = "";
            field.focus();
            return;
        }

        for (var j = 0; j < special.length; j++) {
            if (ch == special.charAt(j)) {
                alert("특수 문자는 안됩니다.");
                field.value = "";
                field.focus();
                return false;
            }
        }
    }
    return true;
}


// 한글 check
function nameCheck(field) {

    var val = field.value;
    var special = ' ';
    for (var i = 0; i < field.value.length; i++)
    {
        ch = field.value.charAt(i);

        if (((ch >= "ㅏ") && (ch <= "히")) || ((ch >= "ㄱ") && (ch <= "ㅎ")))
        {//모든 한글을 확인하는 구문. 한글이 아니라면 alert창 띄우기.
            return false;
        }
        for (var j = 0; j < special.length; j++) {
            if (ch == special.charAt(j)) {
                return false;
            }
        }
    }
    return true;
}

// 한글이 아니면 check
function _nameCheck(field) {

    var val = field.value;
    var special = ' ';
    for (var i = 0; i < field.value.length; i++)
    {
        ch = field.value.charAt(i);

        if (((ch < "ㅏ") || (ch > "히")) && ((ch < "ㄱ") || (ch > "ㅎ")))//한글이 아니구문을 확인하는 구문.
        {
            return false;
        }
        for (var j = 0; j < special.length; j++) {
            if (ch == special.charAt(j)) {
                return false;
            }
        }
    }
    return true;
}

function specialNotBlank(field) {

    var val = field.value;
    var special = '`~!@#$%^&*()-_=+|\\{}[];:"\'<>,.?\/';
    for (var i = 0; i < field.value.length; i++)
    {
        ch = field.value.charAt(i);

        if (((ch >= "ㅏ") && (ch <= "히")) || ((ch >= "ㄱ") && (ch <= "ㅎ")))
        {//모든 한글을 확인하는 구문. 한글이 아니라면 alert창 띄우기.
            alert("한글은 안됩니다.");
            field.value = "";
            field.focus();
            return;
        }

        for (var j = 0; j < special.length; j++) {
            if (ch == special.charAt(j)) {
                alert("특수 문자는 안됩니다.");
                field.value = "";
                field.focus();
                return false;
            }
        }
    }
    return true;
}
//문자열 트림
function texttrim(str) {
    var i, rtn;

    for (i = 0; i < str.length; i++) {
        if ('\r\n\t '.indexOf(str.charAt(i)) == -1) {
            break;
        }
    }
    rtn = str.substring(i);
    for (i = rtn.length - 1; i >= 0; i--) {
        if ('\r\n\t '.indexOf(rtn.charAt(i)) == -1) {
            break;
        }
    }
    rtn = rtn.substring(0, i + 1);
    return rtn;
}

// 콤보박스 선택 검사.
function notSelected(field, name)
{
    if (field.selectedIndex <= 0)
    {
        alert(name + "(을)를 선택해 주십시오!");
        return false;
    }
    else
        return true;
}

// 공백, space 입력 field check
function blank1(Field, name) {

    var ok = true;
    var val = Field.value;

    var zero = 0;
    for (var i = 0; i < val.length; i++)
    {
        var AChar = val.charAt(i);

        if (AChar == " ")
        {
            zero++;
        }
    }

    if (val == "" || zero == val.length)
    {
        alert(name + "를 입력해 주십시오!");
        Field.value = "";
        Field.focus();
        ok = false;
    }
    return ok;
}

function numberkeyin()
{
    if (event.keyCode == 13)
    {
        event.returnValue = true;
        return;
    }
    if (event.keyCode < 45 || event.keyCode > 57)
    {
        alert("숫자만 입력가능합니다.");
        event.returnValue = false;
    }

}

//string이 실수형인지 체크
function floatCheck(text) {
    for (i = 0; i < text.length; i++) {
        if (text.charCodeAt(i) < 46 || text.charCodeAt(i) > 57) {
            return false;
        }
    }
    return true;
}

//string이 숫자인지 체크
function numberCheck(field)
{
    var val = field.value;
    for (i = 0; i < val.length; i++) {
        if (val.charCodeAt(i) < 48 || val.charCodeAt(i) > 57) {
            return false;
        }
    }
    return true;
}

//string이 숫자 혹은 '-'인지 체크
function numbBarCheck(field)
{
    var val = field.value;
    for (i = 0; i < val.length; i++) {
        if ((val.charCodeAt(i) < 48 || val.charCodeAt(i) > 57 ) && val.charAt(i) != '-') {
            return false;
        }

    }

    return true;
}


//
function msg_del() {
    if (confirm("삭제하시면 복원하실 수 없습니다.\n삭제 하시겠습니까?")) {
        document.del_ok.submit();
    }
    else {
    }
}

// 엔터키 입력 체크
function keypress(evt) // IE4.0 only
{
    if (parseInt(navigator.appVersion) >= 4)
    {
        if (navigator.appName != "Netscape")
        {
            if (evt.keyCode == 13)
            {
                evt.keyCode = "";
                    // Login();
                //alert("new line");
            }
        } else {
            return true;
        }
    }
    return true;
}

// TextArea 값 넘지치 않기.
// 구성 :
// <form name='Form_Name'>
// <textarea name="TextArea_Name" cols="76" rows="6" onKeyDown="textareaLen('Form_Name.TextArea_Name');">
// textareaLen의 form에 넘기는 값은 폼이름하고 Textarea이름 >> ('Form_Name.TextArea_Name')

function textareaLen(formObj, maxLength)
{
    textGul = formObj.value;
    textLen = strLenB(textGul);

    if (textLen > maxLength)
    {
        //      alert("입력된 정보량이 많아서 일부 자료가 잘립니다.\n내용을 확인해 주세요.");

        formObj.value = splitLen(textGul, maxLength);
        formObj.focus();
        return false;
    }
    return true;
}

//문자열의 Byte수를 센다
function strLenB(str)
{
    var length;
    length = str.length;
    for (i = 0; i < str.length; i++) {
        if (str.charCodeAt(i) > 127) {
            length++;
        }
    }
    return length;
}

//문자열을 Byte수만큼 자른다
function splitLen(str, maxLength) {
    var length = 0, i = 0;
    for (; length <= maxLength; i++) {
        if (str.charCodeAt(i) > 127) {
            length++;
        }
        length++;
        if (length > maxLength) {
            break;
        }
    }
    return str.substring(0, i);
}

//email형식이 맞는지 체크한다 수정 필요...
function emailCheck(text) {
    if (text.value.indexOf('@') < 1 ||
        text.value.indexOf('.') == -1 ||
        text.value.indexOf(' ') != -1 ||
        text.value.indexOf('@') > text.value.indexOf('.') ||
        text.value.indexOf('@') != text.value.lastIndexOf('@') ||
        text.value.lastIndexOf('.') == (text.value.length - 1) ||
        text.value.indexOf('.') == (text.value.indexOf('@') + 1) ||
        text.value.lastIndexOf('.') == (text.value.indexOf('.') + 1))
    {
        text.focus();
        return false;
    } else {
        return true;
    }
}

function rrn(field1, field2)
{
    if (field1.value.length != 0 && field2.value.length != 0)
    {
        if (field1.value.length != 6)
        {
            alert("주민등록번호가 옳지 않습니다!");
            field1.focus();
            return false;
        }
        for (var i = 0; i < 6; i++)
        {
            var AChar = field1.value.charAt(i);
            if (AChar < "0" || AChar > "9")
            {
                alert("주민등록번호가 옳지 않습니다!");
                field1.focus();
                return false;
                break;
            }
        }
        if (field2.value.length != 7)
        {
            alert("주민등록번호가 옳지 않습니다!");
            field2.focus();
            return false;
        }
        for (var i = 0; i < 7; i++)
        {
            var AChar = field2.value.charAt(i);
            if (AChar < "0" || AChar > "9")
            {
                alert("주민등록번호가 옳지 않습니다!");
                field2.focus();
                return false;
                break;
            }
        }

        var mon = field1.value.substring(2, 4);
        var day = field1.value.substring(4);
        var sex = field2.value.substring(0, 1);

        if ((mon < "01") || (mon > "12")) {
            alert("주민등록번호가 옳지 않습니다!")
            field1.focus();
            return false;
        }
        if ((day < "01") || (day > "31")) {
            alert("주민등록번호가 옳지 않습니다!")
            field1.focus();
            return false;
        }
        if ((sex < "1") || (sex > "2")) {
            alert("주민등록번호가 옳지 않습니다!")
            field2.focus();
            return false;
        }

        r11 = field1.value.substring(0, 1);
        r12 = field1.value.substring(1, 2);
        r13 = field1.value.substring(2, 3);
        r14 = field1.value.substring(3, 4);
        r15 = field1.value.substring(4, 5);
        r16 = field1.value.substring(5, 6);

        r21 = field2.value.substring(0, 1);
        r22 = field2.value.substring(1, 2);
        r23 = field2.value.substring(2, 3);
        r24 = field2.value.substring(3, 4);
        r25 = field2.value.substring(4, 5);
        r26 = field2.value.substring(5, 6);
        r27 = field2.value.substring(6, 7);

        var total = r11 * 2 + r12 * 3 + r13 * 4 + r14 * 5 + r15 * 6 + r16 * 7 + r21 * 8 + r22 * 9 + r23 * 2 + r24 * 3 + r25 * 4 + r26 * 5;
        var result = (11 - (total % 11)) % 10;

        if (result != r27) {
            alert("주민등록번호가 옳지 않습니다!");
            field1.focus();
            return false;
        }
    }
    return true;
}

function datetrim(datestr) {
    while (datestr.indexOf("-") != -1) {
        datestr = datestr.replace("-", "");
    }
    return texttrim(datestr);
}

function datecomp(startdt, enddt) {
    if (datetrim(startdt) != "" && datetrim(enddt) != "") {
        if (datetrim(startdt) > datetrim(enddt)) {
            return false;
        }
    }
    return true;
}


/**

 * 자바스크립트 공통함수
 *
 * 주의: 아래의 모든 메소드는 입력폼의 필드이름(myform.myfield)을
 *       파라미터로 받는다. 필드의 값(myform.myfield.value)이 아님을
 *       유념할 것.
 */


/**
 * 입력값이 NULL인지 체크
 */
function isNull(input) {
    if (input.value == null || input.value == "") {
        return true;
    }
    return false;
}

/**
 * 입력값에 스페이스 이외의 의미있는 값이 있는지 체크
 * ex) if (isEmpty(form.keyword)) {
 *         alert("검색조건을 입력하세요.");
 *     }
 */
function isEmpty(input) {
    if (input.value == null || input.value.replace(/ /gi, "") == "") {
        return true;
    }
    return false;
}

/**
 * 입력값에 특정 문자(chars)가 있는지 체크
 * 특정 문자를 허용하지 않으려 할 때 사용
 * ex) if (containsChars(form.name,"!,*&^%$#@~;")) {
 *         alert("이름 필드에는 특수 문자를 사용할 수 없습니다.");
 *     }
 */
function containsChars(input, chars) {
    for (var inx = 0; inx < input.value.length; inx++) {
        if (chars.indexOf(input.value.charAt(inx)) != -1)
            return true;
    }
    return false;
}

/**
 * 입력값이 특정 문자(chars)만으로 되어있는지 체크
 * 특정 문자만 허용하려 할 때 사용
 * ex) if (!containsCharsOnly(form.blood,"ABO")) {
 *         alert("혈액형 필드에는 A,B,O 문자만 사용할 수 있습니다.");
 *     }
 */
function containsCharsOnly(input, chars) {
    for (var inx = 0; inx < input.value.length; inx++) {
        if (chars.indexOf(input.value.charAt(inx)) == -1)
            return false;
    }
    return true;
}

/**
 * 입력값이 알파벳인지 체크
 * 아래 isAlphabet() 부터 isNumComma()까지의 메소드가
 * 자주 쓰이는 경우에는 var chars 변수를
 * global 변수로 선언하고 사용하도록 한다.
 * ex) var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 *     var lowercase = "abcdefghijklmnopqrstuvwxyz";
 *     var number    = "0123456789";
 *     function isAlphaNum(input) {
 *         var chars = uppercase + lowercase + number;
 *         return containsCharsOnly(input,chars);
 *     }
 */
function isAlphabet(input) {
    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    return containsCharsOnly(input, chars);
}

/**
 * 입력값이 알파벳 대문자인지 체크
 */
function isUpperCase(input) {
    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    return containsCharsOnly(input, chars);
}

/**
 * 입력값이 알파벳 소문자인지 체크
 */
function isLowerCase(input) {
    var chars = "abcdefghijklmnopqrstuvwxyz";
    return containsCharsOnly(input, chars);
}

/**
 * 입력값에 숫자만 있는지 체크
 */
function isNumber(input) {
    var chars = "0123456789";
    return containsCharsOnly(input, chars);
}

/**
 * 입력값이 알파벳,숫자로 되어있는지 체크
 */
function isAlphaNum(input) {
    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    return containsCharsOnly(input, chars);
}

/**
 * 입력값이 숫자,대시(-)로 되어있는지 체크
 */
function isNumDash(input) {
    var chars = "-0123456789";
    return containsCharsOnly(input, chars);
}

/**
 * 입력값이 숫자,콤마(,)로 되어있는지 체크
 */
function isNumComma(input) {
    var chars = ",0123456789";
    return containsCharsOnly(input, chars);
}

/**
 * 입력값이 사용자가 정의한 포맷 형식인지 체크
 * 자세한 format 형식은 자바스크립트의 'regular expression'을 참조
 */
function isValidFormat(input, format) {
    if (input.value.search(format) != -1) {
        return true; //올바른 포맷 형식
    }
    return false;
}

/**
 * 입력값이 이메일 형식인지 체크
 * ex) if (!isValidEmail(form.email)) {
 *         alert("올바른 이메일 주소가 아닙니다.");
 *     }
 */
function isValidEmail(input) {
    //    var format = /^(\S+)@(\S+)\.([A-Za-z]+)$/;
    var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
    return isValidFormat(input, format);
}

/**
 * 입력값이 전화번호 형식(숫자-숫자-숫자)인지 체크
 */
function isValidPhone(input) {
    var format = /^(\d+)-(\d+)-(\d+)$/;
    return isValidFormat(input, format);
}

/**
 * 입력값의 바이트 길이를 리턴
 * ex) if (getByteLength(form.title) > 100) {
 *         alert("제목은 한글 50자(영문 100자) 이상 입력할 수 없습니다.");
 *     }
 * Author : Wonyoung Lee
 */
function getByteLength(input) {
    var byteLength = 0;
    for (var inx = 0; inx < input.value.length; inx++) {
        var oneChar = escape(input.value.charAt(inx));
        if (oneChar.length == 1) {
            byteLength ++;
        } else if (oneChar.indexOf("%u") != -1) {
            byteLength += 2;
        } else if (oneChar.indexOf("%") != -1) {
            byteLength += oneChar.length / 3;
        }
    }
    return byteLength;
}

/**
 * 입력값에서 콤마를 없앤다.
 */
function removeComma(input) {
    return input.value.replace(/,/gi, "");
}

/**
 * 선택된 라디오버튼이 있는지 체크
 */
function hasCheckedRadio(input) {
    if (input.length > 1) {
        for (var inx = 0; inx < input.length; inx++) {
            if (input[inx].checked) return true;
        }
    } else {
        if (input.checked) return true;
    }
    return false;
}

/**
 * 선택된 체크박스가 있는지 체크
 */
function hasCheckedBox(input) {
    return hasCheckedRadio(input);
}

/*
   ex)
   var str = "31,000";
   var res = removeFormat(str, ",");

   result : res -> 31000
*/
function removeFormat(content, sep) {
    var real = "";
    var contents = content.split(sep);

    for (var i = 0; i < contents.length; i++) {
        real += contents[i];
    }

    return real;
}

/*
*
*    작성일 : 2001-10-18
*    작성자 : 최용준
*
*    입력한 날로 부터 일정기간 만큼의 전후 날짜를 구해온다.
*
*   사용예) 2001년 10월 18일 부터 5년   후의 날짜  : getDiffDate('20011018',5,0,0,1)
*                                 3개월 후의 날짜  : getDiffDate('20011018',0,3,0,1)
*                                 48일  후의 날짜  : getDiffDate('20011018',0,0,48,1)
*
*           2001년 10월 18일 부터 5년   전의 날짜  : getDiffDate('20011018',5,0,0,0)
*                                 3개월 전의 날짜  : getDiffDate('20011018',0,3,0,0)
*                                 48일  전의 날짜  : getDiffDate('20011018',0,0,48,0)
*
*           2001년 10월 18일 부터 5년 3개월 38 일 후의 날짜  : getDiffDate('20011018',5,3,38,1)
*           2001년 10월 18일 부터 5년 3개월 38 일 전의 날짜  : getDiffDate('20011018',5,3,38,0)
*
*    paremeter : 1. strdate : 입력 날짜
*                2. yy      : 년도
*                3. mm      : 달
*                4. dd      : 날짜
*                5. ab      : 전후를 구분 ( 전(before) = 0, 후(after) = 1   )
*
*/

function getDiffDate(strdate, gubun, yy, mm, dd, ab) {
    var year = strdate.substr(0, 4);
    var month = strdate.substr(4, 2);
    var day = strdate.substr(6, 2);

    var Intyear,Intmonth,Intday ;

    if (ab == 0) {

        Intyear = parseInt(year, 10) - yy;
        Intmonth = parseInt(month, 10) - 1 - mm;
        Intday = parseInt(day, 10) - dd;

    } else if (ab == 1) {

        Intyear = parseInt(year, 10) + yy;
        Intmonth = parseInt(month, 10) - 1 + mm;
        Intday = parseInt(day, 10) + dd;
    }

//	alert(Intyear + ' \ ' + Intmonth + ' \ ' + Intday);

    var d1 = new Date();

    d1.setYear(Intyear);
    d1.setMonth(Intmonth);
    d1.setDate(Intday);

    year = d1.getYear();
    month = d1.getMonth() + 1;
    day = d1.getDate();

    year = year.toString();

    if (month < 10) {
        month = "0" + month.toString();
    } else {
        month = month.toString();
    }

    if (day < 10) {
        day = "0" + day.toString();
    } else {
        day = day.toString();
    }

    s = year + gubun + month + gubun + day;
    return(s);
}

/*
	Function : getToday('')
	Return   : 오늘날짜
	Usage    : 현재 날짜(20030101 or 2003/01/01)를 리턴
	사용법   : getToday('')  ==> 20030101
	           getToday('/') ==> 2003/01/01
*/
function getToday(gubun) {
    today = new Date();

    var year = today.getFullYear();
    var month = today.getMonth() + 1;
    var day = today.getDate();

    if (month < 10) {
        month = "0" + month;
    }
    if (day < 10) {
        day = "0" + day;
    }
    return year + gubun + month + gubun + day;
}

 

