//<------------- 텍스트 박스 문자열 길이 반환
function updateChar(obj, length_limit) {
   var length = calculate_msglen(obj.value);
//   textlimit.innerText = length;
   if (length > length_limit) {
       alert("최대 " + length_limit + "byte이므로 초과된 글자수는 자동으로 삭제됩니다.");
       obj.value = obj.value.replace(/\r\n$/, "");
       obj.value = assert_msglen(obj.value, length_limit);
   }
}

function calculate_msglen(message) {
   var nbytes = 0;

   for (i=0; i<message.length; i++) {
       var ch = message.charAt(i);
       if(escape(ch).length > 4) {
           nbytes += 2;
       } else if (ch == '\n') {
           if (message.charAt(i-1) != '\r') {
               nbytes += 1;
           }
       } else if (ch == '<' || ch == '>') {
           nbytes += 4;
       } else {
           nbytes += 1;
       }
   }

   return nbytes;
}

function assert_msglen(message, maximum) {
   var inc = 0;
   var nbytes = 0;
   var msg = "";
   var msglen = message.length;

   for (i=0; i<msglen; i++) {
       var ch = message.charAt(i);
       if (escape(ch).length > 4) {
           inc = 2;
       } else if (ch == '\n') {
           if (message.charAt(i-1) != '\r') {
               inc = 1;
           }
       } else if (ch == '<' || ch == '>') {
           inc = 4;
       } else {
           inc = 1;
       }
       if ((nbytes + inc) > maximum) {
           break;
       }
       nbytes += inc;
       msg += ch;
   }
//   textlimit.innerText = nbytes;
   return msg;
}

//한글/영문 문자열 바이트 반환
function doMessage(lenght_limit, contentid, byteid) {
	var memocontent = document.getElementById(contentid);
	var str = memocontent.value;
	var strlen = getStrByte(str);
	var byte = document.getElementById(byteid);
	byte.innerHTML = strlen;
	if(strlen > lenght_limit) {
		alert("최대"+lenght_limit+"byte이므로 초과된 글자수는 자동으로 삭제됩니다.");
		str = str.replace(/\r\n$/,"");
		memocontent.value = assert_msglen(str,lenght_limit);
		byte.innerHTML = lenght_limit;
	}
}

//바이트 계산 함수
function getStrByte(str) {
	var nbytes = 0;
	for(var i = 0 ; i < str.length ; i++) {
		var ch = str.charAt(i);
		if(escape(ch).length > 4) {
//			nbytes += 1;
			nbytes += 2;
		} else if(ch == '\n') {
			if(str.charAt(i-1) != '\r') {
//				nbytes += 0.5;
				nbytes += 1;
			}
		} else if(ch == '<' || ch == '>') {
//			nbytes += 4;
			nbytes += 2;
		} else {
//			nbytes += 0.5;
			nbytes += 1;
		}
	}
	return nbytes;
}

function ssncheck(obj_form) {
	var f = obj_form;
	if(!nullChk(f.ssn1, "주민등록번호 앞자리를"))
		return false;
	if(!nullChk(f.ssn2, "주민등록번호 뒷자리를"))
		return false;
	var s1 = f.ssn1.value;
	var s2 = f.ssn2.value;
	
	var n1 = s2.charAt(0);

	if((n1 == 5) || (n1 == 6) || (n1 == 7) || (n1 == 8)) {
		if(!isRegNo_fgnno(s1.concat(s2))) {
			alert("올바른 주민등록번호가 아닙니다.");
			f.ssn1.value = '';
			f.ssn2.value = '';
			f.ssn1.focus();
			return false;
		} else {
			return true;
		}
	} else {
		var hap = 0;
		for (var i = 0; i < 6; i++) {
			var temp = s1.charAt(i)*(i+2);
			hap += temp;
		}
		var n1 = s2.charAt(0);
		var n2 = s2.charAt(1);
		var n3 = s2.charAt(2);
		var n4 = s2.charAt(3);
		var n5 = s2.charAt(4);
		var n6 = s2.charAt(5);
		var n7 = s2.charAt(6);
	
		hap += n1*8 + n2*9 + n3*2 + n4*3 + n5*4 + n6*5;
		hap %= 11;
		hap = 11 - hap;
		hap %= 10;
	
		if(hap != n7) {
			alert("올바른 주민등록번호가 아닙니다.");
			f.ssn1.value = '';
			f.ssn2.value = '';
			f.ssn1.focus();
			return false;
		} else {
			return true;
		}
	}
}

