/*
	@(#)util.js

	유틸리티
	
	@author		김경민
	@version	1.0, 2004/03/07 파일 작성
*/

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);
	alert(msg);
}

//
// 메세지 확인후 URL로 이동
//
function js_url(msg, url) {
	alert(msg);
	location.href= url;
}


function js_pop_url(msg, url) {
	if (msg != "")
	{
		alert(msg);
	}
	opener.location.href = url;
	self.close();
}

//
// 삭제확인
//
function checkDelete() {
    var val1 = confirm("확인:\n\n정말 삭제하겠습니까?");
    return val1;
}

//
// 변경 확인
//
function checkModify() {
	var val1 = confirm("확인:\n\n변경하시겠습니까?");
	return val1;
}

//
// 확인
//
function checkConfirm(msg) {
	var val1 = confirm(msg);
	return val1;
}

//
// 공백제거
//
function trim(str) {
	return str.replace(/(^\s*)|(\s*$)/g, "");
}

//
// 한글 여부 확인
//
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 isNumber(str) {
  num = "0123456789";

  for(i=0;i<str.length;i++) {
   if (num.indexOf(str.substring(i,i+1)) < 0){
	    return false;
   }
  }
  return true;
 }

function isSpace(str) {
	if(str.indexOf(" ") != -1) {
		return true;
	}
	return false;
}

//
// 빈공백 삭제
//
function removeSpace(str) {
	if(str.indexOf(" ") != -1) {
		str = str.replace(/\s/gi, "" );
	}
	return str;
}

//
// 특수문자 삭제
//
function removeSpecialChars(str) {
    var specialChars='~`!@#$%%^&*-=+\|[{]};:\',<.>/?';
	var i, j;
    for (i = 0; i < str.length; i++) {
      for (j = 0; j < specialChars.length; j++) {
        if (str.charAt(i) == specialChars.charAt(j))
	      str = str.replace(str.charAt(i), "");
      }
    }
	return str;
}

function isNull(str) {
	if(str == null || str.length == 0 || str == "" || 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;
}

// 지정한 문자열이 주민등록번호인지를 확인한다.
function isRegistNumber(str) {
	var ssn = str
	var mm = str.substring(2,4);
	var dd = str.substring(4,6);

	if (mm > 12 || dd > 31)
		return false;

	if (ssn.length != 13) 
		return false;

	tval = ssn.charAt(0)*2 + ssn.charAt(1)*3 + ssn.charAt(2)*4 + ssn.charAt(3)*5 + ssn.charAt(4)*6 + ssn.charAt(5)*7 + ssn.charAt(6)*8 + ssn.charAt(7)*9 + ssn.charAt(8)*2 + ssn.charAt(9)*3 + ssn.charAt(10)*4 + ssn.charAt(11)*5;
	tval2 = 11- (tval % 11);
	tval2 = tval2 % 10;
	
	if (ssn.charAt(12) == tval2 &&  (ssn.charAt(6) == "1" || ssn.charAt(6) == "2" || ssn.charAt(6) == "3" || ssn.charAt(6) == "4")) {
		return true;
	} else {
		return false ;
	}
}

// 지정한 문자열이 아이디로 적합한지 확인한다.
function isId(str)
{
	var s = String(str);
	return s.match(/^[A-Za-z0-9]{3,12}$/);
}

// 지정한 문자열이 패스워드로 적합한지 확인한다.
function isPasswd(str)
{
	var s = String(str);
	return s.match(/^[A-Za-z0-9]{6,12}$/);
}

// 지정한 문자열이 이메일인지를 확인한다.
function isEmail(str)
{
	var s = String(str);
	return s.match(/^[A-Za-z0-9._-]+@([A-Za-z0-9_-]+\.)+[A-Za-z0-9_-]+\.?$/);
}

//
// 지정한 문자열이 날짜인지를 확인한다. 여기에서는 날짜 형식을
// 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 isFormRegistNumber(obj, msg) {

	if(!isFormNotNull(obj, msg)) return false;

	else if(!isRegistNumber(obj.value)) {
			jsMessage("필수 항목인 " + msg + "은(는) 올바른 주민등록번호로 넣어주시기 바랍니다.");
			obj.focus();
			return false;
	}
	return true;
}


//
// 폼에서 지정한 객체가 아이디로 적합한지를 확인한다.
//
// @param obj 확인할 객체
// @param msg 오류시 출력할 객체 이름
//
function isFormId(obj, msg) {

	if(!isFormNotNull(obj, msg)) return false;

	else if(!isId(obj.value)) {
			jsMessage("필수 항목인 " + msg + "은(는) 적합한 아이디로 넣어주시기 바랍니다.\n\n아이디는 영문자, 숫자을 사용하여\n\n최소 3글자, 최대 12글자까지 가능합니다.");
			obj.focus();
			return false;
	}
	return true;
}


