블로그 이미지
기대주
초초초초보 개발자.. 프로그래머도 아니고..엔지니어도 아니고.. 은땡때문에살지요^^

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

'Language'에 해당되는 글 23

  1. 2007.11.08 안과장님한테 받은 자료1
2007. 11. 8. 22:18 Language/JavaScript

자바스크립트 소스



/**
 *
 * 공통 기본 자바스크립트 함수
 *
 */

//------------------------------------------------------------------
// FILE Object를 넘기면 확장자가 이미지(png)인지 체크한다
// 예제) onChange="javascript:chkImg(formName.fileName)"
//-------------------------------------------------------------------
function chkPng(obj) {
 var filenm = obj.value;
 var attachMysize = 0;
 if (filenm!="") {
  var ext = filenm.slice(filenm.lastIndexOf(".")+1).toLowerCase();
  if (!(ext=="png")) {
   alert("이미지파일 중 .png만 업로드 가능합니다.");
   obj.value="";
   obj.focus();
   return false;
  }
 } else return false;
 return true;
}

//------------------------------------------------------------------
// FILE Object를 넘기면 확장자가 이미지(gif, jpg, png)인지 체크한다
// 예제) onChange="javascript:chkImg(formName.fileName)"
//-------------------------------------------------------------------
function chkImg(obj) {
 var filenm = obj.value;
 var attachMysize = 0;
 if (filenm!="") {
  var ext = filenm.slice(filenm.lastIndexOf(".")+1).toLowerCase();
  if (!(ext=="gif" || ext=="jpg" || ext=="png")) {
   alert("이미지파일(.gif, .jpg, .png)만 업로드 가능합니다.");
   obj.value="";
   obj.focus();
   return false;
  }
 } else return false;
 return true;
}

//------------------------------------------------------------------
// FILE Object를 넘기면 확장자가 음성파일인지 체크한다
// 예제) onChange="javascript:chkWav(formName.fileName)"
//-------------------------------------------------------------------
function chkWav(obj) {
 var filenm = obj.value;
 var attachMysize = 0;
 if (filenm!="") {
  var ext = filenm.slice(filenm.lastIndexOf(".")+1).toLowerCase();
  if (!(ext=="wav" || ext=="mp2" || ext=="mp3")) {
   alert("음성파일(.wav, .mp3, .mp3)만 업로드 가능합니다.");
   obj.focus();
   return false;
  }
 } else return false;
 return true;
}

//------------------------------------------------------------------
// FILE Object를 넘기면 확장자가 동영상파일인지 체크한다
// 예제) onChange="javascript:chkMov(formName.fileName)"
//-------------------------------------------------------------------
function chkMov(obj) {
 var filenm = obj.value;
 var attachMysize = 0;
 if (filenm!="") {
  var ext = filenm.slice(filenm.lastIndexOf(".")+1).toLowerCase();
  if (!(ext=="avi" || ext=="wmv" || ext=="wma")) {
   alert("동영상파일(.avi, .wav, .wma)만 업로드 가능합니다.");
   obj.focus();
   return false;
  }
 } else return false;
 return true;
}

//------------------------------------------------------------------
// FILE Object를 넘기면 확장자가 Excel파일인지 체크한다
// 예제) onChange="javascript:chkExcel(formName.fileName)"
//-------------------------------------------------------------------
function chkExcel(obj) {
 var filenm = obj.value;
 var attachMysize = 0;
 if (filenm!="") {
  var ext = filenm.slice(filenm.lastIndexOf(".")+1).toLowerCase();
  if (!(ext=="xls")) {
   alert("엑셀파일(.xls)만 업로드 가능합니다.");
   obj.focus();
   return false;
  }
 } else return false;
 return true;
}

//----------------------------------------------------------------------------
// CheckBox Object를 넘기면 전부체크한다.
//   반드시 checkYn이란 이름을 가진 checkBox가 있어야 하며, 이 CheckBox의
//   onClick event에 이 function을 적용한다.
//
// ARGUMENTS
//  formName : CheckBox가 있는 form의 name
//  obj : CheckBox의 name(form name을 붙여서 넘긴다. ( ex. formName.chboxName )
//
// RETURN
//
// 예제) <input type="checkbox" name="checkYn" onClick="javascript:checkAll(formName, formName.chboxName)">
//---------------------------------------------------------------------------*/
function checkAll(formName, obj){
    if (obj) {
        if (obj.length) {
            for (var i=0 ; i<obj.length ; i++)
             if (obj[i].type=='checkbox') obj[i].checked = formName.checkYn.checked;
        }
        else
            if (obj.type=='checkbox') obj.checked = formName.checkYn.checked;
    }
}


//----------------------------------------------------------------------------
// CheckBox가 반드시 한 건만 선택되도록 체크
//
// ARGUMENTS
//  obj = CheckBox의 name ( form name을 붙여서 넘긴다. 예: formName.chboxName )
//
// RETURN
//  boolean
//
// 예제) if( checkValid(formName.chboxName) ) { ...
//---------------------------------------------------------------------------*/
function checkValid(obj) {
    var checkedCount = 0;
    if (obj) {
        if (obj.length) {
            for(var i=0 ; i<obj.length ; i++)
                if (obj[i].checked) checkedCount++;
            if (checkedCount == 0) {
                alert('항목을 선택하여 주십시오.');
                return false;
            } else if (checkedCount > 1){
                alert('항목을 하나만 선택하여 주십시오.');
                return false;
            } else
                return true;
        } else {
            if (!obj.checked) {
                alert('항목을 선택하여 주십시오.');
                return false;
            } else
                return true;
        }
    } else {
        alert('선택할 항목이 없습니다.');
        return false;
    }
}


