/**
 * @(#)util.js
 *
 * Copyright (C) 2005 D.TRIBE, Inc. All rights reserved.
 *
 * THIS SOFTWARE IS THE PROPRIETARY INFORMATION OF D.TRIBE, INC.
 * USE IS SUBJECT TO LICENSE TERMS.
 *
 * @author	Barney Kim
 * @version	1.0, 2004/03/07 파일 작성
 *			1.1, 2004/06/06 기능 추가
 */
function notSupport() {
	jsMessage("아직 지원하지 않는 기능입니다.");
}

//
// 일반 정보 메시지를 출력한다.
//
// @param msg 출력할 메시지
//
function jsMessage(msg) {
	js_msg("정보", msg);
}

//
// 오류 메시지를 출력한다.
//
// @param msg 출력할 메시지
//
function jsError(msg) {
	js_msg("오류", msg);
}

//
// 사용자 오류 메시지를 출력한다.
//
// @param msg 출력할 메시지
//
function jsUserError(msg) {
	js_msg("사용자 오류", msg);
}

//
// 시스템 오류 메시지를 출력한다.
//
// @param msg 출력할 메시지
//
function jsSystemError(msg) {
	js_msg("시스템 오류", msg);
}

//
// 자바스크립트 메시지를 출력 함수
//
// @param errType 오류 종류
// @param msg 출력할 메시지
//
function js_msg(errType, msg) {
	alert(errType + ":\n\n" + msg);
}

//
// 삭제확인
//
function checkDelete() {
    var val1 = confirm("확인:\n\n정말 삭제하겠습니까?");
    return val1;
}

//
// 변경 확인
//
function checkModify() {
	var val1 = confirm("확인:\n\n변경하시겠습니까?");
	return val1;
}


//
// 한글 여부 확인
//
function isHangul(str) {
	var len = str.length;
	for (var i = 0; i < len; i++) {
		if (str.charCodeAt(i) != 32 &&
			(str.charCodeAt(i) < 44032 || str.charCodeAt(i) > 55191)) {
				return true;
		}
	}
	return false;
}

//
// 숫자 여부 확인
//
function isNumber(str) {
	if(isSpace(str)) return false;
	var rgNum = /\d/;
	if(!rgNum.test(str)) {
		return false;
	}
	return true;
}

function isSpace(str) {
	if(str.indexOf(" ") != -1) {
		return true;
	}
	return false;
}

//
// 이메일 확인
//
function isEmail(str) {
	var rgEmail = /^[\w_-]+(\.[\w_-]+)*@[\w_-]+(\.[\w_-]+)*\.\w{2,3}$/i
	if(rgEmail.test(str)) return true;
	return false;
}

//
// 빈공백 삭제
//
function removeSpace(str) {
	var s = str;
	if(s.indexOf(" ") != -1) {
		s = s.replace(/\s/gi, "" );
	}
	return s;
}

function isNull(str) {
	if(str == null || str.length == 0 || removeSpace(str) == "" || removeSpace(str) == " ") {
		return true;
	}
	return false;
}

function isFormNotNull(obj, msg) {
	if(isNull(obj.value)) {
		jsMessage(msg + " 입력하십시요.");
		obj.focus();
		return false;
	}
	return true;
}

function isFormText(obj, msg) {
	return isFormNotNull(obj, msg);
}

function isFormNumber(obj, msg) {
	if(!isFormNotNull(obj, msg)) return false;
	else if(!isNumber(obj.value)) {
			jsMessage(msg + " 숫자로만 입력하십시요");
			obj.focus();
			return false;
	}
	return true;
}