//
// 폼에서 지정한 객체가 패스워드로 적합한지를 확인한다.
//
// @param obj 확인할 객체
// @param msg 오류시 출력할 객체 이름
//
function isFormPasswd(obj, msg) {

	if(!isFormNotNull(obj, msg)) return false;

	else if(!isPasswd(obj.value)) {
			jsMessage("필수 항목인 " + msg + "은(는) 적합한 패스워드로 넣어주시기 바랍니다.\n\n패스워드는 영문자, 숫자을 사용하여\n\n최소 6글자, 최대 12글자까지 가능합니다.");
			obj.focus();
			return false;
	}
	return true;
}


//
// 폼에서 지정한 객체가 이메일인지를 확인한다.
//
// @param obj 확인할 객체
// @param msg 오류시 출력할 객체 이름
//
function isFormEmail(obj, msg) {
	if(!isFormNotNull(obj, msg)) return false;
	else 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;
}

//
// 폼에서 지정한 객체가 날짜인지를 확인한다.
//
// @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;
}

//
// 폼에서 라디오 버튼을 선택했는지를 확인한다.
//
// @param obj 확인할 객체
// @param msg 오류시 출력할 객체 이름
//
function isFormRadio(obj, msg) {
	var flag = false;
	if (!obj.length)
		flag = obj.checked;
	else {
    	for (var i = 0; i < obj.length; i++)
			if ((flag = obj[i].checked))
				break;
	}
  	if (!flag) {
		jsMessage("필수 항목인 " + msg + "을(를) 선택하십시요.");
		return false;
	}
	return true;
}

//
// 폼에서 라디오 버튼을 선택한 값을 호출한다.
//
// @param obj 확인할 객체
//
function valueFormRadio(obj) {
	var val;

	if (!obj.length) {
		if(obj.checked = true)
			val = obj.value;
	}else {
    	for (var i = 0; i < obj.length; i++) {
			if (obj[i].checked = true) {
				val = obj[i].value;
				break;
			}
		}
	}

	return val;
}


//
// 폼에서 체크박스를 선택했는지를 확인한다.
//
// @param obj 확인할 객체
// @param msg 오류시 출력할 객체 이름
//
function isFormCheckBox(obj, msg) {
	var flag = false;
	if (!obj.length)
		flag = obj.checked;
	else {
    	for (var i = 0; i < obj.length; i++)
			if ((flag = obj[i].checked))
				break;
	}
  	if (!flag) {
		jsMessage("필수 항목인 " + msg + "을(를) 선택하십시요.");
		return false;
	}
	return true;
}

//
// 폼에서 체크박스를 몇개 선택했는지 확인한다.
//
// @param obj 확인할 객체
//
function cntFormCheck(obj) {
	var flag = false;
	var cnt = 0

   	for (var i = 0; i < obj.length; i++) {
		if ((flag = obj[i].checked)) {
			cnt++;
		}
	}

	return cnt;
}

//
// 폼에서 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 isFormMinStringLen(obj, minlen, msg) {
	if(!isFormNotNull(obj, msg)) return false;
	if(obj.value.length < minlen) {
		jsMessage(msg + " 올바르게 입력하십시오.");
		obj.focus();
		return false;
	}
	//else alert(obj.value.length);
	return true;
}