//----------------------------------------------------------------------------
// CheckBox가 반드시 한 건 이상은 선택되도록 체크
//
// ARGUMENTS
//  obj : CheckBox의 name(form name을 붙여서 넘긴다. 예:formName.chboxName)
//
// RETURN
//  checkedCount : check된 수
//
// 예제) if( checkValid2(formName.chboxName) ) { ...
//---------------------------------------------------------------------------*/
function checkValid2(obj) {
    var checkedCount = 0;
    if (obj) {
        if (obj.length) {
            for (var i=0 ; i<obj.length ; i++)
                if (obj[i].checked) checkedCount++;
            if (checkedCount == 0) {
                alert('항목을 선택하여 주십시오.');
                return checkedCount;
            } else
                return checkedCount;
        } else {
            if (!obj.checked) {
                alert('항목을 선택하여 주십시오.');
                return checkedCount;
            } else {
                checkedCount++;
                return checkedCount;
            }
        }
    } else {
        alert('선택할 항목이 없습니다.');
        return false;
    }
}


//----------------------------------------------------------------------------
// 선택된 CheckBox 또는 RadioButton 의 Value를 Return한다.
//
// ARGUMENTS
//  obj : CheckBox 또는 RadioButton 의 name(form name을 붙여서 넘긴다. 예:formName.chboxName)
//
// RETURN
//  checkedValue : 선택된 항목의 value 값
//
// 예제) var value = getCheckedValue(formName.chboxName);
//---------------------------------------------------------------------------*/
function getCheckedValue(obj) {
    var checkedValue='';

    if (obj.length) {
        for (var i=0 ; i<obj.length ; i++) {
            if (obj[i].checked) {
                checkedValue = obj[i].value;
                return checkedValue;
            }
        }
    } else {
        if(obj.checked) {
            checkedValue = obj.value;
            return checkedValue;
        }
    }

    return checkedValue;
}


//------------------------------------------------------------------------------
// 팝업창을 띄우고 화면의 중앙으로 이동한다.
//
// ARGUMENTS
//  theURL : 팝업창의 URL
//  winName : 팝업창 이름
//  width : 팝업창의 width
//  height : 팝업창의 height
//  features : 추가기능 (ex. 'scrollbars=no, resizable=yes' )
//
// RETURN
//  win : window 객체
//
// 예제) var win = openWindowCenter(url, 'popup_calendar', 180, 195, 'scrollbars=no');
//------------------------------------------------------------------------------
function openWindowCenter(theURL, winName, width, height, features) {

 // 화면 중앙의 좌표값 계산
 var leftX = screen.width / 2 - width / 2;
 var topY = -75 + screen.height / 2 - height / 2;
 
 // 팝업창 크기 설정
 var featuresValue = 'width=' + width + ',height=' + height;
 featuresValue += ',left=' + leftX + ',top=' + topY;
 
 // 추가 속성 지정
 if (features.length > 0)
  featuresValue += ',' + features; // + ',resizable=yes';
 
 //창을 open 한다.
 var win = window.open(theURL,winName,featuresValue);

 win.focus();
 
 return win;
}


//------------------------------------------------------------------------------
// 찾고자 하는 form의 element의 갯수를 return
//
//   ARGUMENTS
//      formName = form의 name
//      eleName  = 갯 수를 알고자 하는 element의 Name
//
//   RETURN
//      element의 갯 수
//---------------------------------------------------------------------------*/
function getEleNum(formName,elementName) {
    var elementNum = 0;
    if (formName.elements.length) {
     for (i=0 ; i<formName.elements.length ; i++) {
         if (formName.elements[i].name == elementName)
             elementNum++;
     }
    } else {
   elementNum = 1;
    }
    return elementNum;
}


//------------------------------------------------------------------------------
// 찾고자 하는 form의 element중 선택된 element의 갯수를 return
//
//   ARGUMENTS
//      formName = form의 name
//      eleName  = 갯 수를 알고자 하는 element의 Name
//
//   RETURN
//      element의 갯 수
//---------------------------------------------------------------------------*/
function getCheckedEleNum(formName,elementName) {
    var elementNum = 0;
    for (i=0 ; i<formName.elements.length ; i++) {
        if (formName.elements[i].name == elementName) {
            if (formName.elements[i].checked)
                elementNum++;
        }
    }
    return elementNum;
}


//------------------------------------------------------------------------------
// 찾고자 하는 form의 element중 선택된 element의 index를 return
//
//   ARGUMENTS
//      formName = form의 name
//      checkBoxName  = 체크 된 index를 알고자 하는 체크박스 이름
//
//   RETURN
//      checked Index의 Array
//---------------------------------------------------------------------------*/
function getCheckedEleIndex(formName,checkBoxName) {
    var checkedEleIndex = new Array();
    var elementNum = 0;
    var j = 0;
    for (i=0 ; i<formName.elements.length ; i++) {
        if (formName.elements[i].name == checkBoxName) {
            if (formName.elements[i].checked) {
                checkedEleIndex[elementNum] = j;
                elementNum++;
            }
            j++;
        }
    }
    return checkedEleIndex;
}


