/******************************************************
 * Function명 : SUonlyNHA()
 * 설      명 : 입력필드에서 오직 한글, 영어, 숫자만 입력가능하게 한다.
 * 용      법 : 임의의 textfield에서 사용가능하다.
 *              반드시 한글, 영어, 숫자만 입력하는 TextField에서 다음과
 *              같은 방법으로 이 스크립트를 호출한다.
 * <input type="text" name="test" OnKeyPress="JavaScript:SUonlyNHA()">
 ******************************************************/
function SUonlyNHA() {
	var keycode = event.keyCode;
	var vChk    = false;

	//alert(keycode);

	if( (!(event.shiftKey)&& ((keycode>=48&&keycode<=57) ||
			(keycode==8||keycode==9||keycode==46) ||
			(keycode>=96&&keycode<=105) ||
			(keycode>=35&&keycode<=40)))              // 숫자..
			|| (keycode >=65 && keycode <= 90)        // 영문 대소문자
			|| (keycode == 32) // 스페이스
			|| !(keycode<0xAC00 || 0xD7A3<keycode)) { // 한글..
		vChk = true;	// 숫자 ok
	}

	event.returnValue = vChk;
}

/******************************************************
 * Function명 : SUonlyNA()
 * 설      명 : 입력필드에서 오직  영어, 숫자만 입력가능하게 한다.
 * 용      법 : 임의의 textfield에서 사용가능하다.
 *              반드시 영어, 숫자만 입력하는 TextField에서 다음과
 *              같은 방법으로 이 스크립트를 호출한다.
 * <input type="text" name="test" OnKeyPress="JavaScript:SUonlyNA()">
 ******************************************************/
function SUonlyNA() {
	var keycode = event.keyCode;
	var vChk    = false;

	//alert(keycode);

	if( (!(event.shiftKey)&& ((keycode>=48&&keycode<=57) ||
			(keycode==8||keycode==9||keycode==46) ||
			(keycode>=96&&keycode<=105) ||
			(keycode>=35&&keycode<=40)))              // 숫자..
			|| (keycode >=65 && keycode <= 90)        // 영문 대소문자
			|| (keycode == 32) // 스페이스

			) {
		vChk = true;	// 숫자 ok
	}

	event.returnValue = vChk;
}

/******************************************************
 * Function명 : SUOnlyHangul()
 * 설      명 : 입력필드에서 오직 한글만 입력가능하게 한다.
 * 용      법 : 임의의 textfield에서 사용가능하다.
 *              반드시 한글만 입력하는 TextField에서 다음과
 *              같은 방법으로 이 스크립트를 호출한다.
 * <input type="text" name="test" OnKeyPress="JavaScript:SUOnlyHangul()">
 ******************************************************/
function SUOnlyHangul() {
	if(event.keyCode<0xAC00 || 0xD7A3<event.keyCode)
		event.returnValue=false;
}

/******************************************************
 *  Function명 : SUComboIndex(obj, str)
 *  설      명 : Combobox의 Index값 리턴
 *  Parameter  : obj    : index를 찾을 combobox obj
 *  Parameter  : str    : combobox 초기값
 *  용      법 : SUComboIndex(document.form.testfield, value);
 *  Return     : combobox index
 ******************************************************/
function SUComboIndex(selcombo, str) {
	var tmpvalue;
	for(var i=0;i<selcombo.length;i++) {
		tmpvalue = selcombo.options[i].value;
		if (tmpvalue == str)
			return i;
	}
	return -1;
}

/******************************************************
 *  Function명 : SUComboIndex(obj, str)
 *  설      명 : Combobox를 초기화
 *  Parameter  : obj    : 초기화할 combobox obj
 *  Parameter  : str    : combobox 초기값
 *  Return     : combobox index
 ******************************************************/
function SUSetCombo(selcombo,str) {
	selcombo.selectedIndex = SUComboIndex(selcombo, str);
}

/******************************************************
 *  Function명 : SUltrim(obj)
 *  설      명 : 입력받은 값의 좌측공백을 삭제한다.
 *  Parameter  : obj : 문자입력 객체
 *  Return     : 좌측공백을 제외한 스트링
 ******************************************************/
function SUltrim(obj) {
	var str = obj.value;

	while (str.length != 0) {
		if (str.substring(0, 1) == " ") {
			str = str.substring(1, str.length);
			continue;
		} else {
			break;
		}
	}

	obj.value = str;

	return str ;
}

/******************************************************
 *  Function명 : SUrtrim(obj)
 *  설      명 : 입력받은 값의 우측공백을 삭제한다.
 *  Parameter  : obj : 문자입력 객체
 *  Return     : 우측공백을 제외한 스트링
 ******************************************************/
