<!--
/********************************************************************
*
* Form 관련 스크립트 함수 모음
*
*******************************************************************/

/* 폼 검증  함수
***************************************************************************************************************/
function checkForm(f){
	var fLen = f.elements.length;
	var fObj; // 폼 요소
	var fTyp; // 폼 요소 Type
	var fVal; // 폼 요소 Value
	var fMsg; // 경고 메시지 속성
	var fNum; // 숫자만 입력 속성
	var fMax; // 최대 길이 지정
	var fMin; // 최소 길이 지정
	var fMxN; // 최대값 지정
	var fMnN; // 최소값 지정
	var fMal; // 메일 FORMAT
	var fName; // 요소이름

	for(chk_i=0;chk_i<fLen;chk_i++){
		fObj = f.elements[chk_i];
		fTyp = toUpperCase(fObj.getAttribute("type"));
		fName = fObj.getAttribute("name");
		var Oname = document.getElementsByName(fName);
		fVal = Oname[0].value;
		fMsg = fObj.getAttribute("msg"); // 경고 메시지
		fNum = fObj.getAttribute("chknum"); // 숫자만 기입 가능하도록
		fMax = fObj.getAttribute("maxlen"); // 최대 입력byte 제한
		fMin = fObj.getAttribute("minlen"); // 최소 입력byte 제한
		fMxN = fObj.getAttribute("maxnum"); // 최대 숫자 제한
		fMnN = fObj.getAttribute("minnum"); // 최소 숫자 제한
		fRrn = fObj.getAttribute("chkrrn"); // 주민등록번호 체크
		fBrn = fObj.getAttribute("chkbrn"); // 사업자등록번호 체크
		fFrn = fObj.getAttribute("chkfrn"); // 외국인등록번호 체크
		fMal = fObj.getAttribute("chkmail"); // 이메일 체크
		fNE = fObj.getAttribute("chknumeng"); // 숫자,영문 가능 체크

		if(fMsg != null && (fTyp == "TEXT" || fTyp == "HIDDEN" || fTyp == "TEXTAREA" || fTyp == "PASSWORD") && fVal.replace(/ /gi,"") == ""){
			alert(fMsg + " is required");
			if(fTyp != "HIDDEN"){fObj.focus();}
			return false;
		}

		if(fMsg != null && (fTyp == "TEXT" || fTyp == "HIDDEN" || fTyp == "TEXTAREA" || fTyp == "PASSWORD") && fVal.replace(/ /gi,"") == ""){
			alert(fMsg + " is required");
			if(fTyp != "HIDDEN"){fObj.focus();}
			return false;
		}
		if(fMsg != null && (fTyp == "SELECT-ONE" || fTyp == "SELECT-MULTIPLE") && fVal ==""){
			alert( fMsg + " is required");
			fObj.focus(); return false;
		}
		if(fMsg != null && (fTyp == "RADIO" || fTyp == "CHECKBOX") && checkChecked(fObj) == false){
			alert(fMsg + " is required");
			fObj.focus(); return false;
		}
		if(fNum != null && isNaN(fVal)){
			alert("Input do as a favor with only number");
			fObj.focus(); return false;
		}
		if(fMin != null && fMin > getLen(fVal)){
			alert("입력된 글자의 byte가 "+fMin+"byte보다 커야합니다.");
			fObj.focus(); return false;
		}
		if(fMax != null && fMax < getLen(fVal)){
			alert("입력된 글자의 byte가 "+fMax+"byte보다 작아야합니다.\n(영문 "+fMax+"자, 한글 "+Math.floor(fMax/2)+"자 까지 가능합니다.)");
			fObj.focus(); return false;
		}
		if(fMxN != null && parseInt(fMxN) < parseInt(fVal)){
			alert("입력된 숫자는 "+fMxN+"보다 작아야합니다.");
			fObj.focus(); return false;
		}
		if(fMnN != null && parseInt(fMnN) > parseInt(fVal)){
			alert("입력된 숫자는 "+fMnN+"보다 커야합니다.");
			fObj.focus(); return false;
		}
		if(fRrn != null && checkRRN(f) == false && fVal != ""){
			alert("주민등록번호가 올바르지 않습니다");
			fObj.focus(); return false;
		}
		if(fBrn != null && checkBRN(fVal) == false && fVal != ""){
			alert("사업자등록번호가 올바르지 않습니다");
			fObj.focus(); return false;
		}
		if(fFrn != null && checkFRN(fVal) == false && fVal != ""){
			alert("외국인등록번호가 올바르지 않습니다");
			fObj.focus(); return false;
		}
		if(fMal != null && CheckEmail_new(f) == false && fVal != ""){
			alert("This mail address is not proper ");
			fObj.focus(); return false;
		}
		if(fNE != null && Check_ID(fVal) == false && fVal != ""){
			alert("Only English or number input do as a favor");
			fObj.focus(); return false;
		}
		
	}
	return true;
}