//------------------------------------------------------------------------------
//  찾고자 하는 form의 element중 선택된 checkBox와 같은 row에 있는 항목의
// element의 value를 return
//
//   ARGUMENTS
//      formName = form의 name
//      checkBoxName = 체크 된 index를 알고자 하는 체크박스 이름
//      elementName = value를 알고 싶은 element의 이름
//
//   RETURN
//      element의 value Array
//---------------------------------------------------------------------------*/
function getCheckedEleValues(formName,checkBoxName,elementName) {
    var checkedEleIndex  = getCheckedEleIndex(formName,checkBoxName);
   
    if (checkedEleIndex.length == 0) {
        alert('선택된 항목이 없습니다.');
        return;
    }
   
    var checkedEleValues = new Array();
    var elementNum = 0;
    var j = 0;
   
    for (i=0 ; i<formName.elements.length ; i++) {
        if (formName.elements[i].name == elementName) {
            if (j == checkedEleIndex[elementNum]) {
                checkedEleValues[elementNum] = formName.elements[i].value;
                elementNum++;
            }
            j++;
        }
    }
    return checkedEleValues;
}


//------------------------------------------------------------------------------
// selectbox 에 option을 추가한다.
//
//   ARGUMENTS
//      selectName = select의 name (form name까지 붙여준다)
//      tmpValue   = option의 value 값
//      tmpText    = option의 text 값
//
//   RETURN
//---------------------------------------------------------------------------*/
function addSelectOption(selectName,tmpValue,tmpText) {
    if (tmpValue != '') {
        if (!selectName.length) i = 0;
        else i = selectName.length;
        var tmpOption = new Option();
        tmpOption.text = tmpText;
        tmpOption.value = tmpValue;
        selectName.options[i] = tmpOption;
    }
}


//------------------------------------------------------------------------------
// selectbox 에서 select된 option을 삭제한다.
//
//   ARGUMENTS
//      selectName = select의 name(form name까지 붙여준다)

//   RETURN
//---------------------------------------------------------------------------*/
function delSelectOption(selectName) {
    if (selectName.length) {
        var selectedCnt = 0;
        for(i=0 ; i<selectName.length ; i++) {
            if(selectName.options[i].selected) {
                selectName.options[i] = null;
                selectedCnt++;
                i--;
            }
        }
        if (selectedCnt == 0) return;
    } else
        return;
}
//------------------------------------------------------------------------------
// selectbox안에 모든 option을 삭제한다.
//
//   ARGUMENTS
//      selectName = select의 name(form name까지 붙여준다)

//   RETURN
//---------------------------------------------------------------------------*/
function allDelSelectOption(selectName) {
    if (selectName.length) {
        var selectedCnt = 0;
        for(i=0 ; i<selectName.length ; i++) {
                selectName.options[i] = null;
                selectedCnt++;
                i--;
        }
        if (selectedCnt == 0) return;
    } else
        return;
}


//------------------------------------------------------------------------------
// selectbox 를 전체선택한다.
//
//   ARGUMENTS
//      selectName = select의 name(form name까지 붙여준다)
//
//   RETURN
//---------------------------------------------------------------------------*/
function selectAll(selectName) {
    if (selectName.length) {
        for (i=0 ; i<selectName.length ; i++)
            selectName.options[i].selected = true;
    }
}


//------------------------------------------------------------------------------
// subString 한다.
//
// ARGUMENTS
//  str = 대상 String
//  inx = subString할 길이
//
// RETURN
//  result = substring 된 문자열
//---------------------------------------------------------------------------*/
function getSubString(str,inx) {
    var result = '';
    if (str.length < inx)
        result = str;
    else
        result = str.substring(0,inx);
}


//------------------------------------------------------------------------
// 글자수 제한 체크 (onKeyUp 이벤트)
//
//   ARGUMENTS
//      len = 제한하려는 Byte 수(한글은 2byes 처리함)
//
//   RETURN
//
// 예제) <textarea name="userPswd" cols="60" rows="2" onKeyUp="charNumChk(this, 80);"></textarea>
//
//------------------------------------------------------------------------
function charNumChk(obj, len) {

 var str = obj.value;
 var nLen = str.length+(escape(str)+"%u").match(/%u/g).length-1;
    if ( nLen <= len ) {
       return true;
    } else {
     alert(len + " byte 를 초과하여 입력할 수 없습니다.");
     obj.value =  charCutBytes(obj.value, len);
     obj.focus();
        return false;
    }

}


//------------------------------------------------------------------------
// 해당 문자열을 지정된 bytes 수 만큼만 잘라낸다.
// (한글과 같은 2 Byte 문자는 지정된 Byte 가 넘을 경우 잘릴수도 있음)
//
//   ARGUMENTS
//      str = 대상문자열
//      len = 잘라낼 Byte 수 (한글은 2byes 처리함)
//
//   RETURN
//      처리된 문자열
//
//------------------------------------------------------------------------
function charCutBytes(str, len) {
 var byteLength = 0;
 var result = '';
 
 for (var inx = 0; inx < str.length; inx++) {
  var oneChar = escape(str.charAt(inx));
  if ( oneChar.length == 1 ) {
   byteLength ++;
  } else if (oneChar.indexOf("%u") != -1) {
   byteLength += 2;
  } else if (oneChar.indexOf("%") != -1) {
   byteLength += oneChar.length/3;
  }
 
  // bytes 길이를 넘어버리면 마지막 글자는 넣지않고 리턴한다.
  if( byteLength > len )  break;
  //if( byteLength == len ) break;
  result += str.charAt(inx);

 }
 
 return result;
}


//------------------------------------------------------------------------
// 중복작업이 이루어질 경우를 대비해 모든 link를 workingNow()로 변경한다.
// 일반적으로 submit 이전에 실행해주면 중복 submit 을 막을 수 있다.
//------------------------------------------------------------------------
function reWorkChk() {
    for(i=0 ; i<document.links.length ; i++) {
        if (document.links[i].href.indexOf('close') == -1)
            document.links[i].href = 'javascript:workingNow();';
    }
}


