/**
*
*		파일명 : common.js
* 
*		공통모듈 javascript
*
*/

var IEYES = 0;
var menufacture = navigator.appName;
var version = navigator.appVersion;
if((menufacture.indexOf('마이크로소프트') >= 0
	|| menufacture.indexOf('Microsoft') >= 0)
	&& version.indexOf('4.0') >= 0 )
{
   IEYES = 1;
}

/**
*	pageing 처리 
*/
function jumpPage(pageIndex,pageType)	{
	document.forms[0].pIndex.value = pageIndex;
	if(document.forms[0].ptype){
		document.forms[0].ptype.value = pageType;
	}
	document.forms[0].submit();
	
}

/**
*	multipageing 처리 
*/
function multijumpPage(formName,pageIndex,pageType)	{
	var frm = eval("document.forms[0]."+formName);
	
	frm.value = pageIndex;
	if(document.forms[0].ptype){
		document.forms[0].ptype.value = pageType;
	}
	document.forms[0].submit();
	
}

/**
*	multipageing 처리 
*/
function frontjumpPage(formName,pageIndex,pageType)	{
	var frm = eval("document."+formName);
	
	frm.pIndex.value = pageIndex;
	if(frm.ptype){
		frm.ptype.value = pageType;
	}
	frm.submit();
	
}

/**
*	multipageing 처리 
*/
function multifrontjumpPage(indexName,formName,pageIndex,pageType)	{
	var frm = eval("document."+formName+"."+indexName);
	
	frm.value = pageIndex;
	/*if(frm.ptype){
		frm.ptype.value = pageType;
	}*/
	eval("document."+formName).submit();
	
}
/**
 * @type   : function
 * @access : public
 * @desc   : 값이 null 이거나 white space 문자로만 이루어진 경우 true를 리턴한다.
 * <pre>
 *   isNull("  ");
 * </pre>
 * 위와같이 사용했을 경우 true를 리턴한다.
 * @sig  : value
 * @param  : value required 입력값
 * @return : boolean. null(혹은 white space) 여부
 */
function isNull(value) {
	if (value == null || (typeof(value) == "string" && trim(value) == ""))
		return true;
	else
		return false;
}


function toNumber(num){
   num = ""+num;
   if (num==null||trim(num)=="") { return 0; }

   num = num.replace(/,/g, "");

   if (!isNaN(num)) {
       num = Number(num);
   }else{
       alert(num+"은 숫자표현식이 아닙니다");
       num=0;
   }
   return num;

}


function getFileDownLoad(filePath,fileName) { 
	document.fileDownloadForm.filePath.value = filePath;
	document.fileDownloadForm.fileName.value = fileName;
	document.fileDownloadForm.action = "/ZFileDownload"
	document.fileDownloadForm.target = 'fileDownloadIframe';
	document.fileDownloadForm.submit(); 
	//document.all.fileDownloadIframe.src = "/ZFileDownload?filePath="+filePath+"&fileName="+fileName;

}


//===============================================================
// 함 수 명 : chkType(sType, nLength)
// 내    용 : 포커스를 이동할 때 type check (Focus-Out EVENT 처리시)
// PARAM    :   type: N 숫자, X 혼합, H 한글, D 날짜 , M 년월,
// RETURN   :
// 기    능 : 날짜 형식을 Check 하여 YYYY-MM-DD로 바꿔준다. ex) chkType("E", 16)
//===============================================================
function chkType(sType, nLength)
{
    var id = event.target;
    var obj = window.document.all(id);
    var val = obj.value;

    if(sType == "D")    {
        if(!chkDate(val)){
            obj.value = "";
            model.setFocus(id);
            return false;
        }
    }else if(sType == "YYMM") {
        if(!chkYYMM(val))   {
            obj.value = "";
            model.setFocus(id);
            return false;
        }
    }else if(sType == "YYYYMM") {
        if(!chkYYYYMM(val)){
            obj.value = "";
            model.setFocus(id);
            return false;
        }
    }else if(sType == "T") {//시간
        if(!isTime(val)){
            obj.value = "";
            model.setFocus(id);
            return false;
        }
    }else if(sType == "N") {    // 숫자
        if(!isNumber(val))  {
            obj.value = "";
            model.setFocus(id);
            return false;
        }
    }else if(sType == "ND"){    // .을 포함한 숫자
        if(!isNumberDot(val))   {
            obj.value = "";
            model.setFocus(id);
            return false;
        }
    }else if(sType == "H"){     // 한글
        if(!isHangul(val)){
            obj.value = "";
            model.setFocus(id);
            return false;
        }
    }else if(sType == "Ex"){     // 영문
        if(!isAlpha(val))   {
            obj.value = "";
            model.setFocus(id);
            return false;
        }
    }else if(sType == "E"){     // 영문 대문자
        if(!isAlpha(val))   {
            obj.value = "";
            model.setFocus(id);
            return false;
    }
        isUpper(val);
    }else if(sType == "e"){      // 영문 소문자
        if(!isAlpha(val))   {
            obj.value = "";
            model.setFocus(id);
            return false;
        }
        isLower(val);
    }else if(sType == "E9"){    // 영문과 숫자만
        if(!isAlphaNumeric(val)){
            obj.value = "";
            model.setFocus(id);
            return false;
        }
    }else if(sType == "JUMIN"){ //주민등록번호
        if(!isIdentifyNo(val)){
            obj.value = "";
            model.setFocus(id);
            return false;
        }
    }else if(sType == "SAUP"){ //사업자번호
        if(!isSaupNO(val))  {
            obj.value = "";
            model.setFocus(id);
            return false;
        }
    }else if(sType == "REGNO"){ //법인번호
        if(!isRegNo(val)){
            obj.value = "";
            model.setFocus(id);
            return false;
        }
    }else if(sType == "FGNNO"){ //재외국인번호
        if(!isFgnNo(val)){
            obj.value = "";
            model.setFocus(id);
            return false;
        }
    }else if(sType == "EMAIL"){ //E-mail 주소 검증
        if(!isEmail(val)){
            obj.value = "";
            model.setFocus(id);
            return false;
        }
    }else if(sType == "CARD"){//card 번호 검증
        if(!isCard(val)){
            obj.value = "";
            model.setFocus(id);
            return false;
        }
    }

    if(strLength(val) > nLength){
        if(sType == "H" || sType == "h"){
            alert("입력할 수 있는 최대 글자수를 넘었습니다. \n  최대 입력 글자수는 한글 " + nLength / 2 + " 자 입니다.");
        }else if(sType == "E" || sType == "e"){
            alert("입력할 수 있는 최대 글자수를 넘었습니다. \n  최대 입력 글자수는 영문 " + nLength + " 자 입니다.");
        }else{
            alert("입력할 수 있는 최대 글자수를 넘었습니다. \n  최대 입력 글자수는 " + nLength + " byte 입니다.");
        }
        obj.value = "";
        model.setFocus(id);
        return false;
    }
    return true;
}