// 배열 요소일 경우 checked 된것이 있는지 확인
function checkChecked(obj){
	var fname = obj.form.name;
	var objnm = obj.name;
	var oElem = eval(fname+"."+objnm);
	var ret = false;

	if(typeof(oElem.length) == "undefined"){
		if(oElem.checked){
			ret = true;
		}
	} else{
		for(var i=0;i<oElem.length;i++){
			if(oElem[i].checked){
				ret = true;
			}
		}
	}
	return ret;
}

/* 유효성 체크
**************************************************************************************************************/

// 주민번호(국내) 체크
function checkRRN(f){
	var juminno = f.Jumin1.value+f.Jumin2.value;
	if(juminno=="" || juminno==null || juminno.length!=13){ return false; }
	var jumin1 = juminno.substr(0,6);
	var jumin2 = juminno.substr(6,7);
	var yy = jumin1.substr(0,2);	// 년도
	var mm = jumin1.substr(2,2);	// 월
	var dd = jumin1.substr(4,2);	// 일
	var genda = jumin2.substr(0,1);	// 성별
	var msg, ss, cc;

	if(!isNumeric(jumin1)){ return false;}
	if(jumin1.length != 6){ return false; }
	if(yy < "00" || yy > "99" || mm < "01" || mm > "12" || dd < "01" || dd > "31"){ return false; }
	if(!isNumeric(jumin2)){ return false; }
	if(jumin2.length != 7){ return false; }
	if(genda < "1" || genda > "4"){ return false; }
	cc = (genda == "1" || genda == "2") ? "19" : "20";
	if(isYYYYMMDD(parseInt(cc+yy), parseInt(mm), parseInt(dd)) == false){ return false; }
	if(!isSSN(jumin1, jumin2)){ return false; }
	return true;
}

// 재외국인 번호 체크
function checkFRN(fgnno){
	var fgnno =  f.Jumin1.value+f.Jumin2.value;
	var sum=0;
	var odd=0;
	buf = new Array(13);
	for(i=0; i<13; i++){ buf[i]=parseInt(fgnno.charAt(i)); }
	odd = buf[7]*10 + buf[8];
	if(odd%2 != 0){ return false; }
	if((buf[11]!=6) && (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9) ){
		return false;
	}
	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]); }
	sum = 11 - (sum%11);
	if(sum >= 10){ sum -= 10; }
	sum += 2;
	if(sum >= 10){ sum -= 10; }
	if(sum != buf[12]){ return false }
	return true;
}



// 사업자등록번호 유효성 체크(Business Registration Number)
function checkBRN(brn){
	var sum = 0;
	var getlist =new Array(10);
	var chkvalue =new Array("1","3","7","1","3","7","1","3","5");
	for(var i=0; i<10; i++){ getlist[i] = brn.substring(i, i+1); }
	for(var i=0; i<9; i++){ sum += getlist[i]*chkvalue[i]; }
	sum = sum + parseInt((getlist[8]*5)/10);
	sidliy = sum % 10;
	sidchk = 0;
	if(sidliy != 0){ sidchk = 10 - sidliy; }
	else { sidchk = 0; }
	if(sidchk != getlist[9]){ return false; }
	return true;
}