//------------------------------------------------------------------------
// 중복작업 체크 후 모든 링크에 걸릴 메세지
// (reWorkChk 함수에 의존적, 직접호출필요없음)
//------------------------------------------------------------------------
function workingNow() {
    alert('현재 작업 진행 중에 다른 작업을 수행하셨습니다.\n진행중인 작업이 완료되었거나 작업이 지연중이니 \n이전 메뉴로 돌아가서 확인하십시오.');
}


//------------------------------------------------------------------------
// 현재 창에 새로운 이름을 붙인다.
//------------------------------------------------------------------------
function newName() {
    this.name = this.name+'_new';
}
       
       
//------------------------------------------------------------------------
// 현재창을 가운데로 이동시킨다.
//------------------------------------------------------------------------
function moveToCenter() {
    if (document.layers) {
        var x = screen.width / 2 - outerWidth / 2;
        var y = screen.height / 2 - outerHeight / 2;
    } else {
        var x = screen.width / 2 - document.body.offsetWidth / 2;
        var y = -75 + screen.height / 2 - document.body.offsetHeight / 2;
    }

    window.moveTo(x, y);
}


//------------------------------------------------------------------------
// 창 크기를 바꾸고 가운데로 이동시킨다.
//------------------------------------------------------------------------
function resizeCenter(width, height) {
    var leftX = screen.width / 2 - width / 2;
    var topY = -75 + screen.height / 2 - height / 2;

    window.resizeTo(width, height);
    window.moveTo(leftX, topY);
}


//------------------------------------------------------------------------
// 숫자만 입력 가능하도록 이벤트 처리 (onKeyDown 이벤트)
//
// 예제) <input type="text" name="jumin" onKeyDown="onlyNumberInput(this);" style="ime-mode:disabled;">
//------------------------------------------------------------------------
function onlyNumberInput(obj) {

 if(  ( (event.keyCode<48)||(event.keyCode>57) || event.shiftKey )
  && event.keyCode != 8
  && event.keyCode != 9
  && event.keyCode != 13
  && event.keyCode != 16
  && event.keyCode != 17
  && event.keyCode != 18
  && event.keyCode != 19
  && event.keyCode != 20
  && event.keyCode != 21
  && event.keyCode != 25
  && event.keyCode != 27
  && event.keyCode != 33
  && event.keyCode != 34
  && event.keyCode != 45
  && event.keyCode != 46
  && event.keyCode != 91
  && event.keyCode != 93
  && event.keyCode != 144
  && event.keyCode != 145
  && event.keyCode != 173
  && event.keyCode != 174
  && event.keyCode != 175
  && !( event.keyCode >= 112 && event.keyCode <= 123 )
  && !( event.keyCode >= 96 && event.keyCode <= 105 )
  && !( event.keyCode >= 35 && event.keyCode <= 40 ) ) {
  alert("숫자만 입력하세요!");
  obj.focus();  //focus추가
  event.returnValue=false;
  return false;
 }
 
 event.returnValue = true;
 return true;
}


//----------------------------------------------------------------------------
// 검색폼의 특수문자를 필터링한다. ( #, &, \, ', ", %, _ ) (onKeyDown 이벤트)
//
// 예제) <input type="text" name="cdGrpNm" onKeyDown="chkSrchFormSpecialChar();">
//---------------------------------------------------------------------------*/
function chkSrchFormSpecialChar() {
 var kcode = event.keyCode;
 var shiftKey= event.shiftKey;
 var msg = event.srcElement.value;
 
 // window.status = "키코드 : " + kcode + ", 쉬프트키 : " + shiftKey + ", 값 :" + event.srcElement.value;
 
 if( ( (kcode == 51 || kcode == 53 || kcode == 55 ||  kcode == 189 || kcode == 222) && shiftKey ) ||
  ( kcode == 222 && !shiftKey ) ||
  ( kcode == 220 && !shiftKey ) ) {

  alert("특수문자( #, &, \\, ', \", %, _ )는 입력하실 수 없습니다.");
        event.returnValue=false;
  return false;
 }

 // 한번 더 check
 if ( msg.indexOf("#") != -1 ||
  msg.indexOf("&") != -1 ||
  msg.indexOf("\\") != -1 ||
  msg.indexOf("'") != -1 ||
  msg.indexOf('"') != -1 ||
  msg.indexOf("%") != -1 ||
  msg.indexOf("_") != -1) {
       
  alert("특수문자( #, &, \\, ', \", %, _ )는 입력하실 수 없습니다.");
  // event.srcElement.value = msg.substring(0, msg.length-1);
  event.srcElement.value = '';
        event.returnValue=false;
  return false;
 }
 
 // 복사해 넣기 방지
 if( event.ctrlKey && kcode == 86 ) {
  event.returnValue=false;
  return false;
 }
 
 event.returnValue = true;
 return true;
}


//------------------------------------------------------------------------
// 주민등록번호 입력 형식 처리 (onKeyUp 이벤트)
//
// 예제) <input type="text" size="14" type="text" maxLength="14"
//     name="jumin" onKeyDown="onlyNumberInput(this);" onKeyUp="ssnFormat(this);">
//------------------------------------------------------------------------
function ssnFormat(obj) {

 var str = onlyNum(obj.value);
 var leng = str.length;

 switch(leng){
  case  1 :
  case  2 :
  case  3 :
  case  4 :
  case  5 :
  case  6 : obj.value = str; break;
  case  7 :
  case  8 :
  case  9 :
  case 10 :
  case 11 :
  case 12 : obj.value = str.substring(0, 6) + "-" + str.substring(6, 13);
      break;
  case 13 :  obj.value = str.substring(0, 6) + "-" + str.substring(6, 13);
      if(!isSSN(str.substring(0, 6) + str.substring(6, 13))){obj.value = "";}
      break;
  }
}