/***************************************************
// 함 수 명 : beetweenAnB(x, a, b)
// 내    용 : x가 a 이상 b 이하인지 check
// PARAM
// RETURN : true/false
// 작 성 자 :
// 작 성 일 :
***************************************************/
function beetweenAnB(x, a, b)
{
    return parseInt(a) <= parseInt(x) && parseInt(x) <= parseInt(b);
}

/***************************************************
// 함 수 명 : beetweenAnB(x, a, b)
// 내    용 : x가 a 이상 b 이하인지 check
// PARAM
// RETURN : true/false
// 작 성 자 :
// 작 성 일 :
***************************************************/
function getRadioCheckedValue(elem)
{
    var sVal = "";
	for(i=0; i<elem.length; i++){
	    if(elem[i].checked == true){
	        sVal = elem[i].value;
	        break;
	    }
	}
	return sVal;
}

/***************************************************
// 함 수 명 : trim(str)
// 내    용 : 문자열내의 왼쪽, 오른쪽의 공백을 제거
// PARAM
//      str : 문자열
// RETURN : str  문자열
// 작 성 자 :
// 작 성 일 :
***************************************************/
function trim(str)
{
    if (str == null)    return "";

    return str.replace(/(^\s*)|(\s*$)/g, "");
}


/***************************************************
// 함 수 명 : ltrim(str)
// 내    용 : 문자열내의 왼쪽 공백을 제거
// PARAM
//      str : 문자열
// RETURN : str  문자열
// 작 성 자 :
// 작 성 일 :
***************************************************/
function ltrim(str)
{
    return str.replace(/(^\s*)/g, "");
}

/***************************************************
// 함 수 명 : rtrim(str)
// 내    용 : 문자열내의 오른쪽의 공백을 제거
// PARAM
//      str : 문자열
// RETURN : str  문자열
// 작 성 자 :
// 작 성 일 :
***************************************************/
function rtrim(str)
{
    return str.replace(/(\s*$)/g, "");
}


/***************************************************
// 함 수 명 : alterString(str,before,after)
// 내    용 : 문자 변환 함수
//  PARAM :     str : 입력문자열  before :변환전 문자열  after : 변환할 문자열
//   RETURN : returnStr : 변환된 문자열
// 작 성 자 :
// 작 성 일 :
***************************************************/
function alterString(str,before,after)
{
    var returnStr = "";
    for(i = 0; i < str.length; i++)
    {
        var val = str.charAt(i);
        var idx = before.indexOf(val);
        if(idx >= 0) val = after.charAt(idx);
        returnStr += val;
    }
    return returnStr;
}

/***************************************************
// 함 수 명 : isUpper(sVal)
// 내    용 : 소 --> 대문자 변환 함수
//  PARAM   :   sVal  입력문자열
//   RETURN : returnStr : 변환된 문자열
// 작 성 자 :
// 작 성 일 :
***************************************************/
function isUpper(sVal)
{
    var str1 = "abcdefghijklmnopqrstuvwxyz";
    var str2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    return alterString(sVal,str1,str2);
}