function CheckEmail_new(f) {
  var err_cnt=0

	var input = f.Email1.value+"@"+f.Email2.value;

  if (input.length > 0) {
     if (input.indexOf("@") == -1 || input.indexOf(".") == -1) err_cnt ++;
     if (err_cnt != 0 ) return false;

	 if ((input.indexOf(".@") != -1) || (input.indexOf("@.") != -1) ||
	     (input.substring(0,1) == ".") || (input.substring(0,1) == "@") ||
		 (input.substring(input.length-1,input.length) == ".") ||
		 (input.substring(input.length-1,input.length) == "@")) {
		err_cnt ++;
     }
     if (err_cnt != 0 ) return false;

     for (i=0; i < input.length; i++) {
         var val = input.charAt(i);
         if (!((input.substring(i,i+1) == "@") || (input.substring(i,i+1) == ".") ||
               (input.substring(i,i+1) == "-") || (input.substring(i,i+1) == "_") ||
               (val >= "0" && val <= "9") || (val >= "a" && val <= "z") || (val >= "A" && val <= "Z"))) err_cnt ++;
     }
     if (err_cnt != 0 ) return false;
  } else err_cnt ++;

  if (err_cnt == 0 ) return true;
  else return false;
}

// 이메일 유효성 체크
function checkEmail(str){
	var reg = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
	if(str.search(reg) != -1){
		return true;
	}
	return false;
}

/* 한글/영문/숫자 입력제한 함수 (지정된 것 제외하고 나머지는 무시)
**************************************************************************************************************/
// 숫자입력제어
function pub_chkKeyPress(chkType){
	// delete control key 와 상하좌우 허용함.
	// Delete = 46, BackSpace=8 , Tab=9 , left-right=37-40 Enter = 13 

	if( ((event.keyCode>=37)&&(event.keyCode<=40))||((event.keyCode>=8)&&(event.keyCode<=9))||(event.keyCode==46) ) {
		return true;
	}
	if(chkType==1){
		if( ( (event.keyCode>=48)&&(event.keyCode<=57) ) || ( (event.keyCode>=96)&&(event.keyCode<=105) ) ) 
		{
			return true;
		}	
		else
		{
			event.returnValue=false;
			return false;
		} 
	}
// 숫자만 입력
	if(chkType==3){
		if( ( (event.keyCode>=48)&&(event.keyCode<=57) ) || ( (event.keyCode>=96)&&(event.keyCode<=105) ) || ((event.keyCode >= 188)&&(event.keyCode <= 188))) 
		{
			return true;
		}	
		else
		{
			event.returnValue=false;
			return false;
		} 
	}
// 숫자,- 만 입력
	if(chkType==4){
		if( ( (event.keyCode>=48)&&(event.keyCode<=57) ) || ( (event.keyCode>=96)&&(event.keyCode<=105) ) || ((event.keyCode >= 189)&&(event.keyCode <= 189)) || ((event.keyCode >= 109)&&(event.keyCode <= 109))) 
		{
			return true;
		}	
		else
		{
			event.returnValue=false;
			return false;
		} 
	}
}

// 한글만 입력
function chkHan(this_s,type){
	temp_value = this_s.value.toString();
	regexp = '';
	repexp = '';
	switch(type){
		case 'c': regexp = /[^ㄱ-ㅎ가-힣]/g;break;
		case 's': regexp = /[^ㄱ-ㅎ가-힣\s]/g;break;
		case '':	regexp = /[^가-힣]/g; break;
		default : regexp = /[^ㄱ-ㅎ가-힣\s]/g;
	}
	if(regexp.test(temp_value)){
		temp_value = temp_value.replace(regexp,repexp);
		this_s.value = temp_value;
	}
}
/*
type
-> 'c' : 초성 포함
-> 's' : 초성 포함 + 공백 포함
-> '' : 초성, 공백 무시

사용예)
초성, 공백 무시
onkeyup = "chkHan(this, '');"
초성 포함
onkeyup = "chkHan(this, 'c');"
초성, 공백 포함
onkeyup = "chkHan(this, 's');"
*/