//------------------------------------------------------------------------
// 주민등록번호의 유효성을 검증
//
// ARGUMENTS
//  ssn = 대상 주민번호 ( ex. '8010142016147' )
//
// RETURN
//  boolean
//---------------------------------------------------------------------------*/
function isSSN(ssn){
 var msg = "올바른 주민등록번호가 아닙니다.";
 
 if( ssn.length == 13 ) {
 
  var str_jumin1 = ssn.substring(0, 6);
  var str_jumin2 = ssn.substring(6);
  var checkImg='';
  var i3=0

  for (var i=0;i<str_jumin1.length;i++) {
   var ch1 = str_jumin1.substring(i, i+1);
   if(ch1<'0' || ch1>'9') { i3 = i3 + 1; }
  }

  if ( (str_jumin1 == '') || ( i3 != 0 ) ) {
   alert(msg);
   return false;
  }

  var i4=0
  for (var i=0;i<str_jumin2.length;i++) {
   var ch1 = str_jumin2.substring(i, i+1);
   if (ch1<'0' || ch1>'9') { i4=i4+1 }
  }

  if ( (str_jumin2 == '') || ( i4 != 0 ) ) {
   alert(msg);
   return false;
  }

  if(str_jumin1.substring(0,1) < 4) {
   alert(msg);
   return false;
  }

  if(str_jumin2.substring(0,1) > 2) {
   alert(msg);
   return false;
  }

  if((str_jumin1.length > 7) || (str_jumin2.length > 8)) {
   alert(msg);
   return false;
  }

  if ((str_jumin1 == '72') || ( str_jumin2 == '18')) {
   alert(msg);
   return false;
  }
 
  var f1=str_jumin1.substring(0,1)
  var f2=str_jumin1.substring(1,2)
  var f3=str_jumin1.substring(2,3)
  var f4=str_jumin1.substring(3,4)
  var f5=str_jumin1.substring(4,5)
  var f6=str_jumin1.substring(5,6)
  var hap=f1*2+f2*3+f3*4+f4*5+f5*6+f6*7
  var l1=str_jumin2.substring(0,1)
  var l2=str_jumin2.substring(1,2)
  var l3=str_jumin2.substring(2,3)
  var l4=str_jumin2.substring(3,4)
  var l5=str_jumin2.substring(4,5)
  var l6=str_jumin2.substring(5,6)
  var l7=str_jumin2.substring(6,7)
  hap=hap+l1*8+l2*9+l3*2+l4*3+l5*4+l6*5
  hap=hap%11
  hap=11-hap
  hap=hap%10

  if (hap != l7 ) {
   alert(msg);
   return false;
  }
 
  return true;
  }
 
  alert(msg);
 return false;
}


//------------------------------------------------------------------------
// 사업자등록번호가 정확한지 확인한다.
//
// ARGUMENTS
//  iSaupNo : 사업자등록번호 ( 'XXXXXXXXXX' 10자리)
//
// RETURN
//  boolean
//---------------------------------------------------------------------------*/
function isSaupNO(iSaupNo) {

 if (!isNumber(iSaupNo)){
     alert("사업자등록번호는 반드시 숫자로 구성되어야 합니다.");
     return false;
 }
 else if ( iSaupNo.length != 10 ) {
  alert("사업자등록번호는 10자리 입니다.");
  return false;
 }
 
 var arr_saup = iSaupNo.split("");
 var wtArray = new Array(1,3,7,1,3,7,1,3,5);
 var iSaup_9 = 0;
 var iSum_saup = 0;
 var iCheck_digit = 0;
 
 //1~8자리까지 가중치를 곱하여 모두 더한다.
 for (i = 0; i < 8; i++){
  iSum_saup +=  eval(arr_saup[i]) * eval(wtArray[i]);
 }
 
 iSum_saup = iSum_saup % 10;
 
 //9번째 자리 숫자에 5를 곱한다.
 iSaup_9 = eval(arr_saup[8]) * 5;
 
 //5를 곱한 값을 10으로 나누어  몫과 나머지를 각각 1~8합계에 더한다.
 iSum_saup +=  Math.floor(iSaup_9 / 10) + iSaup_9 % 10;
 
 //결과 값을 10에서 뺀다.
 iCheck_digit = 10 - (iSum_saup % 10);
 
 //계산 값을 10으로 나눈 나머지를 구한다. (Check Digit)
 iCheck_digit = iCheck_digit % 10;
 
 if (iCheck_digit != arr_saup[9]) {
  alert("사업자등록번호가 정확하지 않습니다.\n 다시 확인하신후 입력하십시오.");
  return false;
 }
 
 return true;
}


//------------------------------------------------------------------------
// 법인번호 입력 형식 처리 (onKeyUp 이벤트)
//
// 예제) <input type="text" size="14" type="text" maxLength="14"
//     name="bubinno" onKeyDown="onlyNumberInput();" onKeyUp="bubinFormat(this);">
//------------------------------------------------------------------------
function bubinFormat(obj) {
 var str = onlyNum(obj.value);
 var leng = str.length;

 switch(leng){
  case  1 :
  case  2 :
  case  3 :
  case  4 :
  case  5 :
  case  6 : obj.value = str; break;
  case  7 :
  case  8 :
  case  9 :
  case 10 :
  case 11 :
  case 12 :
  case 13 : obj.value = str.substring(0, 6) + "-" + str.substring(6, 13);
 }
}