function ssncheck_sexy(obj_form) {
	var f = obj_form;
	if(!nullChk_sexy(f.ssn1, "주민등록번호 앞자리를"))
		return false;
	if(!nullChk_sexy(f.ssn2, "주민등록번호 뒷자리를"))
		return flase;
	var s1 = f.ssn1.value;
	var s2 = f.ssn2.value;
	
	var n1 = s2.charAt(0);

	if((n1 == 5) || (n1 == 6) || (n1 == 7) || (n1 == 8)) {
		if(!isRegNo_fgnno(s1.concat(s2))) {
			Sexy.info("<h1>올바른 주민등록번호가 아닙니다.</h1>");
			f.ssn1.value = '';
			f.ssn2.value = '';
//			f.ssn1.focus();
			return false;
		} else {
			return true;
		}
	} else {
		var hap = 0;
		for (var i = 0; i < 6; i++) {
			var temp = s1.charAt(i)*(i+2);
			hap += temp;
		}
		var n1 = s2.charAt(0);
		var n2 = s2.charAt(1);
		var n3 = s2.charAt(2);
		var n4 = s2.charAt(3);
		var n5 = s2.charAt(4);
		var n6 = s2.charAt(5);
		var n7 = s2.charAt(6);
	
		hap += n1*8 + n2*9 + n3*2 + n4*3 + n5*4 + n6*5;
		hap %= 11;
		hap = 11 - hap;
		hap %= 10;
	
		if(hap != n7) {
			Sexy.info("<h1>올바른 주민등록번호가 아닙니다.</h1>");
			f.ssn1.value = '';
			f.ssn2.value = '';
//			f.ssn1.focus();
			return false;
		} else {
			return true;
		}
	}
}

function isRegNo_fgnno(fgnno) { 
	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; 
} 


//빈칸 확인
NullChk_obj = function(obj) {
	if (obj.val().replace(/\s/g, "").length == 0) {
		return false;
	}
	return true;
}

//빈칸 확인
NullChk = function(obj, text) {
	if (obj.val().replace(/\s/g, "").length == 0) {
		alert(text + " 입력하세요.");
		obj.focus();
		return false;
	}
	return true;
}

//패스워드 확인
PwChk = function(obj, text) {
	if (!NullChk(obj, text)) return false;
	var str = obj.val();
	var chkStr = '0123456789';
	var chkEng = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
	var j = 0;
	var k = 0;

	if(str.length < 6 || str.length > 20){
		alert("패스워드는 6 ~ 20자 숫자/영문 혼용만 가능합니다.");
		obj.val("");
		obj.focus();
		return false;
	}
	for(var i = 0; i < str.length; i++) {
		if(chkStr.indexOf(str.substring(i, i+1))== -1){ //숫자가 아니고
			if(chkEng.indexOf(str.substring(i, i+1))==-1){ //영문소문자가 아닌경우
				alert("패스워드는 특수문자 또는 한글은 불가능합니다.");
				obj.val("");
				obj.focus();
				return false;
			} else {
				j++;
			}
		} else {
			k++;
		}
	}
	if((j==str.length || k==str.length)){
		alert("패스워드는 숫자와 영문을 혼용하여야합니다.");
		obj.val("");
		obj.focus();
		return false;
	}
	return true;
}

// 라디오 버튼 Null 체크 
NullChk_Radio = function(obj, text) {
	var isChecked = false;
	if (obj.length == undefined) {
		if (obj.checked) isChecked = true;
	} else {
		for (i = 0; i < obj.length; i++) {
			if (obj[i].checked) isChecked = true;
		}
	}
	if (!isChecked) {alert(text + " 선택하세요"); return isChecked;}
	return isChecked;
}

//<------------- 이미지 체크
ExtChk_File = function(mode, obj, text) {
	var isChecked = false;
	var file_Name = obj.val().slice(obj.val().lastIndexOf(".")).toLowerCase();
	if (mode == "img") {
		for (var i = 0; i < Img_extArray.length; i++) {
			if (file_Name == Img_extArray[i]) {
				isChecked = true;
				break;
			}
		}
	} else if (mode == "file") {
		for (var i = 0; i < File_extArray.length; i++) {
			if (file_Name == File_extArray[i]) {
				isChecked = true;
				break;
			}
		}
	}
	if (!isChecked) {
		alert(text);
		obj.val("");
		obj.focus();
	}
	return isChecked;
}