// 숫자만 입력받기
function chkNum(this_s,type){
	temp_value = this_s.value.toString();
	regexp = /[^-\.0-9]/g;
	repexp = '';
	temp_value = temp_value.replace(regexp,repexp);
	regexp = '';
	repexp = '';
	switch(type){
		case 'int':	 regexp = /[^0-9]/g; break;
		case 'float':regexp = /^(-?)([0-9]*)(\.?)([^0-9]*)([0-9]*)([^0-9]*)/; break;
		case '-int':	regexp = /^(-?)([0-9]*)([^0-9]*)([0-9]*)([^0-9]*)/;break;
		case '-float':regexp = /^(-?)([0-9]*)(\.?)([^0-9]*)([0-9]*)([^0-9]*)/; break;
		default : regexp = /[^0-9]/g; break;
	}
	switch(type){
		case 'int':repexp = '';break;
		case 'float':repexp = '$2$3$5';break;
		case '-int':	repexp = '$1$2$4';break;
		case '-float':repexp = '$1$2$3$5'; break;
		default : regexp = /[^0-9]/g; break;
	}
	temp_value = temp_value.replace(regexp,repexp);
	this_s.value = temp_value;
}
/*
type
-> '', 'int' : 양의 정수
-> 'float' : 양의 실수
-> '-int' : 음의 정수 포함
-> '-int' : 음의 실수 포함

사용예)
양의 정수만
onkeyup = "chkNum(this, '');"
양의 실수만
onkeyup = "chkNum(this, 'float');"
정수만
onkeyup = "chkNum(this, '-int');"
실수만
onkeyup = "chkNum(this, '-float');"
*/

// 영어만 입력받기  (대소문자)
function chkEng(this_s,type){
	temp_value = this_s.value.toString();
	regexp = '';
	repexp = '';
	switch(type){
		case 'small':regexp = /[^a-z]/g;break;
		case 'big':regexp = /[^A-Z]/g;break;
		case 'all':regexp = /[^a-z]/i;break;
		default :regexp = /[^a-z]/i;break;
	}
	temp_value = temp_value.replace(regexp,repexp);
	this_s.value = temp_value;
}
/*
type
-> '', 'all' : 모두
-> 'small' : 소문자
-> 'big' : 대문자

사용예)
모두
onkeyup = "chkEng(this, '');"
소문자만
onkeyup = "chkEng(this, 'small');"
대문자만
onkeyup = "chkEng(this, 'big');"
*/

// 영어와 숫자만 입력받기
function chkNumEng(this_s){
	temp_value = this_s.value.toString();
	regexp = /[^0-9a-zA-Z]/g;
	repexp = '';
	temp_value = temp_value.replace(regexp,repexp);
	this_s.value = temp_value;
}
/*
사용예)
onkeyup = "chkNumEng(this);"
*/

// 영어와 숫자, 언더바만 입력받기
function chkNumEngUbar(this_s){
	temp_value = this_s.value.toString();
	regexp = /[^0-9a-zA-Z_]/g;
	repexp = '';
	temp_value = temp_value.replace(regexp,repexp);
	this_s.value = temp_value;
}
/*
사용예)
onkeyup = "chkNumEngUbar(this);"
*/

//ID 영문+숫자만 입력체크
function Check_ID(input) {
  var err_cnt=0
  for (var i = 0; i < input.length; i++) {
      var val = input.charAt(i);
      if (!((val >= "0" && val <= "9") || (val >= "a" && val <= "z") || (val >= "A" && val <= "Z"))) err_cnt ++;
  }
  if (err_cnt == 0 ) {
     return true;
  } else {
     return false;
  }
}
/* 기타함수
**************************************************************************************************************/

// 폼에 해당하는 컨트롤들의 기본값 쉽게 셋팅해 주기
function initForm(f){
	var nLen; // form 요소의 갯수
	var ival; // 각 요소의 default value 값 즉! 초기화하고자 하는값
	var fTyp; // form 요소의 타입(select, radio, checkbox...)

	for(var i = 0; i < f.elements.length; i++){
		fTyp = toUpperCase(f.elements[i].type);
		ival = f.elements[i].ival;

		if(ival && fTyp == "SELECT-ONE"){
			nLen = f.elements[i].options.length;
			for(var j = 0; j < nLen; j++){
				if(f.elements[i].options[j].value == ival)
					f.elements[i].options[j].selected = true;
			}
		}
		if(fTyp == "SELECT-MULTIPLE"){
			nLen = f.elements[i].options.length;
			for(var j = 0; j < nLen; j++){
				if(f.elements[i].options[j].value == f.elements[i].options[j].ival)
					f.elements[i].options[j].selected = true;
			}
		}
		if(ival &&(fTyp == "RADIO" || fTyp == "CHECKBOX")){
			if(f.elements[i].value == ival)
				f.elements[i].checked = true;
		}
	}
	return true;
}

