from : http://www.ihelpers.co.kr/

    /////////////////////////////////////////////////////////////////
    // Program id : jslib.js
    // Description : JavaScript Util
    // 작성자 : 손상모
    // :
    //////////////////////////////////////////////////////////////

    //
    // Sub ID : isEmail
    // Description : Email Format Check
    // Param : str - Email Address
    // Return : true or false
    //
        function isEmail(str) {
            // regular expression 지원 여부 점검
            var supported = 0;
            if (window.RegExp) {
                var tempStr = "a";
                var tempReg = new RegExp(tempStr);
                if (tempReg.test(tempStr)) supported = 1;
            }
            if (!supported)
                return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
//	var r1 = new RegExp("(@.*@)|(..)|(@.)|(^.)");
            //	var r2 = new RegExp("^.+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$");
            var r2 = new RegExp("^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$");
//	return (!r1.test(str) && r2.test(str));
            return r2.test(str);
        }


/*
' Sub ID : isResNo
' Description : 주민번호 Sum Check
' @Param : s - 주민번호
' Return : true or false
**/
/*
function isResNo(s) {
	if (s.charAt(6) == 1 || s.charAt(6) == 2) {
		if (s.charAt(12) == (( 11 - ((s.charAt(0) * 2 + s.charAt(1) * 3 + s.charAt(2) * 4
				+ s.charAt(3) * 5 + s.charAt(4) * 6 + s.charAt(5) * 7
				+ s.charAt(6) * 8 + s.charAt(7) * 9 + s.charAt(8) * 2
				+ s.charAt(9) * 3 + s.charAt(10) * 4 + s.charAt(11) * 5)
				% 11))) % 10)
			return true;
	}
	return false;
}
*/

function chkresno(resno) {
    // 주민번호의 형태와 7번째 자리(성별) 유효성 검사
    fmt = /^\d{6}-[1234]\d{6}$/;
    if (!fmt.test(resno)) {
        alert("잘못된 주민등록번호입니다.");
        return false;
    }

	// 날짜 유효성 검사
    birthYear = (resno.charAt(7) <= "2") ? "19" : "20";
    birthYear += resno.substr(0, 2);
    birthMonth = resno.substr(2, 2) - 1;
    birthDate = resno.substr(4, 2);
    birth = new Date(birthYear, birthMonth, birthDate);

    if (birth.getYear() % 100 != resno.substr(0, 2) ||
        birth.getMonth() != birthMonth ||
        birth.getDate() != birthDate) {
        alert("잘못된 주민등록번호입니다.");
        return false;
    }

	// Check Sum 코드의 유효성 검사
    buf = new Array(13);
    for (i = 0; i < 6; i++) buf[i] = parseInt(resno.charAt(i));
    for (i = 6; i < 13; i++) buf[i] = parseInt(resno.charAt(i + 1));

    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]);

    if ((11 - (sum % 11)) % 10 != buf[12]) {
        alert("잘못된 주민등록번호입니다.");
        return false;
    }

//	alert("정상적인 주민등록번호입니다.");
    return true;
}


/*
' Sub ID : isAlpabatNum
' Description : 해당 문자열이 알파벳과 숫자로만 이루어 졌는지 체크
' @Param : obj - 체크하고 싶은 문자열
' Return : true or false
**/
function isAlpabatNum(obj) {

    var str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    for (i = 0; i < obj.length; i++) {
        if (str.indexOf(obj.substring(i, i + 1)) < 0) {
            return false;
        }

    }

    return true;
}

/*
' Sub ID : CheckAlpabatNum
' Description : 해당 문자열이 알파벳과 숫자로만 이루어 졌는지 체크
' @Param : obj - 체크하고 싶은 문자열
' Return : true or false
**/
function CheckAlpabatNum(obj) {

    var str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    for (i = 0; i < obj.value.length; i++) {
        if (str.indexOf(obj.value.substring(i, i + 1)) < 0) {
            alert('영어와 숫자 이외에는 입력할 수 없습니다.');
            obj.focus();
            obj.value = "";
            return false;
        }

    }

    return true;
}