/***************************************************
// 함 수 명 : isLower(sVal)
// 내    용 : 대 --> 소문자 변환 함수
//  PARAM   : sVal  입력문자열
//   RETURN : returnStr : 변환된 문자열
// 작 성 자 :
// 작 성 일 :
***************************************************/
function isLower(sVal)
{
    var str1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var str2 = "abcdefghijklmnopqrstuvwxyz";
    return alterString(sVal,str1,str2);
}


/***************************************************
// 함 수 명 : trimStr(sVal, tm )
// 내    용 : 문자열에서 특정 문자열을 모두 trim 한다.
// PARAM    : sVal 입력스트링, tm : trim할 문자값
// 리    턴 : tm 으로 trim 한 값을 자른 값
// 작 성 자 :
// 작 성 일 :
 ***************************************************/
function trimStr(sVal, tm)
{
 // var rtnVal = "";
  var cnt = sVal.length;
  for(var i=0; i<cnt; i++)
    {
      sVal = sVal.replace(tm, "");
    }
    return sVal;
}

/*===============================================================
// 함 수 명 : addZero(sVal)
// 내    용 : 길이가1인 경우 앞에 "0"을 붙인다.
// PARAM    : sVal 입력스트링
// 리    턴 : String  "0"값을 포함하는 값
===============================================================*/

function addZero(sVal)
{
  var iLen = sVal.length;   //인수값의 길이를 구한다.
  if(iLen == 1)
  {
    sVal = "0"+sVal;
  }
  else if(iLen == 0)
  {
    return;
  }
  return sVal;
}

/*===============================================================
// 함 수 명 : isNumber(sVal)
// 내    용 : 입력값이 숫자인지를 확인한다
// PARAM    : sVal 입력스트링
// 리    턴 : Boolean True이면 숫자값
// 작 성 자 :
// 작 성 일 :
===============================================================*/
function isNumber(sVal)
{
  if(sVal.length < 1)
  {
    return false;
  }

  for(i=0; i<sVal.length; i++)
  {
    iBit = parseInt(sVal.substring(i,i+1));     //문자(Char)를 숫자로 변경
    if(('0' < iBit) || ('9' > iBit))
    {
      //alert(i+':'+iBit+':'+'Mun');
    }
    else
    {
      //alert((i+1)+'번째 문자는 숫자가 아닙니다.');
      return false;
    }
  }
  return true;
}

/*===============================================================
// 함 수 명 : isNumberSpace(sVal)
// 내    용 : sVal 값이 숫자인지를 확인한다.(' '까지 괜찮음)
// PARAM    : sVal 입력스트링
// 리    턴 : Boolean True이면 숫자값
// 작 성 자 :
// 작 성 일 :
===============================================================*/
function isNumberSpace(sVal)
{
  if(sVal.length > 0)
  {
    for(var i=0;i<sVal.length;i++)
    {
      sBitData = sVal.substring(i,i+1);     //문자열의 문자(char)를 넣는다
      if(sBitData == ' ')
      {
      }
      else
      {
        iBit = parseInt(sVal.substring(i,i+1)); //문자(char)를 숫자로
        if(('0' < iBit) || ('9' > iBit) || (' ' == sBitData))
        {
        }
        else
        {
          return false;
        }
      }
    }
  }
  return true;
}

/*===============================================================
// 함 수 명 : isNumberDot(sVal)
// 내    용 : sVal 값이 숫자인지를 확인한다.('.'까지 괜찮음), 마이너스 값도 허용
// PARAM    : sVal 입력스트링
// 리    턴 : Boolean True이면 숫자값
// 작 성 자 :
// 작 성 일 :
===============================================================*/
function isNumberDot(sVal)
{

  var result;

  if(sVal.length < 1)
  {
    return false;
  }

  for(var i=0;i<sVal.length;i++)
  {
    sBitData = sVal.substring(i,i+1);       //문자열의 문자(char)를 넣는다

    if( i == 0 ) {
        if( sBitData == '-' ) { // 마이너스값 허용
        } else {
            if( sBitData >= '0' && sBitData <= '9' ) {

            } else {
                return false;
            }
        }

    } else {

        if(sBitData == '.'){
        } else {
          iBit = parseInt(sVal.substring(i,i+1));   //문자(Char)를 숫자로

          if(('0' < iBit) || ('9' > iBit) || ('.' == sBitData)){
          } else {
            return false;
          }
        } //end of if-else

    }//추가

  } //end of for

  return true;
}