//------------------------------------------------------------------------
// 사업자등록번호 입력 형식 처리 (onKeyUp 이벤트)
//
// 예제) <input type="text" size="12" type="text" maxLength="12"
//     name="saupno" onKeyDown="onlyNumberInput();" onKeyUp="saupnoFormat(this);">
//------------------------------------------------------------------------
function saupnoFormat(obj) {
 var str = onlyNum(obj.value);
 var leng = str.length;
 
 switch(leng) {
  case  1 :
  case  2 :
  case  3 :obj.value = str; break;
  case  4 :
  case  5 :obj.value = str.substring(0, 3) + "-" + str.substring(3, 5); break;
  case  6 :
  case  7 :
  case  8 :
  case  9 :obj.value = str.substring(0, 3) + "-" + str.substring(3, 5) + "-" + str.substring(5, 10);break;
  default :break;
 }
}


//------------------------------------------------------------------------
// 입력값이 숫자인지를 확인한다.
//
// ARGUMENTS
//  sVal : 입력값 문자열
//
// RETURN
//  boolean
//---------------------------------------------------------------------------*/
function isNumber(sVal){   
 
 if(sVal.length < 1){
  return false;
 }

 for(i=0; i<sVal.length; i++) {
  iBit = parseInt(sVal.substring(i,i+1));
     if(('0' < iBit) || ('9' > iBit)) {
   ;
  }
  else {
   return false;
  }
 }
 
 return true;
}


//------------------------------------------------------------------------
// 입력된 문자열에서 숫자만 추출하여 리턴
//
// ARGUMENTS
//  val : 숫자 추출 대상 문자열
//
// RETURN
//  result : 처리된 문자열
//---------------------------------------------------------------------------*/
function onlyNum(val) {
 var num = val;
 var result = "";

 for (var i = 0; i < num.length; i ++) {
  if (num.charAt(i) >= 0 && num.charAt(i) <= 9)
   result = result + num.charAt(i);
  else
   continue;
 }
 
 return result;
}

//------------------------------------------------------------------------
// 우편번호 찾기 팝업창 오픈
//
// ARGUMENTS
//  post1Obj : 우편번호 앞자리 오브젝트
//     post2Obj : 우편번호 뒷자리 오브젝트
//     addrObj : 주소 오브젝트
//
//---------------------------------------------------------------------------*/
function callPost(post1Obj, post2Obj, addr1Obj, addr2Obj) {
 var url = "/CMM04_A.do?method=readList&post1=" + post1Obj + "&post2=" + post2Obj + "&addr1=" + addr1Obj + "&addr2=" + addr2Obj;
 openWindowCenter(url, 'STARUCC', 600, 600, 'scrollbars=yes,resizable=no')
}


//------------------------------------------------------------------------
// 유관기관검색 팝업창 오픈
//
// ARGUMENTS none
//
//---------------------------------------------------------------------------*/
function callOrg() {
 var url = "/CAL/CAL04_A.do?method=readOrgList";
 openWindowCenter(url, 'CMNS', 685, 450, 'scrollbars=yes,resizable=no')
}

//------------------------------------------------------------------------
// CM 팝업창 오픈
//
// ARGUMENTS
//      formNm = 폼이름
//
//---------------------------------------------------------------------------*/
function callCm(formNm) {
 var url = "/INF/INF04_A.do?method=readCmList"+"&formNm="+formNm;
 openWindowCenter(url, 'CMNS', 685, 450, 'scrollbars=yes,resizable=no')
}

//------------------------------------------------------------------------
// 콜센터 상담원 팝업창 오픈
//
// ARGUMENTS
//
//---------------------------------------------------------------------------*/
function callCall() {
 var url = "/CAL/CAL05_A.do?method=readCallList";
 openWindowCenter(url, 'CMNS', 685, 450, 'scrollbars=yes,resizable=no')
}