function SUrtrim(obj) {
	var str = obj.value;

	while (str.length != 0) {
		blank = str.lastIndexOf(" ");
		if ((str.length - 1) == blank) {
			str = str.substring(0, str.length - 1);
			continue;
		} else {
			break;
		}
	}

	obj.value = str;
	return str ;
}

/******************************************************
 *  Function명 : SUtrim(obj)
 *  설      명 : 입력받은 값의 좌우측공백을 삭제한다.
 *  Parameter  : obj : 문자입력 객체
 *  Return     : 좌우측공백을 제외한 스트링
 ******************************************************/
function SUtrim(obj) {
	SUrtrim(obj);
	return SUltrim(obj);
}

/******************************************************
 *  Function명 : SUisHangul(obj)
 *  설      명 : 입력받은 값에 한글이 있는지 체크한다.
 *  Parameter  : obj : 문자열 객체 or 문자열
 *  Return     : Boolean : 한글포함-true, 한글비포함-false 리턴
 *  수정  사항 : 한글입력여부 판별이 제대로 되지않는 버그수정
 ******************************************************/
function SUisHangul(obj) {
	var v;
	if(obj=='[object]')	v=obj.value;
	else v=obj;

	for(i=0; i < v.length; i++) {
		var h = v.charCodeAt(i);

		if(h < 0xAC00 || 0xD7A3 < h) {
			continue;
		} else {
			return true;
		}
	}

	return false;
}

/******************************************************
 *  Function명 : SUonlyContainsHangul(obj)
 *  설      명 : 입력받은 값에 한글만이 있는지 체크한다.
 *  Parameter  : obj : 문자열 객체
 *  Return     : Boolean : 한글로만구성-true, 한글외 문자포함-false 리턴
 *  수정  사항 : 한글입력여부 판별이 제대로 되지않는 버그수정
 ******************************************************/
function SUonlyContainsHangul(obj) {
	for(i=0; i < obj.value.length; i++) {
		var h = obj.value.charCodeAt(i);

		if(h<0xAC00 || 0xD7A3<h) {
			if(h==32) continue;
			else return false;
		} else {
			continue;
		}
	}

	return true;
}

/******************************************************
 *  Function명 : SUisAlpha(obj)
 *  설      명 : 입력받은 값에 영어가 있는지 체크한다.
 *  Parameter  : obj : 문자입력객체 or 문자열
 *  Return     : Boolean : 영어포함-true, 영어비포함-false 리턴
 *  수정  사항 : 영어 입력여부가 제대로 판별이 되지않는 버그수정
 ******************************************************/
function SUisAlpha(obj) {
	var v;
	if(obj=='[object]')	v=obj.value;
	else v=obj;

	for(i=0; i < v.length; i++) {
		v = v.toUpperCase();
		var a = v.charCodeAt(i);
		if( a < 65 || a > 90) {
			continue;
		} else {
			return true;
		}
	}

	return false;
}

/******************************************************
 *  Function명 : SUupperCase(obj)
 *  설      명 : 영문 스트링을 대문자로 변환한다.
 *  Parameter  : obj : 문자입력객체
 *  Return     : 영문 대문자 스트링
 *  수정  사항 : 불필요한 로직 삭제
 ******************************************************/
function SUupperCase(obj) {
    var val = obj.value.toUpperCase();
		obj.value = val;
		return val;
}

/******************************************************
 *  Function명 : SUlowerCase(obj)
 *  설      명 : 영문 스트링을 소문자로 변환한다.
 *  Parameter  : obj : 문자입력객체
 *  Return     : 영문 소문자 스트링
 *  수정  사항 : 불필요한 로직 삭제
 ******************************************************/
function SUlowerCase(obj) {
    var val = obj.value.toLowerCase();
		obj.value = val;
		return val;
}

/******************************************************
 *  Function명 : SUgetLocation(w, h)
 *  설      명 : 팝업창을 Screen 가운데 위치시키기 위한 정보
 *  Parameter  : w : 팝업창의 너비
 *             : h : 팝업창의 높이
 *  Return     : 위치 값
 ******************************************************/
function SUgetLocation(w, h) {
	var leftPosition=(screen.width)?(screen.width-w)/2:100;
	var topPosition=(screen.height)?(screen.height-h)/2:100;

	var loc = "height=" + h + ",width=" + w + ",top=" + topPosition + ",left=" + leftPosition;

	return loc;
}