/*===============================================================
// 함 수 명 : isTime(sHm)
// 내    용 : 시간 값을 확인한다.
// PARAM    : sHm 입력스트링(HHMMSS)
// 리    턴 : Boolean true이면 시간 범위내
// 작 성 자 :
// 작 성 일 :
// 최종수정일 :
===============================================================*/
function isTime(sHm)
{

    sHm = trimStr(sHm, ":");        //구분자(:) 를 Trim

    if(sHm == "")
    {
        return true;
    }

  // 숫자 확인
  if(!isNumber(sHm))
  {
    alert('숫자만 입력하십시오');
    return false;
  }

  // 길이 확인
  if(sHm.length != 6)
  {
    alert('6자리를 모두 입력하십시오(HHMMSS)');
    return false;
  }

  var iHH = parseInt(trimZero(sHm.substr(0,2)));        //시간을 숫자로
  var iMM = parseInt(trimZero(sHm.substr(2,2)));    //분을 숫자로
  var iSS = parseInt(trimZero(sHm.substr(4,2)));        //초를 숫자로

  if((iHH < 0) ||(iHH >23))
  {
    alert('시간 입력이 잘못 되었습니다.');
    return false;
  }

  if((iMM < 0) ||(iMM >59))
  {
    alert('분 입력이 잘못 되었습니다.');
    return false;
  }

  if((iSS < 0) ||(iSS >59))
  {
    alert('초 입력이 잘못 되었습니다.');
    return false;
  }
  return true;
}

/*===============================================================
// 함 수 명 : isAlpha(sVal)
// 내    용 : 대소문자를 포함한 영문자인지 확인한다.
// PARAM    : sVal 입력문자열
// 리    턴 : Boolean true이면 알파벳
// 작 성 자 :
// 작 성 일 :
===============================================================*/
function isAlpha(sVal)
{
  // Alphabet 값
  var sAlphabet="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var iLen=sVal.length;   //입력값의 길이

  for(i=0;i<iLen;i++)
  {
    if(sAlphabet.indexOf(sVal.substring(i,i+1))<0)
    {
      alert("허용된 문자가 아닙니다.\n영문으로 입력해 주십시오");
      return false;
    }
  }
  return true;
}


/*===============================================================
// 함 수 명 : isAlphaBlank(sVal)
// 내    용 : 대소문자를 포함한 영문자인지 확인한다.(blank 포함)
// PARAM    : sVal 입력문자열
// 리    턴 : Boolean true이면 알파벳
// 작 성 자 :
// 작 성 일 :
===============================================================*/
function isAlphaBlank(sVal)
{
  // Alphabet 값
  var sAlphabet="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";
  var iLen=sVal.length;   //입력값의 길이

  for(i=0;i<iLen;i++)
  {
    if(sAlphabet.indexOf(sVal.substring(i,i+1))<0)
    {
      alert("허용된 문자가 아닙니다.\n영문으로 입력해 주십시오");
      return false;
    }
  }
  return true;
}

/*===============================================================
// 함 수 명 : isAlphaNumeric(sVal)
// 내    용 : 영문자와 숫자 구성된 문자열인지 확인
// PARAM    : sVal 입력문자열
// 리    턴 :   Boolean true이면 영문자,숫자로 구성된 문자열
// 작 성 자 :
// 작 성 일 :
===============================================================*/
function isAlphaNumeric(sVal)
{
  var sAlphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
  var iLen      = sVal.length;

  for ( i = 0; i < iLen; i++ )
  {
    if ( sAlphabet.indexOf(sVal.substring(i, i+1)) < 0 )
    {
      return false;
    }   // end of if
  } // end of for
  return true;
}   // end of isAlphaNumeric

/*===============================================================
// 함 수 명 : strLength(sVal)
// 내    용 : 문자열의 길이를 return (한글:2자)
// PARAM    : sVal 입력문자열
// 리    턴 :   return : int 입력문자열의 길이
// 작 성 자 :
// 작 성 일 :
===============================================================*/
function strLength(sVal)
{
  var sBit = '';    // 문자열의 문자(Char)
  var iLen = 0; //문자열 길이

  for ( i = 0 ; i < sVal.length ; i++ )
  {
    sBit = sVal.charAt(i);
    if ( escape( sBit ).length > 4 )
    {
      iLen = iLen + 2;
    }
    else
    {
      iLen = iLen + 1;
    }
  }
  return iLen;
}

/*===============================================================
// 함 수 명 : isHangul(sVal)
// 내    용 : 한글인지 여부 체크
// PARAM    : sVal 입력문자열
// 리    턴 :   Boolean true이면 한글
// 작 성 자 :
// 작 성 일 :
===============================================================*/
function isHangul(sVal)
{
  var sBit = '';
  var iLen = 0;
  for(i=0;i<sVal.length;i++)
  {
    sBit = sVal.charAt(i);
    if(escape( sBit ).length <= 4)
    {
      alert("입력 항목이 한글이 아닙니다.");
      return false;
    }
  }
  return true;
}

/*===============================================================
// 함 수 명 : isIdentifyNo(sID)
// 내    용 : 주민등록 여부를 확인한다.
// PARAM    : sID - 입력문자열(주민번호 13자리)
//          : omitMsgFlag - alert메세지 생략여부(true 이면 생략)[옵션]
// 리    턴 : Boolean true이면 적합한 주민번호
// 작 성 자 :
// 작 성 일 :
===============================================================*/
function isIdentifyNo(sID, omitMsgFlag)
{
  if(_zxq1(sID)){
      return true;
  }else{
    if(omitMsgFlag != true) alert("주민등록 번호가 정확하지 않습니다.");
    return false;
  }
}