//
// 지정한 문자열이 날짜인지를 확인한다. 여기에서는 날짜 형식을
// yyyy-MM-dd 로 가정한다.
//
// @param str 확인할 문자열
//
function isDate(str) {
	var rgDateFormat = /^\d{4}-\d{2}-\d{2}$/g;
	if(!rgDateFormat.test(str)) return false;
	else {
		var yearStr = str.substring(0,4);
		var monthStr = str.substring(5,7);
		var dayStr = str.substring(8,10);
		if(yearStr < 1900 || yearStr > 2069) return false;
		if(monthStr < 1 || monthStr > 12) return false;
		if(dayStr < 1 || dayStr > 31) return false;
		return true;
	}
}

//
// 폼에서 지정한 객체가 날짜인지를 확인한다.
//
// @param obj 확인할 객체
// @param msg 오류시 출력할 객체 이름
//
function isFormDate(obj, msg) {
	if(!isFormNotNull(obj, msg)) return false;
	else if(!isDate(obj.value)) {
			jsMessage(msg + " 날짜값이 되어야 합니다.");
			obj.focus();
			return false;
	}
	return true;
}


// 라디오 선택 확인
function isRadio(obj) {
	var flag = false;
	if (obj.length == 0) {
		flag = obj.checked;
	} else {
    	for (var i = 0; i < obj.length; i++) {
			if ((flag = obj[i].checked)) {
				break;
			}
		}
	}
	return flag;
}
//
// 폼에서 라디오 버튼을 선택했는지를 확인한다.
//
// @param obj 확인할 객체
// @param msg 오류시 출력할 객체 이름
//
function isFormRadio(obj, msg) {
	var flag = isRadio(obj);
  	if (!flag) {
		jsMessage(msg + " 선택하십시요.");
		obj[0].focus();
		return false;
	}
	return true;
}

//
// 폼에서 체크박스를 선택했는지를 확인한다.
//
// @param obj 확인할 객체
// @param msg 오류시 출력할 객체 이름
//
function isFormCheckBox(obj, msg) {
	var flag = false;
	if (obj.length === undefined) {
		flag = obj.checked;
	}
	else {
    	for (var i = 0; i < obj.length; i++)
			if ((flag = obj[i].checked))
				break;
	}
  	if (!flag) {
		jsMessage(msg + " 선택하십시요.");
		if (obj.length === undefined) {
			obj.focus();
		}
		else {
			obj[0].focus();
		}
		return false;
	}
	return true;
}


//
// 폼에서 SELECT를 선택했는지를 확인한다.
//
// @param obj 확인할 객체
// @param msg 오류시 출력할 객체 이름
//
function isFormSelect(obj, msg) {
	if (obj.selectedIndex == -1 ||
		isNull(obj.options[obj.selectedIndex].value)) {
		jsMessage(msg +" 선택하십시요.");
		obj.focus();
		return false;
	}
	return true;
}

//
// 문자열 길이 확인
//
function isStringLen(obj, len, msg) {
	if(!isFormNotNull(obj, msg)) return false;
	if(obj.length != len) {
		jsMessage(msg + " 올바르게 입력하십시요.");
		obj.focus();
		return false;
	}
	return true;
}

//
// 문자열 길이 확인
//
function isFormMinStringLen(obj, minlen, msg) {
	if(!isFormNotNull(obj, msg)) return false;
	if(obj.value.length < minlen) {
		//jsMessage(msg + " 올바르게 입력하십시요.");
		jsMessage(msg + " " + minlen +"자 이상 입력해주세요." );
		obj.focus();
		return false;
	}
	//else alert(obj.value.length);
	return true;
}


//
// 정수 길이 확인
//
function isFormNumericLen(obj, len, msg) {
	if(!isFormNotNull(obj, msg)) return false;
	if(!isFormNumber(obj, msg)) return false;
	if(obj.value.length != len) {
		jsMessage(msg + " 올바르게 입력하십시요.");
		obj.focus();
		return false;
	}
	return true;
}