/******************************************************
 *  Function명 : SUgetLength(obj)
 *  설      명 : 문자열의 길이를 체크(한글-2, 영문-1)
 *  Parameter  : obj : 문자입력객체 or 문자 스트링
 *  Return     : int 문자열의 길이
 ******************************************************/
function SUgetLength(obj) {
		var str;
		if(obj=='[object]') str=obj.value;
		else str=obj;

    return (str.length+(escape(str)+"%u").match(/%u/g).length-1);
}

/******************************************************
 *  Function명 : SUnextObj(obj, nextObj, maxLen)
 *  설      명 : 탭 처리 함수(문자열 자리수에 맞으면 다음 포커스로 이동)
 *  Parameter  : obj     : 현재 문자열 객체
 *             : nextObj : 탭 이동할 객체
 *             : maxLen  : 입력받을 수 있는 최대 길이
 *  Return     : 위치 값
 ******************************************************/
function SUnextObj(obj, nextObj, maxLen) {
    var objstr = obj.value;
    var objLen = SUgetLength(objstr);
    if(objLen == maxLen) {
        nextObj.focus();
    } else if (objLen > maxLen) {
        alert("최대입력값은 " + maxLen + "입니다.");
        obj.focus();
    }
}

/******************************************************
 *  Function명 : SUCheck_Jumin(sRegNo)
 *  설      명 : 주민등록번호가 맞는지 체크한다.
 *  Parameter  : sRegNo     : 주민등록번호
 *  Return     : Boolean
 ******************************************************/
function SUCheck_Jumin(sRegNo){
	var str = "" ;
	var sTemp = "" ;

	for (k = 0; k < sRegNo.length; k++) {
		if ( sRegNo.charAt(k) != "-") {
			sTemp += sRegNo.charAt(k) ;
		}
	}

	sRegNo = sTemp ;

	if (sRegNo == "")  { alert(" 주민 번호를 입력해 주십시요. " );  return false; }
	//숫자인것을 체크

    // 관리용 주민번호인 경우에는 체크하지 않고 그냥 통과시킨다.
    if (sRegNo.length > 7 && sRegNo.substring(0,6) == "888888")
    {
        return true;
    }

	var str_len = sRegNo;
	var digit= 0

	for (var i = 0; i < str_len.length; i++){
		var str_dig = str_len.substring(i, i+1);
		//숫자체크
		if (str_dig < '0' || str_dig > '9'){
			digit=digit+1
		}
	}

	if ((str_len == '') || ( digit != 0 )){
		alert("잘못된 주민 번호입니다. \n \n다시 확인하시고 입력해 주세요.");
		return false;
	}

	if (str_len.substring(2,3) > 1){
		alert("잘못된 주민 번호입니다. \n \n다시 확인하시고 입력해 주세요.");
		return false;
	}

	if (str_len.substring(4,5) > 3){
		alert("잘못된 주민 번호입니다. \n \n다시 확인하시고 입력해 주세요.");
		return false;
	}

	if (str_len.substring(6,7) > 4 || str_len.substring(6,7) == 0){
		alert("잘못된 주민 번호입니다. \n \n다시 확인하시고 입력해 주세요.");
		return false;
	}

	var a1 = str_len.substring(0,1)
	var a2 = str_len.substring(1,2)
	var a3 = str_len.substring(2,3)
	var a4 = str_len.substring(3,4)
	var a5 = str_len.substring(4,5)
	var a6 = str_len.substring(5,6)

	var check_digit = a1 * 2 + a2 * 3 + a3 * 4 + a4 * 5 + a5 * 6 + a6 * 7

	var b1 = str_len.substring(6,7)
	var b2 = str_len.substring(7,8)
	var b3 = str_len.substring(8,9)
	var b4 = str_len.substring(9,10)
	var b5 = str_len.substring(10,11)
	var b6 = str_len.substring(11,12)
	var b7 = str_len.substring(12,13)

	var check_digit = check_digit + b1 * 8 + b2 * 9 + b3 * 2 + b4 * 3 + b5 * 4 + b6 * 5

	check_digit = check_digit%11
	check_digit = 11 - check_digit
	check_digit = check_digit%10

	if (check_digit != b7){
	 	alert("잘못된 주민 번호입니다. \n \n다시 확인하시고 입력해 주세요.");
	 	return false;
	}
	return true ;
}

/******************************************************
 *  Function명 : SUBusinessRegistrationNo(sRegNo)
 *  설      명 : 사업자번호가 맞는지 체크한다.
 *  Parameter  : sRegNo     : 사업자번호
 *  Return     : Boolean
 ******************************************************/