function isIdentifyNoBln(sID, omitMsgFlag)
{
  if(_zxq1(sID)){
      return true;
  }else{
    if(omitMsgFlag != true) 
    return false;
  }
}

  var _zxq1 = function(sID) {
  var cBit = 0;
  var sCode="234567892345";

  for(i=0;i<12;i++){
    cBit = cBit+parseInt(sID.substring(i,i+1))*parseInt(sCode.substring(i,i+1));
  }

  cBit=11-(cBit%11);
  cBit=cBit%10;

  if(parseInt(sID.substring(12,13))==cBit){
    return true;
  }else{
    return false;
  }
}

/*==================================================================================*/
/*  메소드 명  : 성별얻기
/*  사용예 : getSex("7110101010101", true);
/*  cdValueFlag : ture - 코드형태로 리턴(1,2), false - 한글형태로 리턴 (남, 여)
/*==================================================================================*/
function getSex(juminNo, cdValueFlag)
{
    //주민번호 체크
    if (!isIdentifyNo(juminNo, true)) return;

    var juminNoGb = juminNo.substring(6,7);
    if (juminNoGb == '1' || juminNoGb == '3' || juminNoGb == '5' || juminNoGb == '7') {
        if (cdValueFlag) return '1';
        else return '남';
    } else {
        if (cdValueFlag) return '2';
        else return '여';
    }
}

/*===============================================================
// 함 수 명 : isRegNo(sRegNo)
// 내    용 : 법인번호가 정확한지 확인한다.
// PARAM    : sRegNo - 법인번호
//          : omitMsgFlag - alert메세지 생략여부(true 이면 생략)[옵션]
// 리    턴 : Boolean true이면 검증된 법인번호
// 작 성 자 :
// 작 성 일 :
===============================================================*/
function isRegNo(sRegNo, omitMsgFlag)
{
  if (!isNum(sRegNo))
  {
    if(omitMsgFlag != true) alert("법인번호는 반드시 숫자로 구성되어야 합니다.");
    return false;
  }
  else if (sRegNo.length != 13)
  {
    if(omitMsgFlag != true) alert("법인번호는 13자리 입니다.");
    return false;
  }

  if (_zxq2(sRegNo)){
       return true;
  }else{
      if(omitMsgFlag != true) alert("법인번호가 정확하지 않습니다.");
      return true;
  }
}

var _zxq2 = function(sRegNo) {
  var arr_regno = sRegNo.split("");
  var arr_wt = new Array(1,2,1,2,1,2,1,2,1,2,1,2);
  var iSum_regno = 0;
  var iCheck_digit = 0;

  //1~12자리까지 가중치를 곱하여 모두 더한다.
  for (i = 0; i < 12; i++)
  {
      iSum_regno +=  eval(arr_regno[i]) * eval(arr_wt[i]);
  }

  //합계를 10으로 나눈 나머지를 10에서 뺀다.
  iCheck_digit = 10 - (iSum_regno % 10);

  //계산 값을 10으로 나눈 나머지를 구한다. (Check Digit)
  iCheck_digit = iCheck_digit % 10;

  if (iCheck_digit == arr_regno[12]) return true;
  else return false;
}

/*===============================================================
// 함 수 명 : isSaupNO(iSaupNo)
// 내    용 : 사업자 번호가 정확한지 확인한다.
// PARAM    : iSaupNo - 사업자번호
//          : omitMsgFlag - alert메세지 생략여부(true면 생략)[옵션]
// 리    턴 : Boolean true이면 검증된 사업자번호
// 작 성 자 :
// 작 성 일 :
===============================================================*/
function isSaupNO(iSaupNo, omitMsgFlag)
{
  if (!isNum(iSaupNo)){
      if(omitMsgFlag != true) alert("사업자번호는 반드시 숫자로 구성되어야 합니다.");
      return false;
  }
  else if (iSaupNo.length != 10)
  {
      if(omitMsgFlag != true) alert("사업자번호는 10자리 입니다.");
      return false;
  }

  if(_zxq3(iSaupNo)){
      return true;
  }else{
      if(omitMsgFlag != true) alert("사업자번호가 정확하지 않습니다.");
      return false;
  }
}

var _zxq3 = function(iSaupNo) {
  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]) return true;
  else return false;
}

/**
 * @type   : function
 * @access : public
 * @desc   : 새창띄우기
 * @Param    : val  : 입력값
 */
function openWindow(name, url, left, top, width, height, toolbar, menubar, statusbar, scrollbar, resizable)
{
    toolbar_str = toolbar ? 'yes' : 'no';
    menubar_str = menubar ? 'yes' : 'no';
    statusbar_str = statusbar ? 'yes' : 'no';
    scrollbar_str = scrollbar ? 'yes' : 'no';
    resizable_str = resizable ? 'yes' : 'no';

	if (left == "") left = (screen.width - width) / 2;
	if (top == "") top = (screen.height - height) / 2;

    var newWin = window.open(url, name, 'left='+left+',top='+top+',width='+width+',height='+height+',toolbar='+toolbar_str+',menubar='+menubar_str+',status='+statusbar_str+',scrollbars='+scrollbar_str+',resizable='+resizable_str);
    return false;
}