//
// 정수 길이 확인
//
function isFormMaxNumericLen(obj, minlen, maxlen, msg) {
	if(!isFormNotNull(obj, msg)) return false;
	if(!isFormNumber(obj, msg)) return false;
	if(obj.value.length < minlen || obj.value.length > maxlen) {
		jsMessage(msg + " 올바르게 입력하십시요.");
		obj.focus();
		return false;
	}
	return true;
}

function isFormEmail(obj, msg) {
	if(!isEmail(obj.value)) {
		jsMessage(msg + " 올바르게 입력하십시요.");
		obj.focus();
		return false;
	}
	return true;
}

function isFormSepEmail(obj1, obj2, msg) {
	if(!isFormMinStringLen(obj1, 2, msg)) return false;
	if(!isFormMinStringLen(obj2, 6, msg)) return false;
	if(!isEmail(obj1.value + "@" + obj2.value)) {
		jsMessage(msg + " 올바르게 입력하십시요.");
		obj1.focus();
		return false;
	}
	return true;
}

//
// 주민등록번호 확인
//
function isFormResidenceNo(obj1, obj2, msg) {
	if(!isFormNumericLen(obj1, 6, msg)) return false;
	if(!isFormNumericLen(obj2, 7, msg)) return false;

	var jumin1 = obj1.value;
	var jumin2 = obj2.value;

	if(!(jumin2.charAt(0) == '1' || jumin2.charAt(0)  == '2' || jumin2.charAt(0) == '3' || jumin2.charAt(0) == '4')) {
		jsMessage("올바른 주민등록번호가 아닙니다.");
		obj1.focus();
		return false;
	}

	var sum = 0;
	sum += jumin1.charAt(0)*2;
	sum += jumin1.charAt(1)*3;
	sum += jumin1.charAt(2)*4;
	sum += jumin1.charAt(3)*5;
	sum += jumin1.charAt(4)*6;
	sum += jumin1.charAt(5)*7;

	sum += jumin2.charAt(0)*8;
	sum += jumin2.charAt(1)*9;
	sum += jumin2.charAt(2)*2;
	sum += jumin2.charAt(3)*3;
	sum += jumin2.charAt(4)*4;
	sum += jumin2.charAt(5)*5;

	var check = (11 - sum%11)%10;

	if(jumin2.charAt(6) != check) {
		jsMessage("올바른 주민등록번호가 아닙니다.");
		obj1.focus();
		return false;
	}
	return true;
}

function isFormValidFile(obj, file_ext, msg) {
	if(!isFormNotNull(obj, msg)) return false;
	if(obj.value.lastIndexOf(file_ext) < 0) {
		jsMessage(msg);
		return false;
	}
	return true
}

//
// 이미지 파일 인지 여부를 리턴
//
// @param f 파일이름
//
function isImgFile(f) {
	f = f.replace(/\\/g, "\\\\");
	var ext = f.substring(f.lastIndexOf(".")+1).toUpperCase();
	return (ext == "JPG" || ext=="JPEG" || ext=="GIF" || ext=="PNG")?true:false;
}

function isFormImgFile(obj, msg) {
	if(!isFormNotNull(obj, msg)) return false;
	if(!isImgFile(obj.value)) {
		jsMessage(msg + " 이미지만 선택하십시요.");
		return false;
	}
	return true;
}

// 글자의 길이 확인 (입력시)
function str_chkByte(chkObj,maxlength)
{

   var str     = chkObj.value; 
   var strlength = str.length;

   var chklength     = 0; 
   var cutlength      = 0;

   for(var i=0; i< strlength; i++) {
      chkchar= str.charAt(i);

      if (escape(chkchar).length > 4) {
         chklength += 2;
      } else {
         chklength++;
      }
      
      if(chklength <= maxlength) {
         cutlength = i + 1;
      }
   }
   
   if(chklength > maxlength) {
		if (!(cutlength % 2 == 0)) {
			cutlength = cutlength + 1;
		}
		chkObj.value = str.substring(0, cutlength);      
   }

   chkObj.focus();   
}