//
// Sub ID : isnum
// Description : Number Format Check
// Param : Num - number
// Return : true or false
//
function isNum(NUM) {
    for (var i = 0; i < NUM.length; i++) {
        achar = NUM.substring(i, i + 1);
        if (achar < "0" || achar > "9") {
            return (false);
        }
    }
    return true;
}

//
// Sub ID : OnlyNum
// Description : 숫자 키보드만 적용됨
// Param : obj 해당text객체
// Return :
//
function OnlyNum(obj)
{
    if (event.keyCode >= 48 && event.keyCode <= 57) {

    } else {
        event.returnValue = false
    }
}

//
// Sub ID : isCheck
// Description : CHECK Box CHECK 유무
// Param : obj - checkbox object
// Return : true or false
//
function isCheck(obj) {
    if (obj.length > 1) {
        for (i = 0; i < obj.length; i++) if (obj[i].checked) return true;
    } else {
        return obj.checked;
    }
    return false;
}

//
// Sub ID : currency
// Description : 숫자만 입력받도록
// Param : obj - text
function currency(obj)
{
    for (var i = 0; i < obj.value.length; i++) {
        chr = obj.value.substr(i, 1);
        chr = escape(chr);
        key_eg = chr.charAt(1);
        if (key_eg == 'u') {
            key_num = chr.substr(i, (chr.length - 1));
            if ((key_num < "AC00") || (key_num > "D7A3")) {
                event.returnValue = false;
            }
        }
    }
    if (event.keyCode >= 48 && event.keyCode <= 57) {

    } else {
        event.returnValue = false;
    }
}

//
// Sub ID : com
// Description : 자릿수(3자리)마다 콤마 처리
// Param : obj - Object명
function com(obj)
{
    obj.value = unComma(obj.value);
    obj.value = Comma(obj.value);
}

function com2(value) {
    var retVal = value;

    retVal = unComma(retVal);
    retVal = Comma(retVal);

    return retVal;
}

//
// Sub ID : com
// Description : 자릿수(3자리)마다 콤마 처리
// Param : input - 입력값

function Comma(input) {

    var inputString = new String;
    var outputString = new String;
    var counter = 0;
    var decimalPoint = 0;
    var end = 0;
    var modval = 0;

    inputString = input.toString();
    outputString = '';
    decimalPoint = inputString.indexOf('.', 1);

    if (decimalPoint == -1) {
        end = inputString.length - (inputString.charAt(0) == '0' ? 1 : 0);
        for (counter = 1; counter <= inputString.length; counter++)
        {
            var modval = counter - Math.floor(counter / 3) * 3;
            outputString = (modval == 0 && counter < end ? ',' : '') + inputString.charAt(inputString.length - counter) + outputString;
        }
    }
    else {
        end = decimalPoint - ( inputString.charAt(0) == '-' ? 1 : 0);
        for (counter = 1; counter <= decimalPoint; counter++)
        {
            outputString = (counter == 0 && counter < end ? ',' : '') + inputString.charAt(decimalPoint - counter) + outputString;
        }
        for (counter = decimalPoint; counter < decimalPoint + 3; counter++)
        {
            outputString += inputString.charAt(counter);
        }
    }
    return (outputString);
}

//
// Sub ID : com
// Description : 콤마 처리된 값을 환원
// Param : input - 변환될값

function unComma(input) {
    var inputString = new String;
    var outputString = new String;
    var outputNumber = new Number;
    var counter = 0;
    if (input == '')
    {
        return 0
    }
    inputString = input;
    outputString = '';
    for (counter = 0; counter < inputString.length; counter++)
    {
        outputString += (inputString.charAt(counter) != ',' ? inputString.charAt(counter) : '');
    }
    outputNumber = parseFloat(outputString);
    return (outputNumber);
}

//
// Sub ID : MoveObject
// Description : 일정크기의 값을 받았을때 다른 object로 이동
// Param : obj - 해당 obj
// Param : len - 길이
// Param : nobj - 이동할 obj
//
function MoveObject(obj, len, nobj) {
    if (obj.value.length == len) {
        nobj.focus();
        return true;
    }
    return false;
}


function trimmed(src) {
    var value = src;
    value = value.replace(/^\s+/, "");  // remove leading white spaces
    return  value.replace(/\s+$/g, ""); // remove trailing while spaces
}