/**
 * @type   : function
 * @access : public
 * @desc   : 입력값이 사업자번호(3)인지 법인등록번호(2)인지 주민등록번호(1)인지 체크
 * <pre>
 *   typeNum("6901011234560");
 * </pre>
 * @Param    : val  : 입력값
 */
function typeNum(val)
{
    if(!isNum(val)) return 9;//undefine

    if(_zxq1(val))      return 1; //주민등록번호
    else if(_zxq2(val)) return 2; //법인등록번호
    else if(_zxq3(val)) return 3; //사업자번호
    else                return 9;
}

/*===============================================================
// 함 수 명 : isFgnNo(fgnno)
// 내    용 : 재외국인 번호가 정확한지 확인한다.
// PARAM    : fgnno 재외국인 번호
//          : omitMsgFlag - alert메세지 생략여부(true면 생략)[옵션]
// 리    턴 : Boolean true이면 검증된 번호
// 작 성 자 :
// 작 성 일 :
===============================================================*/
function isFgnNo(fgnno, omitMsgFlag) {
  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)
  {
    if(omitMsgFlag != true) alert("재외국인 번호가 정확하지 않습니다.\n 다시 확인하신후 입력하십시오.");
    return false;
  }
  if( (buf[11]!=6) && (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9) )
  {
    if(omitMsgFlag != true) alert("재외국인 번호가 정확하지 않습니다.\n 다시 확인하신후 입력하십시오.");
    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])
  {
    if(omitMsgFlag != true) alert("재외국인 번호가 정확하지 않습니다.\n 다시 확인하신후 입력하십시오.");
    return false;
  }
  return true;
}

/*===============================================================
// 함 수 명 : isEmail(sVal)
// 내    용 : email 이 정확한지 확인한다.
// PARAM    : 입력 문자열
// 리    턴 :   Boolean true이면 ok
// 작 성 자 :
// 작 성 일 :
===============================================================*/
function isEmail(sVal)
{

    var email = sVal.split("@");

    if(email.length != 2) return false;

    if(email[0].replace(/(^\s*)|(\s*$)/g, "").length == 0) return false;

    var domain = email[1].split(".");

    /// 삭제 2008.05.20
    //if(domain.length != 2) return false;

    if(domain[0].replace(/(^\s*)|(\s*$)/g, "").length == 0) return false;
    if(domain[1].replace(/(^\s*)|(\s*$)/g, "").length == 0) return false;

    return true;
}


/***************************************************
// 함 수 명 : trimZero(sVal)
// 내    용 : 첫번째 Zero 값을 자른다.
// PARAM    : sVal 입력스트링
// 리    턴 : String  Zero값을 자른 값
// 작 성 자 :
// 작 성 일 :
 ***************************************************/
function trimZero(sVal)
{
  if(sVal.charAt(0) == '0')
  {
    return sVal.substring(1,sVal.length);
  }
  else
  {
    return sVal;
  }
}




/* 지정 단위에서 반올림(R), 올림(U), 내림(D)하는 함수
* parameter : vInput 입력값
* parameter : vSplit 절사단위
* parameter : gbn    구분(반올림(R), 올림(U), 내림(D))
* 예) cVal(123.456,   1, D) ==> 120
*     cVal(123.456,   0, D) ==> 123
*     cVal(123.456,  -1, D) ==> 123.4
*/
function cVal(vInput, vSplit, gbn){

   if(vSplit == null) vSplit = 3; //default : 천단위
   if(gbn    == null) gbn ='D';//default : 내림

   var vA;
   if(     gbn=='R') vA = Math.round(Math.abs(vInput) * Math.pow(10,-vSplit))/Math.pow(10,-vSplit);
   else if(gbn=='U') vA = Math.ceil( Math.abs(vInput) * Math.pow(10,-vSplit))/Math.pow(10,-vSplit);
   else if(gbn=='D') vA = Math.floor(Math.abs(vInput) * Math.pow(10,-vSplit))/Math.pow(10,-vSplit);

      if(vInput < 0) vA = -vA;

      return vA;
}

// 리스트박스 아이템 추가
function objItemAdd(obj,val,txt) {
	
	if(obj == null){
	}else{
		var objOption = document.createElement("option");
		objOption.text = txt;
		objOption.value = val;
		
		obj.add(objOption,obj.length+1);
	}
}

// 리스트박스 아이템  삭제
function objItemDel(obj) {
	if(obj == null){
	}else{
		var len = obj.length;
	
		for(var i=0; i<len; i++) {
			for(var j=0; j<obj.options.length; j++) {
				if(obj.options[j].selected == true) {
					obj.remove(j);
					break;
				}
			}
		}    	
	}
}

// 리스트박스 아이템전체  삭제
function objItemAllDel(obj) {

	var len = obj.length;

	for(var i=0; i<len; i++) {
		for(var j=0; j<obj.options.length; j++) {
			obj.remove(j);
		}
	}    	
}
//SELECT ALL
function objSelectAll(box) {
     for(var i=0; i<box.length; i++) {
     box[i].selected = true;
     }

 return true;
}