function isFormMaxStringLen(obj, maxlen, msg) {
	if(!isFormNotNull(obj, msg)) return false;
	if(obj.value.length > maxlen) {
		jsMessage(msg + maxlen+"자 이내로 작성하시기 바랍니다.");
		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 valueFormRadio(obj)
{
	var flag = false;
	var ret = "";

	if (!obj.length) {
		flag = obj.checked;
		if(flag) {
			ret = obj.value;
		}
	}
	else {
    	for (var i = 0; i < obj.length; i++) {
			if ((flag = obj[i].checked)) {
		        ret = obj[i].value;
				break;
			}
		}
	}
	return ret;
}

// 이미지 사이즈 조절 
// @param img 이미지 객체
// @param default_width 이미지 최대 Width Size
// @param default_height 이미지 최대 Height Size

function GetImageSize(img, default_width, default_height)
{
	var value_width, value_height;
	var cal_width, cal_height, ratio;
	var ret_width, ret_height;

	value_width = img.width;
	value_height = img.height;

	cal_width = default_width - value_width;
	cal_height = default_height - value_height;

	if (cal_width < 0 && cal_height < 0) {
	  if (cal_width < cal_height) {
		ratio = default_width/value_width;
		ret_width = default_width;
		ret_height = parseInt(value_height * ratio);
	  } else {
		ratio = default_height/value_height;
		ret_width = parseInt(value_width * ratio);
		ret_height = default_height;
	  }
	} else if (cal_width < 0 && cal_height > 0) {
	  ratio = default_width/value_width;
	  ret_width = default_width;
	  ret_height = parseInt(value_height * ratio);
	} else if (cal_width > 0 && cal_height < 0) {
	  ratio = default_height/value_height;
	  ret_width = parseInt(value_width * ratio);
	  ret_height = default_height;
	} else {
	  ret_width = value_width;
	  ret_height = value_height;
	}

	img.width = ret_width;
	img.height = ret_height;
}



// 이미지 사이즈 조절 (Width)
// @param img 이미지 객체
// @param default_width 이미지 최대 Width Size

function getImageWidth(img, default_width)
{
	var value_width, value_height;
	var cal_width, cal_height, ratio;
	var ret_width, ret_height;

	value_width = img.width;
	value_height = img.height;

	cal_width = default_width - value_width;

	if (cal_width < 0) {
		ratio = default_width/value_width;
		ret_width = default_width;
		ret_height = parseInt(value_height * ratio);

	} else {
	  ret_width = value_width;
	  ret_height = value_height;
	}

	img.width = ret_width;
	img.height = ret_height;
}


extArray = new Array(".gif", ".jpg");
function limitAttach(form, file) 
{
	allowSubmit = false;
	if (!file) return;
	while (file.indexOf("\\") != -1)
	file = file.slice(file.indexOf("\\") + 1);
	ext = file.slice(file.indexOf(".")).toLowerCase();
	for (var i = 0; i < extArray.length; i++) {
		if (extArray[i] == ext) { allowSubmit = true; break; }
	}
	if (allowSubmit) return true;
	else {
		alert("업로드가 지원되는 파일형식은 " 
		+ (extArray.join(" ")) + " 입니다."
		+ "\n\n파일형식을 확인해보시기 바랍니다.");
		return false;
	}
}


function chkAttach(form, file, extStr) 
{
	extArr = extStr.split("|");
	allowSubmit = false;
	if (!file) return;
	while (file.indexOf("\\") != -1)
	file = file.slice(file.indexOf("\\") + 1);
	ext = file.slice(file.indexOf(".")).toLowerCase();
	for (var i = 0; i < extArr.length; i++) {
		if (extArr[i] == ext) { allowSubmit = true; break; }
	}
	if (allowSubmit) return true;
	else {
		alert("업로드가 지원되는 파일형식은 " 
		+ (extArr.join(" ")) + " 입니다."
		+ "\n\n파일형식을 확인해보시기 바랍니다.");
		return false;
	}
}


var chkFlag = false;

function stateChk(f)
{
	if(chkFlag == false) {
    allChk(f);
    chkFlag = true;
//    return "해제";
	}
	else {
    disChk(f);
    chkFlag = false;
//    return "선택";
	}
}


function allChk(f)
{
	for( var i=0; i<f.elements.length; i++) {
		var ele = f.elements[i];
		if(ele.name == 'CHECKID') {
			ele.checked = true;
   		//ele.disabled = true;
    }
	}
	return;
}

function disChk(f)
{
	for( var i=0; i<f.elements.length; i++) {
		var ele = f.elements[i];
		if(ele.name == 'CHECKID')
			ele.checked = false;
   		//ele.disabled = false;
	}
	return;
}

function moveNext(num, from, to) {
	var len = from.value.length;
	if (len == num)
		to.focus ();
}

function setCookieTime(name, value, mSecond) {
	var today = new Date();
	var expire = new Date(today.getTime() + mSecond);

	window.document.cookie = name + "=" + escape(value) + ((expire)?"; expires=" + expire.toGMTString(): "");
}

function setCookie(name, value, days) {
	setCookieTime(name, value, days*24*60*60*1000);
}

function getCookie(uName) {
	var strCookie = " " + window.document.cookie;
	var ptrFr = strCookie.indexOf(" " + uName + '=');

	if(ptrFr != -1) {
		ptrFr = ptrFr + uName.length + 2;
		ptrTo = strCookie.indexOf(';', ptrFr);

		if(ptrTo == -1) {
			ptrTo = strCookie.length;
 		}
		return unescape(strCookie.substring(ptrFr, ptrTo));
	} else {
		return "";
	}
}

// 팝업 창 중앙으로 띄우기
// 보정값은 현재 20
//
// @param url URL
// @param wname 창 이름
// @param w 창 너비
// @param h 창 높이
//
// @param 창 인스턴스
//
function html_popupCenterWindow(url, wname, w, h, f) {
	var gab = 20;
	var wx = (window.screen.width-w)/2 -(200);
	var wy = (window.screen.height-h)/2;
	if(wy > gab) {
	wy -= gab;
	}
	var features = "width="+w+",height="+h+",left="+wx+",top="+wy;
	if (f != null)
		features += "," + f;
	var p=window.open(url, wname, features);
	p.focus();
	return p;
}
function html_popupCenterWindow1(url, wname, w, h, l, t, f) {
	var gab = 20;
	var wx = (window.screen.width/2)+(l/2)+20-(200);
	var wy = (window.screen.height-(h-t))/2;
	if(wy > gab) {
	wy -= gab;
	}
	var features = "width="+w+",height="+h+",left="+wx+",top="+wy;
	if (f != null)
		features += "," + f;
	var p=window.open(url, wname, features);
	p.focus();
	return p;
}