//------------------------------------------------------------------------
// 연구원 팝업창 오픈
//
// ARGUMENTS none
//
//---------------------------------------------------------------------------*/
function callResearch() {
 var url = "/INF/INF08_A.do?method=readResearchList";
 openWindowCenter(url, 'CMNS', 685, 450, 'scrollbars=yes,resizable=no')
}
//------------------------------------------------------------------------------
// checkbox 를 전체선택 또는 해제한다.
//
//   ARGUMENTS
//      obj1 = 전체 선택여부 obj1이 checked이면 obj2를 모두 checked하고, 그렇지 않다면 모두 false한다. form1.chk = checkbox의  name에 (form name까지 붙여준다)
//      obj2 = form1.chk = checkbox의  name에 (form name까지 붙여준다)
//
//   RETURN
//---------------------------------------------------------------------------*/
function allCheckBox(obj1, obj2){
 if(obj1.checked){
  if(obj2){
   if(obj2.length > 1){
    for(var i=0;i<obj2.length;i++){
     if(obj2[i].disabled == false){
      obj2[i].checked = true;
     }
    }
   }else{
    if(obj2.disabled == false){
     obj2.checked = true;
    }
   }    
  }
 }else{
  if(obj2){
   if(obj2.length > 1){
    for(var i=0;i<obj2.length;i++){
     obj2[i].checked = false;
    }
   }else{
    obj2.checked = false;
   }    
  } 
 }
}
/* =============================================================
  Function : 삭제여부를 물어 본후 확인을 누르면 진행 시키는script
  Return   : true, false
  Usage    :
================================================================= */
function delConfirm(){
 return confirm ("삭제하시겠습니까?");
}
/* =============================================================
  Function : 승인여부를 물어 본후 확인을 누르면 진행 시키는script
  Return   : true, false
  Usage    :
================================================================= */
function admissionConfirm(){
 return confirm ("승인하시겠습니까?");
}
/* =============================================================
  Function : 반려여부를 물어 본후 확인을 누르면 진행 시키는script
  Return   : true, false
  Usage    :
================================================================= */
function rejectConfirm(){
 return confirm ("반려하시겠습니까?");
}
/* =============================================================
  Function : 탈퇴여부를 물어 본후 확인을 누르면 진행 시키는script
  Return   : true, false
  Usage    :
================================================================= */
function secedeConfirm(){
 return confirm ("탈퇴하시겠습니까?");
}
/* =============================================================
  Function : 저장여부를 물어 본후 확인을 누르면 진행 시키는script
  Return   : true, false
  Usage    :
================================================================= */
function saveConfirm(){
 return confirm ("저장하시겠습니까?");
}
/* =============================================================
  Function : 반납여부를 물어 본후 확인을 누르면 진행 시키는script
  Return   : true, false
  Usage    :
================================================================= */
function retConfirm(){
 return confirm ("반납하시겠습니까?");
}
/* =============================================================
  Function : 파기여부를 물어 본후 확인을 누르면 진행 시키는script
  Return   : true, false
  Usage    :
================================================================= */
function destConfirm(){
 return confirm ("파기하시겠습니까?");
}
/* =============================================================
  Function : 복원여부를 물어 본후 확인을 누르면 진행 시키는script
  Return   : true, false
  Usage    :
================================================================= */
function restoreConfirm(){
 return confirm ("복원하시겠습니까?");
}
//------------------------------------------------------------------------
// 메뉴이동
//------------------------------------------------------------------------
function goMenu(url) {
 document.location.href = url;
}

//------------------------------------------------------------------------
// 주민등록번호 중복검사
//
// ARGUMENTS
//  ssn1Obj : 주민번호 앞자리 Object
//     ssn2Obj : 주민번호 뒷자리 Object
//     ssn1ObjNm : 주민번호앞자리 이름
//     ssn2ObjNm : 주민번호뒷자리 이름
//     ssnFnObjNm : 주민번호 체크여부 이름
//     formNm : 폼이름
//
//---------------------------------------------------------------------------*/
 function goSsn(ssn1Obj, ssn2Obj, ssnFnObj, ssn1ObjNm, ssn2ObjNm,  ssnFnObjNm, formNm){
  if(!isSSN((ssn1Obj.value + ssn2Obj.value))){
   ssn1Obj.value = "";
   ssn2Obj.value = "";
   ssnFnObj.value ="F";
    return;
  }else {  
   var url = "/INF/INF031_A.do?method=ssnFind&ssn1="+ssn1Obj.value+"&ssn2="+ssn2Obj.value+"&ssn1Nm="+ssn1ObjNm+"&ssn2Nm="+ssn2ObjNm+"&ssnFnNm="+ssnFnObjNm+"&formNm="+formNm;
   openWindowCenter(url, 'CMNS', 442, 198, 'scrollbars=yes,resizable=no')
  }
 }

//------------------------------------------------------------------------
// Clinet 주민등록번호 중복검사
//
// ARGUMENTS
//  ssn1Obj : 주민번호 앞자리 Object
//     ssn2Obj : 주민번호 뒷자리 Object
//     ssn1ObjNm : 주민번호앞자리 이름
//     ssn2ObjNm : 주민번호뒷자리 이름
//     ssnFnObjNm : 주민번호 체크여부 이름
//     formNm : 폼이름
//
//---------------------------------------------------------------------------*/
 function goClientSsn(ssn1Obj, ssn2Obj, ssnFnObj, ssn1ObjNm, ssn2ObjNm,  ssnFnObjNm, formNm){
  if(!isSSN((ssn1Obj.value + ssn2Obj.value))){
   ssn1Obj.value = "";
   ssn2Obj.value = "";
   ssnFnObj.value ="F";
    return;
  }else {  
   var url = "/INF/INF031_A.do?method=ssnClientFind&ssn1="+ssn1Obj.value+"&ssn2="+ssn2Obj.value+"&ssn1Nm="+ssn1ObjNm+"&ssn2Nm="+ssn2ObjNm+"&ssnFnNm="+ssnFnObjNm+"&formNm="+formNm;
   openWindowCenter(url, 'CMNS', 442, 198, 'scrollbars=yes,resizable=no')
  }
 }
 