//값을 포함하는지 check
function containsInList(obj, value)
{
	if(obj == null){
	}else{
		for(var i=0; i<obj.length; i++) {
			for(var j=0; j<obj.options.length; j++) {
				if(obj.options[j].value == value) {
					return true;
					break;
				}
			}
		}
	}
	 
    return false;
}

//값을 포함하는지 check
function contains(obj, value)
{
      if(obj instanceof Array){
          for(var x=0 ; x < obj.length ; x++){
              if(obj[x] == value) return true;
          }
      }else{
          if(obj == value) return true;
      }
      return false;
}

//숫자 체크(0~9 허용)
function isNum(str){
   return (/^[0-9]*$/gi).test(str);
}

//숫자(정수) 체크(0~9, '-' 허용)
function isIntNum(str){
   return (/^-?[0-9]*$/gi).test(str);
}

//숫자(실수) 체크(0~9, '.', '-' 허용)
function isRealNum(str){
   return (/^-?[0-9.]*$/gi).test(str);
}

/**
 * @type   : prototype_function
 * @access : public
 * @desc   : 자바스크립트의 내장 객체인 String 객체에 simpleReplace 메소드를 추가한다. simpleReplace 메소드는
 *           스트링 내에 있는 특정 스트링을 다른 스트링으로 모두 변환한다. String 객체의 replace 메소드와 동일한
 *           기능을 하지만 간단한 스트링의 치환시에 보다 유용하게 사용할 수 있다.
 * <pre>
 *     var str = "abcde"
 *     str = str.simpleReplace("cd", "xx");
 * </pre>
 * 위의 예에서 str는 "abxxe"가 된다.
 * @sig    : oldStr, newStr
 * @param  : oldStr required 바뀌어야 될 기존의 스트링
 * @param  : newStr required 바뀌어질 새로운 스트링
 * @return : replaced String.
 */
String.prototype.simpleReplace = function(oldStr, newStr) {
    var rStr = oldStr;

    rStr = rStr.replace(/\\/g, "\\\\");
    rStr = rStr.replace(/\^/g, "\\^");
    rStr = rStr.replace(/\$/g, "\\$");
    rStr = rStr.replace(/\*/g, "\\*");
    rStr = rStr.replace(/\+/g, "\\+");
    rStr = rStr.replace(/\?/g, "\\?");
    rStr = rStr.replace(/\./g, "\\.");
    rStr = rStr.replace(/\(/g, "\\(");
    rStr = rStr.replace(/\)/g, "\\)");
    rStr = rStr.replace(/\|/g, "\\|");
    rStr = rStr.replace(/\,/g, "\\,");
    rStr = rStr.replace(/\{/g, "\\{");
    rStr = rStr.replace(/\}/g, "\\}");
    rStr = rStr.replace(/\[/g, "\\[");
    rStr = rStr.replace(/\]/g, "\\]");
    rStr = rStr.replace(/\-/g, "\\-");

    var re = new RegExp(rStr, "g");
    return this.replace(re, newStr);
}

//텍스트 필드에 숫자만 입력되게 함
function checkNum(field){
	
	var anum=/(^\d+$)|(^\d+\.\d+$)/		//숫자 체크
	
	if (!anum.test(field.value)){
		field.value="";
		return;		
	}	
}

// DATE 변환 (ex. 2007/09/08 => 2007-08-07)
function getDateChanage(date){
	
	var rtnValue = '';
	
	for(i=0; i<date.length; i++){
		if(date.charAt(i) == '/'){
			rtnValue += '-';
		}else if(date.charAt(i)){
			rtnValue += date.charAt(i);
		}
	}
	
	return rtnValue;
}

function fileUploadCheck(fileName , value){
	if(fileName == null){
		alert("파일경로명이 올바르지 않습니다.");
		return true;
	}else{
		var strArray 	= new Array();
		var arrFileName = fileName.split(".");
		
		switch(value){
			case 1 : strArray = new Array('exe','asp','aspx','php','jsp','js','php3','inc','pi','cgi'); break;
		}
		
		fileName	= arrFileName[arrFileName.length-1];
		
		for(i = 0; i < strArray.length; i++){
			if(fileName == strArray[i]){
				return true;
			}
		}
	}	
	return false;
}


function SubMenu(obj,type) {
	var div = eval("document.all." + obj);
	
	if(type=='open'){div.style.top = event.y - 5 ;div.style.left = event.x - 5 ;div.style.display = "block";}
	
	else if (type == 'over') {div.style.display = "block";}
	
	else if (type == 'out') {div.style.display = "none";}
}

/**
*  자동으로 다음칸 이동
*  length : 갯수 (숫자만큼 입력시 다음칸으로 이동)
*  checkfield : 현재 필드   (this,form)
*  nextfield : 이동시킬 필드 (ex: tel2)
*   
*  전화번호 예시
*  checkFill(3,this,myform,tel2)
*/
function checkFill(length,checkfield,nextfield)
{
	val = checkfield.value.length;	
	if(val==length)
	{
		nextfield.value="";
		nextfield.focus();
	}
	return;
}