//빈칸확인_sexy
function nullChk_sexy(v, str){
	if(v.value==null || v.value==''){
		Sexy.info('<h1>' + str + ' 입력하세요.</h1>');
//		v.focus();
		return false;
	}
	return true;	
}

//주소 검색 창 띄우기
function do_search_zip() {
	window.open("zip.asp?todo=info","","width=450,height=300, top=100,left=500, resizable=1,scrollbars=yes ");
}

//text박스 자리 이동	
function dokeypress(here, next, strlength) {
	if (here.value.length == strlength) {
		next.focus();
	}
}

//엔터키와 숫자만 넣기
function keypress_enter_number(val_Num) {
	if (event.keyCode == 13) {
		return true;
	} else if( (event.keyCode < 48) || (event.keyCode > 57) ) {
		event.returnValue = false;
	}
}

//공백 지우기
function trim(str) {
	var start;
	var end;
	for (start=0 ; start<str.length ; start++) {
		if(str.charAt(start)!=' ') break;
	}
	for (end=str.length-1 ; end>=0 ; end--) {
		if(str.charAt(end)!=' ') break;
	}
	if (start > end) return "";
	return str.substring(start, end+1);
}
	
//이메일확인
function isEmail(obj, stralert) {
	var str = trim(obj.value);
	if(!nullChk(obj, stralert))
		return false;
	var tempChar;
	for (var i=0; i<str.length; i++) {
		tempChar = str.charAt(i);
		if(!(('a'<= tempChar && tempChar<='z') || (0<=tempChar && tempChar<=9) || tempChar == "." )) {
			alert("잘못된 이메일 형식입니다.");
			obj.select();
			obj.value='';
			obj.focus();
			return false;
		}
	}
	return true;
}

function CallServer(pageName, paramStr) {
	var objXmlHttp = null;
	try {
		// FireFox, Opera 8.0++, Safari, 익스 7.0+
		objXmlHttp = new XMLHttpRequest();	
	} catch(e) {
		try {
			// 익스플로러 6.0+
			objXmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				// 익스플로러 5.5+
				objXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				alert("Ajax가 지원되지 않는 브라우져 입니다.");
				return;
			}
		}
	}
	objXmlHttp.open("POST", pageName, false); //(false:동기)
	objXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	objXmlHttp.send(paramStr);
	var txtStr = objXmlHttp.responseText;
	return txtStr.replace(/(^\s*)|(\s*$)/g, "");    // 공백취환
}

//서밋 함수
function goSubmit(obj, mOpt, Act, Tag){
    var nOpt_Type
    
    if(mOpt == true){
        //파일업로드시 
        nOpt_Type = "multipart/form-data";
    }
    else{
        //일반
        nOpt_Type = "application/x-www-form-urlencoded";
    }
    
    with(obj){
        action = Act;
        target = Tag;
        encoding = nOpt_Type;
        submit();
    }
}

//검색함수(검색어)
function goSearch(obj, mOpt, Act, Tag){
    if(obj.SearchCon[obj.SearchCon.selectedIndex].value == 0){
        alert("검색조건을 선택하세요.");
        obj.SearchCon.focus();
        return;
    }
    
    if(obj.SearchVal.value == ""){
        alert("검색어를 입력하세요.");
        obj.SearchVal.focus();
        return;
    }
    
    Act = Act + "?Current_Page=1&SearchCon=" + obj.SearchCon[obj.SearchCon.selectedIndex].value + "&SearchVal=" + obj.SearchVal.value;
    goSubmit(obj, mOpt, Act, Tag)
}

//검색함수(검색어)
function goSearch2(obj, mOpt, Act, strLink, Tag){
    if(obj.SearchCon[obj.SearchCon.selectedIndex].value == 0){
        alert("검색조건을 선택하세요.");
//        obj.SearchCon.focus();
        return false;
    }
    
    if(obj.SearchVal.value == ""){
        alert("검색어를 입력하세요.");
        obj.SearchVal.focus();
        return false;
    }
    
    Act = Act + "?Current_Page=1" + strLink + "&SearchCon=" + obj.SearchCon[obj.SearchCon.selectedIndex].value + "&SearchVal=" + obj.SearchVal.value;
    goSubmit(obj, mOpt, Act, Tag)
}