//------------------------------------------------------------------------
// 아이디찾기 주의사항  * 아래의 사항을 꼭 읽어볼것...
//popup용 폼에 layer은 아래와 같다.
//popup용 폼선언은 <form name=<%=formNm%> method="post" action="">
//hidden객체는 <input type="hidden" name="formNm" value="<%=formNm%>">
//<input type="hidden" name="idNm" value="<%=idNm%>">
// 폼객체는 <alice:idfind formNm="<%=formNm%>" idNm="<%=idNm%>"/>
//parent객체에 idFn 객체값을 설정하면서 "F"라는 갑을 넣어준다. 아이디중복검사를 성공적으로 마치면 "T"라고 설정됩니다.
//parent객체는  <alice:idfind formNm="parent폼이름" idNm="parent폼의 ID객체이름 "/>
// ARGUMENTS
//  idObj : 주민번호 앞자리 Object
//     idObjNm : 주민번호 뒷자리 Object
//     formNm : 폼이름
//
//---------------------------------------------------------------------------*/
 function findID(idObj, idObjNm, formNm){
  if(idObj.value == ""){
   alert("아이디를 입력하여 주세요.");
   idObj.focus();
   return;
  }else{
   var retVal = checkSpace( idObj.value );
   if( retVal != "") {
       alert("아이디는 빈공간 없이 연속된 영문 소문자와 숫자만 사용할 수 있습니다.");
       return;
   }
   if(idObj.value.length < 6 ||  idObj.value.length > 20){
    alert("아이디는 영문자 숫자 조합 6자리이상 20자리 미만으로 입력하여 주세요.");
    idObj.focus();
    return;
   }      
   //아이디의 첫번째 자리는 영문자여야함.
   if(isEnglish(idObj.value.substring(0,1)) == false){
    alert("아이디의 첫번째자리는 영문자로 입력하셔야 합니다.");
    idObj.value = "";
    idObj.focus();
    return;
   }  
   //아이디는 영문자또는 숫자로 되어야있어야함.
   if(!isAlphaNum(idObj)){
    alert("아이디는 영문자 숫자 조합 6자리이상 20자리 미만으로 입력하여 주세요.");
    idObj.focus();
    return;
   }  
   //아이디는 숫자로만 입력할 수 없음.
   if(isNumber(idObj) == true){
    alert("아이디는 숫자로만 입력하실 수 없습니다.");
    idObj.value = "";
    idObj.focus();
    return;
   }else{  
    var url = "/MEM/MEM02_A.do?method=findIdReady&userId="+idObj.value+"&idNm="+idObjNm+"&formNm="+formNm;
    openWindowCenter(url, '아이디찾기', 350, 195, 'scrollbars=no');
   }
  }
 }


//------------------------------------------------------------------------
// 유관기관 검색 팝업
//
//---------------------------------------------------------------------------*/
function callOrgMem() {
 var url = "/MEM/MEM05_A.do?method=readList";
 openWindowCenter(url, 'CMIS', 660, 450, 'scrollbars=yes,resizable=no')
}

 
//------------------------------------------------------------------------
// Client 검색 팝업
//
//---------------------------------------------------------------------------*/
function callClient() {
 var url = "/CMR/CMR05_A.do?method=readClientList";
 openWindowCenter(url, 'CMIS', 760, 620, 'scrollbars=yes,resizable=no')
}

//------------------------------------------------------------------------
// Base64 Encoding
//
// ARGUMENTS
//  val : 인코딩 대상 문자열
//
// RETURN
//  result : 처리된 문자열
//---------------------------------------------------------------------------*/
function encode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) +
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);
  
   return output;
}

//------------------------------------------------------------------------
//  U-Learning 강좌 보기
//
//---------------------------------------------------------------------------*/
function viewLecList(url) {
 openWindowCenter(url, 'CMIS', 760, 620, 'scrollbars=yes,resizable=no')
}
//------------------------------------------------------------------------
//  주민번호 중복검사 초기화
//
//---------------------------------------------------------------------------*/
function ssnFnChk(form) {
 if(form.ssnFn) form.ssnFn.value ="F";
 
}
//------------------------------------------------------------------------
//  아이디 중복검사 초기화
//
//---------------------------------------------------------------------------*/
function idFnChk(form) {
 if(form.idFn) form.idFn.value ="F";
 
}
//------------------------------------------------------------------------
//  패스워드 유효성 여부 체크
//
//---------------------------------------------------------------------------*/
function validPWD( str )
{
     var cnt=0;
     if( str == ""){
      alert("비밀번호를 입력하세요.");
      return 0;
     }    

    /* check whether input value is included space or not  */
     var retVal = checkSpace( str );
     if( retVal != "") {
         alert("비밀번호는 빈공간 없이 연속된 영문 소문자와 숫자만 사용할 수 있습니다.");
         return 0;
     }
     for( var i=0; i < str.length; ++i)
     {
         if( str.charAt(0) == str.substring( i, i+1 ) ) ++cnt;
     } 
     if( cnt == str.length ) {
         alert("보안상의 이유로 한 문자로 연속된 비밀번호는 허용하지 않습니다.");
         return 0;
     }

     /* limitLength */

     //var isPW = /^[a-z0-9_~`!@\\#\$%\^&\*()-\+=\|\[\]\{\};:'"<,>.?/]{6,12}$/;
     var isPW = /^[a-z0-9]{6,20}$/;
     if( !isPW.test(str) ) {
         alert("비밀번호는 6~20자의 영문 소문자와 숫자만 사용할 수 있습니다.");
         return 0;
     }
     return 1;
}
//------------------------------------------------------------------------
//  비밀번호 영문자 숫자혼용  유효성 여부 체크
//
//---------------------------------------------------------------------------*/
function isValidPwd1(obj) {
 var cnt1 = 0;
 var cnt2 = 0;
    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    if(containsCharsOnly(obj, chars) == false) cnt1 = 1;
    chars = "abcdefghijklmnopqrstuvwxyz";
    if(containsCharsOnly(obj, chars) == false) cnt1 = 1;
    chars = "0123456789";
    if(containsCharsOnly(obj, chars) == false) cnt2 = 1;
    return cnt1+cnt2;

}
//------------------------------------------------------------------------
//  패밀리 사이트로 이동
//
//---------------------------------------------------------------------------*/
function goFamilySite(arg) {
 if (arg != "")
  window.open(arg);
}

// 로그아웃 체크 이벤트
function logout(){
    if(confirm('로그아웃하시겠습니까?')) {
  document.location.href="/MNN01_A.do?method=logout";
 }
}

posted by 기대주