/**
* 폼의 유효성을 검사한다.
* @param 1 : obj : 폼객체
*/
function validateForm(obj) {
var objForm = obj;
var error = 0;
var x = objForm.elements;
var startdate, enddate;
for (var i = 0; i < x.length; i++) {
if(!x[i].disabled){
//필수항목 체크
if (x[i].getAttribute("required") && !x[i].value) {
alert("필수항목을 확인하세요.");
//alert(x[i].name);
//if(x[i].getAttribute("tagName") == "SELECT" || x[i].getAttribute("tagName") == "select")
x[i].focus();
error = 1;
return false;
}
//글자수 제한 체크
if (x[i].getAttribute("maxlen")) {
if(!fc_chk_byte(x[i], x[i].getAttribute("maxlen"), 0, "max")){
error = 1;
x[i].focus();
return false;
}
}
//동일 글자수
if (x[i].getAttribute("equallen")) {
if(!fc_chk_byte(x[i], x[i].getAttribute("equallen"), 0, "equal")){
error = 1;
x[i].focus();
return false;
}
}
//사이수
if (x[i].getAttribute("betweenlen")) {
if(!fc_chk_byte(x[i], 20, x[i].getAttribute("betweenlen"), "between")){
error = 1;
x[i].focus();
return false;
}
}
//이메일 체크
if (x[i].getAttribute("txttype")) {
if(x[i].getAttribute("txttype")=="email"){
if(!isValidEmailAddress(x[i])){
x[i].focus();
error = 1;
return false;
}
}
if(x[i].getAttribute("txttype")=="numeric"){
if(!numberCheck(x[i])){
x[i].focus();
error = 1;
return false;
}
}
if(x[i].getAttribute("txttype")=="jumin"){
if(!numberCheck(x[i])){
x[i].focus();
error = 1;
return false;
} else {
if(fc_chk_byte(x[i], 13)){
if(!isValidResNo_InputChecker(x[i])){
x[i].focus();
error = 1;
return false;
}
} else {
alert("주민번호는 13자리입니다.");
x[i].focus();
}
}
}
}
}
}
if (error == 0) {
return true;
}
}
/**
* 글자수를 제한제한
* @param 1 : objFormValue : 글자수를 제한한 폼값
* @param 2 : objFormMax : 입력가능한 최대글자수
*/
function fc_chk_byte(objFormValue, objFormMax, objFormMin, equal){
var ls_str = objFormValue.value; // 이벤트가 일어난 컨트롤의 value 값
var li_str_len = ls_str.length; // 전체길이
// 변수초기화
var li_max = objFormMax; // 제한할 글자수 크기
var li_min = objFormMin;
var i = 0; // for문에 사용
var li_byte = 0; // 한글일경우는 2 그밗에는 1을 더함
var li_len = 0; // substring하기 위해서 사용
var ls_one_char = ""; // 한글자씩 검사한다
var ls_str2 = ""; // 글자수를 초과하면 제한할수 글자전까지만 보여준다.
for(i=0; i< li_str_len; i++){
// 한글자추출
ls_one_char = ls_str.charAt(i);
if (escape(ls_one_char).length > 4){ // 한글이면 2를 더한다.
li_byte += 2;
} else { // 그밗의 경우는 1을 더한다.
li_byte++;
}
// 전체 크기가 li_max를 넘지않으면
if(li_byte <= li_max){
li_len = i + 1;
}
}
if(equal=="max"){
// 전체길이를 초과하면
if(li_byte > li_max){
alert( li_max + " 글자를 초과 입력할수 없습니다. 초과된 내용은 자동으로 삭제 됩니다. ");
ls_str2 = ls_str.substr(0, li_len);
objFormValue.value = ls_str2;
return false;
}
} else if(equal=="equal"){
// 전체길이가 같으면
if(li_byte != li_max){
alert( li_max + "글자이여야 합니다.");
return false;
}
} else if(equal=="between"){
if(li_byte >= li_min && li_byte <= li_max){
return true;
} else {
alert( li_min + "글자 이상이고 "+ li_max + "글자 이하여야합니다.");
return false;
}
}
return true;
}
/**
* 이메일 주소가 유효한지 알아 본다
* @param 1 : emailValue : 이메일 폼값
*
*/
function isValidEmailAddress(emailValue){
var ValidFlag = false;
var atCount = 0
var SpecialFlag = false;
var BadFlag = true;
if(/^[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-]+)*@[0-9a-zA-Z-]+(\.)+([0-9a-zA-Z-]+)([\.0-9a-zA-Z-])*$/.test(emailValue.value) == false) {
BadFlag = true;
}
else{
if ( emailValue.value.length > 0 && emailValue.value.indexOf("@") > 0 && emailValue.value.indexOf(".") > 0 ) {
for( var atLoop=1; atLoop<=emailValue.value.length; atLoop++ ) {
var atChr = emailValue.value.substring( atLoop, atLoop+1 )
if ( atChr == "@" ) atCount = atCount + 1
if ( (atChr >= 32) && (atChr <= 44) ) SpecialFlag = true
if ( (atChr == 47) || (atChr == 96) || (atChr >= 123) ) SpecialFlag = true
if ( (atChr >= 58) && (atChr <= 63) ) SpecialFlag = true
if ( (atChr >= 91) && (atChr <= 94) ) SpecialFlag = true
if ( atChr == "," ) SpecialFlag = true
}
if ( ( atCount == 1 ) && (SpecialFlag == false ) ) {
BadFlag = false;
var tAry1 = emailValue.value.split("@");
var UserName = tAry1[0]
var DomainName = tAry1[1]
if ( (UserName.length <= 0 ) || (DomainName.length <= 0 ) ) BadFlag = true
if ( DomainName.substring( 1, 2 ) == "." ) BadFlag = true
if ( DomainName.substring( DomainName.length-1, DomainName.length) == "." ) BadFlag = true
ValidFlag = true
}
}
}
if ( BadFlag == true ){
alert("유효하지 않은 이메일 입니다.");
ValidFlag = false
}
return ValidFlag
}
function isValidDate(startdate, enddate){
if(startdate.value>enddate.value){
alert("시작일이 종료일보다 크면 안됩니다.");
startdate.value="";
enddate.value="";
return false;
}
return true;
}
/**
* 숫자만 입력할수있게한다.
* @param 1 : objFormValue : 폼값
*
*/
function numberCheck(objFormValue) {
if (isNaN(objFormValue.value) || objFormValue.value == "") {
alert("숫자만 입력하세요.");
return false;
}
return true;
}
/**
* 날짜입력란에 더블 클릭하면 초기화 를 시킨다.
* @param 1 : kind : 'start' || 'end'
*
*/
function datereset(kind){
var objForm = document.oForm;
if(kind=="start"){
objForm.start_date.value="";
} else if(kind=="end"){
objForm.end_date.value="";
}
}
/**
* 올바른 주민번호 문자열인지를 반환한다.
*
* @param lm_sStr 문자열
* @return 올바른 주민번호 문자열이면 true 아니면 false
*/
function isValidResNo_InputChecker(u_jumin) {
lm_sStr = u_jumin.value;
var isValid = true;
// 우리나라 주민번호 유효성 체크
var sum = 0;
for (var i=0; i<12; i++) {
m = (i+2)%10;
if (i > 7) m += 2;
sum += eval(lm_sStr.charAt(i))*m;
}
var chkNum = (11 - sum%11)%10;
if (chkNum != eval(lm_sStr.charAt(12))) {
isValid = false;
}
// 우리나라 주민번호가 유효하지 않은 경우에만,
// 외국인 주민번호 유효성 체크
if (!isValid) {
isValid = true;
var sum=0;
var odd=0;
buf = new Array(13);
for(i=0; i<13; i++) { buf[i]=parseInt(lm_sStr.charAt(i)); }
odd = buf[7]*10 + buf[8];
if(odd%2 != 0) { isValid = false; }
if( (buf[11]!=6) && (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9) ) {
isValid = 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]) { isValid = false; }
}
if(!isValid){
alert("주민번호가 유효하지 않습니다.");
}
return isValid;
}