// 문자 길이 반환(영문 1byte, 한글 2byte 계산)
function getLen(str){
	var strLen = str.length;
	var cnt = 0;

	for(k=0; k<strLen; k++){
		var temp = str.charAt(k);
		if(escape(temp).length > 4)
			cnt += 2;
		else if(temp != '\r')
			cnt++;
	}
	return cnt;
}

// 바이트로 입력제한(초과분 자동삭제)
function cutByte(f, maxByte){
	var str = new String(f.value);
	var strLen = str.length;
	var strByte = getLen(str);
	var cnt = 0;

	if(strByte > maxByte){
		var overByte = strByte-maxByte;
		alert("내용을 "+maxByte+"byte 이상 입력하실 수 없습니다.\n입력하신 내용 중 초과 "+overByte+"byte는 자동 삭제 됩니다.");
	}

	for(k=0; k<strLen; k++){
		if(cnt < maxByte){
			var temp = str.charAt(k);
			if(escape(temp).length > 4)
				cnt += 2;
			else if(temp != '\r')
				cnt++;
		}else{
			str = str.substring(0, k);
			if((maxByte%2) == 1){
				strLen = str.length-1;
				if(escape(str.charAt(strLen)).length > 4){
					str = str.substring(0,strLen);
				}
			}
			f.value = str;
			break;
		}
	}
}

// 대문자 변환 ex) toUpperCase(문자)
function toUpperCase(str){
	var ret;
	str != null ? ret = str.toUpperCase() : ret = "";
	return ret;
}

// 포커스 변경
function moveFocus(num,fromform,toform){
	var str = fromform.value.length;
	if(str == num) toform.focus();
}

// 이메일선택입력
function inputDomain(f, domain){
	if(domain){
		f.email2.value = domain;
	}else{
		f.email2.value = "";
		f.email2.focus();
	}
}

// 파일폼 직접입력 제한
function filePretect(){
	alert("찾아보기를 이용해 주세요.");
	event.returnValue = false;
}

// 로그인 정보 저장
function confirmSave(checkbox)
{
  var isRemember;
  
  // 로그인 정보 저장한다고 선택할 경우
  if(checkbox.checked)
  {
    isRemember = confirm("이 PC에 로그인 정보를 저장하시겠습니까? \n\nPC방등의 공공장소에서는 개인정보가 유출될 수 있으니 주의해주십시오.");
    
    if(!isRemember)
      checkbox.checked = false;
  }
}
 
// 쿠키값 가져오기
function getCookie(key)
{
  var cook = document.cookie + ";";
  var idx =  cook.indexOf(key, 0);
  var val = "";
 
  if(idx != -1)
  {
    cook = cook.substring(idx, cook.length);
    begin = cook.indexOf("=", 0) + 1;
    end = cook.indexOf(";", begin);
    val = unescape( cook.substring(begin, end) );
  }
 
  return val;
}
 
// 쿠키값 설정
function setCookie(name, value, expiredays)
{
  var today = new Date();
  today.setDate( today.getDate() + expiredays );
  document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + today.toGMTString() + ";"
}
 
// 쿠키에서 로그인 정보 가져오기
function getLogin()
{
 var frm = document.sub_LogForm;
 
 // userid 쿠키에서 id 값을 가져온다.
 var id = getCookie("userid");
 
 // 가져온 쿠키값이 있으면
 if(id != "")
 {
  frm.log_id.value = id;
  frm.saveid.checked = true;
 }
}
 
// 쿠키에 로그인 정보 저장
function saveLogin(id)
{
 if(id != "")
 {
  // userid 쿠키에 id 값을 7일간 저장
  setCookie("userid", id, 90);
 }else{
  // userid 쿠키 삭제
  setCookie("userid", id, -1);
 }
}
//-->