//-------------------------------------------------------------------
// 지정된 객체의 문자열의 길이를 계산하는 부분
//-------------------------------------------------------------------
function CheckByte(str)
{
	var i;
	var strLen;
	var strByte;
	strLen = str.length;

	// IE4.0 이상
	if(IEYES == 1)
	{
		for(i=0, strByte=0;i<strLen;i++)
		{
			if(str.charCodeAt(i) > 255 )
				strByte += 2;
			else
				strByte++;
		}
		return strByte;
	}

	// Netscape일 경우
	else
	{
		return strLen;
	}
}

function getByteLength(s){
   var len = 0;     
   if ( s == null ) return 0;
   for(var i=0;i<s.length;i++) {
	  var c = escape(s.charAt(i));
      if ( c.length == 1 ) len ++;
      else if ( c.indexOf('%u') != -1 ) len += 2;
      else if ( c.indexOf('%') != -1 ) len += c.length/3;
   }            
   return len;
}

function cutStr(str, len) {
	var l = 0;
	for (var i=0; i<str.length; i++) {
		l += (str.charCodeAt(i) > 128) ? 2 : 1;
		if (l > len) return str.substring(0,i);
	}
	return str;
}


function limit_maxLen(obj, maxLen, msg) {
  strLen = getByteLength(obj.value);
  if (strLen >= maxLen)
  {
    alert(msg+"는 최대 "+ maxLen + " Byte입니다.");
	obj.value = cutStr(obj.value,maxLen);
    obj.focus();

    event.returnValue = false;
  } else {
    event.returnValue = true;
  }
}

function f_checkSequence(prevDate, nextDate) {

	if( (prevDate.length != 10 ) || (nextDate.length != 10 ) )  {
		return(false);
	}

	var tmpPrevDate = prevDate.substring(0,4)+prevDate.substring(5,7)+prevDate.substring(8,10) ;    
	var tmpNextDate = nextDate.substring(0,4)+nextDate.substring(5,7)+nextDate.substring(8,10) ;
		                                                                                                         
	if ( tmpPrevDate <= tmpNextDate )  {
			return(true);
	}
	
	return(false);
}

function js_login() {
	//var winLogin = openPopup("https://www.kiat.or.kr/member/kiatMemberLoginView.do?siteNick=NTB","LogIn");
	var winLogin = openPopup("http://192.168.12.206:8080/member/kiatMemberLoginView.do?siteNick=NTB","LogIn");
	winLogin.focus();
}

function js_logout() {
	var answer = confirm("로그아웃하시겠습니까?");

	if (answer == true) {
		try
		{
			MagicPass.siteLogout();	
		}
		catch (e)
		{
			window.top.location.replace("/magicsso/logout.jsp");
		}
	}
}

function js_join() {
    var winJoin = openPopup("https://www.kiat.or.kr/member/kiatMemberRegister1.do?siteNick=NTB","JOIN");
	winJoin.focus();
}

function js_mypage() {
    var winMyPage = openPopup("https://www.kiat.or.kr/member/kiatMemberUpdateView.do?siteNick=NTB","MYPAGE");
	winMyPage.focus();
}

function js_passsearch(){
	var winSearch = openPopup("https://www.kiat.or.kr/member/searchIdView1.do?siteNick=NTB","FIND_ID_PASSWORD");
	winSearch.focus();
}

function js_qna() {
	var winQna = window.open("https://www.kiat.or.kr/site/program/board/write.jsp?menuID=001003001&type=&boardTypeID=4&boardID=&siteNick=NTB");
	winQna.focus();
}

function openPopup (sURL, title) {
    var sWidth, sHeight;
    var sFeatures;
    var oWindow;
    var SP2 = false;
    var POPUP_WIDTH     = 800;
    var POPUP_HEIGHT    = 760;
    var B_MAIN_PAGE     = true;

    sWidth  = POPUP_WIDTH;
	sHeight = POPUP_HEIGHT;
	var x = (screen.width) ? (screen.width-sWidth)/2 : 0;
    var y = (screen.height) ? (screen.height-sHeight)/2 : 0;  
    sTitle = title;

    try {
      SP2 = (window.navigator.userAgent.indexOf("SV1") != -1);
      
      if (SP2)     {   // XP SP2 브라우저임..
        sHeight = Number(sHeight)+10;
      }else{  //그외 브라우저
      }
    } catch(e) {}
    
    sFeatures =  "width=" + sWidth + ",height=" + sHeight ;
    sFeatures += ",left=" + x + ",top=" + y ;
    sFeatures += ",directories=no,location=no,menubar=no,resizable=yes,scrollbars=yes,status=no,titlebar=no,toolbar=no";
        
    if(sURL!=null && sURL.length > 0) {
      if(sURL.indexOf("?") > 0) {
        sURL += "&thref="+encodeURI(location.href);
      } else {
        sURL += "?thref="+encodeURI(location.href);
      }
    }
    oWindow = window.open(sURL, sTitle, sFeatures);
    oWindow.focus();
 
    return oWindow;
}