function SUBusinessRegistrationNo(sRegNo) {
	var str_len = sRegNo ;
	var digit = 0

	var sTemp = "" ;

	for (k = 0; k < str_len.length; k++) {
		if ( str_len.charAt(k) != "-") {
			sTemp += str_len.charAt(k) ;
		}
	}

	str_len = sTemp ;

	if ((str_len == '') || ( digit != 0 )){
		alert("잘못된 사업자 번호입니다. \n다시 확인하시고 입력해 주세요.");
		return false;
	}

	var a1 = str_len.substring(0,1)
	var a2 = str_len.substring(1,2)
	var a3 = str_len.substring(2,3)
	var a4 = str_len.substring(3,4)
	var a5 = str_len.substring(4,5)
	var a6 = str_len.substring(5,6)
	var a7 = str_len.substring(6,7)
	var a8 = str_len.substring(7,8)
	var a9 = str_len.substring(8,9)
	var a10=str_len.substring(9,10)
	var check_bit = a1 * 1 + a2 * 3 + a3 * 7 + a4 * 1 + a5 * 3 + a6 * 7 + a7 * 1 + a8 * 3 + a9 * 5
	var a9_check = (a9*5)/10

	if ((a9 % 2) == 1) {
		a9_check = a9_check - 0.5;
	}

	var check_result = check_bit + a9_check
	var aaa = check_result%10
	var check_bit_result ;

	if ( aaa == 0 ) check_bit_result = 0;
	else check_bit_result = 10- aaa;

	if ( check_bit_result != a10) {
		alert("잘못된 사업자 번호입니다. \n다시 확인하시고 입력해 주세요.");
		return false;
	}
	return true;
}

/******************************************************
 *  Function명 : SUisEmail(obj)
 *  설      명 : 전자 메일 형식 체크
 *  Parameter  : obj : 문자입력객체 or 문자열
 *  Return     : Boolean : 형식에 맞으면-true, 틀리면-false 리턴
 ******************************************************/
function SUisEmail(obj) {
	var str;
	if(obj=='[object]') str=obj.value;
	else str=obj;

	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})(\\]?)$");
	return (!r1.test(str) && r2.test(str));
}

/******************************************************
 *  Function명 : SUformatBiz(obj)
 *  설      명 : 사업자 번호를 포맷화 하기 위해 OnKeyPress 이벤트에서 사용
 *  Parameter  : obj    : 사업자번호를 입력받은 객체
 *  Return     : XXX-XX-XXXXX
 ******************************************************/
function SUformatBiz(obj) {
	var symbol = "-";
	var str = obj.value;

	if(str.length == 3 || str.length == 6)
		obj.value = str + symbol;

	obj.focus();
}

/******************************************************
 *  Function명 : SUformatJumin(obj)
 *  설      명 : 주민등록번호를 포맷화 하기 위해 OnKeyPress 이벤트에서 사용
 *  Parameter  : obj    : 주민등록번호를 입력받은 객체
 *  Return     : XXXXXX-XXXXXXX
 ******************************************************/
function SUformatJumin(obj) {
	var symbol = "-";
	var str = obj.value;

	if(str.length == 6)
		obj.value = str + symbol;

	obj.focus();
}

/******************************************************
 *  Function명 : SUunFormat(obj)
 *  설      명 : 날짜를 포맷화
 *  Parameter  : obj    : 날짜를 입력받은 객체
 *  Return     : 20010101
 *  비      고 : ex) 2001-01-01  --> 20010101
 ******************************************************/
function SUunFormat(obj) {
	var str_tmp = "";

	if(obj.toString().indexOf('[object') > -1) {		// obj가 Object면
		str_tmp = obj.value;
	} else {
		str_tmp = obj;
	}

	var arrStr = str_tmp.split('-');

	if(obj.toString().indexOf('[object') > -1) {		// obj가 Object면
		obj.value = arrStr.join('');
		obj.focus();
	} else {
		return arrStr.join('');
	}
}

/******************************************************************************/
/*  Function명 : SUShowCalendar(objForm, objText)                             */
/*  설      명 : 달력을 이용한 날짜 입력창을 실행한다.                        */
/*  Parameter  : objForm : form 이름                                          */
/*               objText : 객체이름                                           */
/*  Return     :                                                              */
/******************************************************************************/
function SUShowCalendar(objForm, objText) {
	var loc = SUgetLocation(300, 200);
	obj = eval(objForm + "." + objText);
	value = obj.value;
	window.open("/common/jsp/calendar.jsp?FORMNAME="+objForm+"&FIELDNAME="+objText+"&INPUTVALUE="+value, "", loc);
}
