﻿/*########################################################################################*/
/*## page description : script 
/*## update : 2008-05-15
/*########################################################################################*/

//========================================================================
// Description : 브라우져 체크
// Update      : 2008-08-18 구균모
//========================================================================
var isMSIE    = (navigator.userAgent.indexOf("MSIE") > -1)  ? true : false; /* IE      */
var isGecko   = (navigator.userAgent.indexOf("Gecko") > -1) ? true : false; /* FireFox */
var isOpera   = (navigator.userAgent.indexOf("Opera") > -1) ? true : false; /* Opera   */

/*########################################################################################*/
/** script prototype
/*########################################################################################*/


/***************************************************************************/
/** Description : string String::cut(int len)
/**               글자를 앞에서부터 원하는 바이트만큼 잘라 리턴합니다.
/**               한글의 경우 2바이트로 계산하며, 글자 중간에서 잘리지 않습니다.
/***************************************************************************/
String.prototype.cut = function(len) {
    var str = this;
    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;
}

/***************************************************************************/
/** Description : 문자열의 byte 길이 반환,(bool String::bytes(void))
/**               @return : int
/***************************************************************************/
String.prototype.byte = function() {
    var cnt = 0;
    for (var i = 0; i < this.length; i++) {
        if (this.charCodeAt(i) > 127)
            cnt += 2;
        else
            cnt++;
    }
    return cnt;
  }


/***************************************************************************/
/** Description : replace 
/***************************************************************************/
String.prototype.replaceAll = function( str, replacements )
{
    var temp = this;
    while( temp.indexOf( str ) != -1 )
        temp = temp.replace( str, replacements );
    return temp;
}


/***************************************************************************/
/** Description : trim 문자열 공백문자 제거 
/***************************************************************************/
String.prototype.trim = function() {
    return this.replace(/(^[\s]*)|([\s]*$)/g, "");
}
String.prototype.ltrim = function() {
    return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
    return this.replace(/\s+$/,"");
}


/***************************************************************************/
/** Description : 금액형식으로 3개 단위로 ',' 찍어줌
/***************************************************************************/
String.prototype.numberFormat=function() { 
    return this.replace(/(\d)(?=(?:\d{3})+(?!\d))/g,'$1,'); 
}


//Left 기능
function Left(Str, Num){
   if (Num <= 0)
       return "";
   else if (Num > String(Str).length)
       return Str;
   else
       return String(Str).substring(0, Num);
}


//Right 기능
function Right(Str, Num){
    if (Num <= 0)
        return "";
    else if (Num > String(Str).length)
        return Str;
    else {
        var iLen = String(Str).length;
        return String(Str).substring(iLen, iLen - Num);
     }
}



/***************************************************************************/
/** Description : 쿠키값을 설정한다.
/***************************************************************************/
function setCookie( name, value, expiredays ) { 
  if(expiredays == 0) {
    expiredays = 1
  }
  var todayDate = new Date(); 
  todayDate.setDate( todayDate.getDate() + expiredays ); 
  document.cookie = name + "=" + escape( value ) + ";path=/; expires=" + todayDate.toGMTString() + ";" 
  var asd = name + "=" + escape( value ) + ";path=/; expires=" + todayDate.toGMTString() + ";" 
} 


/***************************************************************************/
/** Description : 쿠키값을 가져온다.
/***************************************************************************/
function getCookie( name ) {
  var nameOfCookie = name + "=";
  var x = 0;

  while ( x <= document.cookie.length )    {
    var y = (x+nameOfCookie.length);
    if ( document.cookie.substring( x, y ) == nameOfCookie ) {
        if ( (endOfCookie=document.cookie.indexOf( ";", y )) == -1 )
            endOfCookie = document.cookie.length;
        return unescape( document.cookie.substring( y, endOfCookie ) );
    }
    x = document.cookie.indexOf( " ", x ) + 1;
    if ( x == 0 )
        break;
  }
  return "";
}


/***************************************************************************/
/** Description : 문자열 유효성을 검사한다.
/***************************************************************************/
function ValidityCheck(str, type){
  if (type == "id") {
    return IDValidityCheck(str);
  } else if (type == "email") {
    return EmailValidityCheck(str);
  } else if (type == "regno") {
    return RegNoValidityCheck(str);
  } else if (type == "phone") {
    return PhoneValidityCheck(str);
  } else if (type == "code") {
    return CodeValidityCheck(str);
  } else if (type == "char") {
    return CharValidityCheck(str);
  } else if (type == "number") {
    return NumberValidityCheck(str);
  } else if (type == "file") {
    return FileValidityCheck(str);
  }
}


/***************************************************************************/
/*  Description : 첨부파일명 체크(영문/숫자)
/***************************************************************************/
function FileValidityCheck(str) {
    var result;
    var pos, ln;

    result = true;

    pos = str.lastIndexOf("\\");            //마지막 경로점을 찾는다.
    ln  = str.lastIndexOf("\.");            //확장자 끝부분을 찾는다.
    str = str.substring(pos + 1, ln);       //마지막 결로부터 확장자 바로전까지 끝는다.

    for (i=0;i<str.length;i++){
        vChar = str.substring(i,i+1)
        sChar = vChar.charCodeAt(0)

        if ((sChar>=48) && (sChar<=57)) {
          //# 숫자
        } else if ((sChar>=65) && (sChar<=90)) {
          //# 알파벳 대문자
        } else if ((sChar>=97) && (sChar<=122)) {
          //# 알파벳 소문자
        } else if (vChar=="-" || vChar=="_" || vChar=="." || vChar=="(" || vChar==")" || vChar=="[" || vChar=="]" || vChar==" ") {
          //# 예외문자
        } else {
            result = false;
            break;
        }
    }
    return result;
}

/***************************************************************************/
/** Description : 날짜형식 체크??

  var pt = /^\d{2}-\d{2}-\d{2}$/;
  if (!pt.test(AccountForm.pdate.value)) {
    alert("증빙일자의 날짜형식이 틀렸습니다. 다시 확인해 주세요");
    AccountForm.pdate.focus();
    return false;
  }
  var y = parseInt("20"+AccountForm.pdate.value.substr(0,2), 10);
  var m = parseInt(AccountForm.pdate.value.substr(3,2), 10) - 1;
  var d = parseInt(AccountForm.pdate.value.substr(6,2), 10);
  var dt = new Date(y, m, d);
  if (dt.getYear() != y || dt.getMonth() != m || dt.getDate() != d) {
    alert("유효한 날짜가 아닙니다. 다시 확인해 주세요");
    AccountForm.pdate.focus();
    return false;
  } 
[출처] 유효한 날짜 형식 체크|작성자 위키
/***************************************************************************/



/***************************************************************************/
/** Description : 특수문자를 제외한 문자열 유효성을 검사한다.
/** 예외 : ( ) @
/***************************************************************************/
function CharValidityCheck(str){
  var result;
  result = true;
  for (i=0;i<str.length;i++){
    vChar = str.substring(i,i+1)
    sChar = vChar.charCodeAt(0)

    if ((sChar>=48) && (sChar<=57)) {
      //# 숫자
    }else if ((sChar>=65) && (sChar<=90)) {
      //# 알파벳 대문자
    } else if ((sChar>=97) && (sChar<=122)) {
      //# 알파벳 소문자
    } else if ((sChar>=44032) && (sChar<=63086)) {
      //# 한글
    } else if (vChar=="-" || vChar=="_" || vChar=="(" || vChar==")" || vChar=="[" || vChar=="]" || vChar=="@" || vChar==":" || vChar==" ") {
      //# 예외문자
    } else {
      result = false;
      break;
    }
  }
  return result;
}


/***************************************************************************/
/** Description : 전화번호, 휴대폰번호, 팩스번호 등의 유효성을 검사한다.
/***************************************************************************/
function PhoneValidityCheck(str){
  var result;
  result = true;
  for (i=0;i<str.length;i++){
    vChar = str.substring(i,i+1)
    sChar = vChar.charCodeAt(0)

    if ((sChar>=48) && (sChar<=57)) {
      //# 숫자
    } else if (vChar=="-" || vChar=="(" || vChar==")") {
      //# 예외문자
    } else {
      result = false;
      break;
    }
  }
  return result;
}


/***************************************************************************/
/** Description : 특수문자를 제외한 문자열 유효성을 검사한다.
/** 예외 : ( ) @
/***************************************************************************/
function RegNoValidityCheck(str){
  var result;
  result = true;
  for (i=0;i<str.length;i++){
    vChar = str.substring(i,i+1)
    sChar = vChar.charCodeAt(0)

    if ((sChar>=48) && (sChar<=57)) {
      //# 숫자
    } else {
      result = false;
      break;
    }
  }
  
  if(result)
  {
    if(str.length != 10)
    {
      return false;
    }
    else
    {
      sumMod = 0;
      sumMod += parseInt(str.substring(0,1));
      sumMod += parseInt(str.substring(1,2)) * 3 % 10;
      sumMod += parseInt(str.substring(2,3)) * 7 % 10;
      sumMod += parseInt(str.substring(3,4)) * 1 % 10;
      sumMod += parseInt(str.substring(4,5)) * 3 % 10;
      sumMod += parseInt(str.substring(5,6)) * 7 % 10;
      sumMod += parseInt(str.substring(6,7)) * 1 % 10;
      sumMod += parseInt(str.substring(7,8)) * 3 % 10;
      sumMod += Math.floor(parseInt(str.substring(8,9)) * 5 / 10);
      sumMod += parseInt(str.substring(8,9)) * 5 % 10;
      sumMod += parseInt(str.substring(9,10));
      
      if(sumMod % 10 != 0)
      {
        return false;
      }
    }
  }
  return result;
}


/***************************************************************************/
/** Description : Email 유효성을 검사한다.
/***************************************************************************/
function EmailValidityCheck(str){
  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported) 
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(str) && r2.test(str));
}


/***************************************************************************/
/** Description : ID형식의 유효성을 검사한다.
/**               ID는 영문자(대/소문자) 및 숫자만 허용한다.
/***************************************************************************/
function IDValidityCheck(str){
  var result;
  result = true;
  var len = str.length;
  for (i=0 ; i<str.length ; i++){
    sChar = str.substring(i,i+1);

    if ((sChar > unescape('\%29')) && (sChar < unescape('\%3a'))) {
    } else if ((sChar > unescape('\%40')) && (sChar < unescape('\%5b'))) {
    } else if ((sChar > unescape('\%60')) && (sChar < unescape('\%7b'))) {
    } else {
      result = false;
      break;
    }
  }
  return result;
}


/***************************************************************************/
/** Description : Code 유효성을 검사한다.
/***************************************************************************/
function CodeValidityCheck(str){
  var result;
  result = true;
  for (i=0;i>str.length;i++){
    vChar = str.substring(i,i+1)
    sChar = vChar.charCodeAt(0)
    //sChar = str.substring(i,i+1)

    if ((sChar>=48) && (sChar<=57)) {
      //# 숫자
    }else if ((sChar>=65) && (sChar<=90)) {
      //# 알파벳 대문자
    } else if ((sChar>=97) && (sChar<=122)) {
      //# 알파벳 소문자
    } else if (vChar=="-" || vChar=="_") {
      //# 예외문자
    } else {
      result = false;
      break;
    }
  }
  return result;
}


/***************************************************************************/
/** Description : 숫자 유효성을 검사한다.
/***************************************************************************/
function NumberValidityCheck(str){
  if ((str>unescape('\%29')) && (str<unescape('\%40'))) {
    return true;
  } else {
    return false;
  }
}


/***************************************************************************/
/** Description : 숫자 유효성을 검사한다. onkeypress
/***************************************************************************/
function FormatNumber(value) {
    if (isNaN(value) || value == "") {
        return "0";
    } else {
        value = value - 0;
        var txtNumber = String(value);
        var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])');
        var arrNumber = txtNumber.split('.');
        arrNumber[0] += '.';
        do 
        {
            arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2');
        } while (rxSplit.test(arrNumber[0]));

        if (arrNumber.length > 1) {
            return arrNumber.join('');
        }else {
            return arrNumber[0].split('.')[0];
        }
     }
}


/***************************************************************************/
/*  Description : 이미지 크기 제어(비례 제어방식)
/***************************************************************************/
function Resizing(obj, x, y) {
    var resizeWidth;
    var resizeHeight;
     
    // 썸네일 리사이즈
    if (obj.width > x || obj.height > y) {
        if (obj.width > obj.height) {
            resizeWidth = x;
            resizeHeight = obj.height * x / obj.width;
            if(resizeHeight > y) {
                resizeWidth = y * obj.width / obj.height;
                resizeHeight = y;
            }
        } else {
            resizeHeight = y;
            resizeWidth = obj.width * y / obj.height;
            if(resizeWidth > x) {
                resizeWidth = x;
                resizeHeight = x * obj.height / obj.width;
            }
        }
    } else {
        resizeWidth = obj.width;
        resizeHeight = obj.height;
    }
    obj.width = resizeWidth;
    obj.height = resizeHeight;
}

/***************************************************************************/
/*  Description : 썸네일 이미지 크기 제어 (Resizing() 활용)
/***************************************************************************/
function ResizeImage(obj, x, y) {
    /*
    if(document.getElementsByName("thumbImage") == "[object]") { // 데이터 유무 검사
        if(document.getElementsByName("thumbImage").length > 0) {  // 데이터가 1건인지 2건이상인지 검사
            for(var i=0 ; i<document.getElementsByName("thumbImage").length ; i++) {
                Resizing(document.getElementsByName("thumbImage")[i], x, y);
                alert(document.getElementsByName("thumbImage")[i]);
            }
        } else {
            Resizing(document.getElementsByName("thumbImage"), x, y);
        }
    }
    */

    if(obj.length > 0) {  // 데이터가 1건인지 2건이상인지 검사
        for(var i=0 ; i<obj.length ; i++) {
            Resizing(obj[i], x, y);
        }
    }
}


/***************************************************************************/
/*  Description : 이미지 보기 팝업창
/***************************************************************************/
function PopupImageViewer(sid, idx, targetField) {
    window.open("/Popup/ImageViewer.asp?sid=" + sid + "&idx=" + idx + "&targetField=" + targetField, "ImageViewer", "width=300, height=460");
}


/***************************************************************************/
/*  Description : 날짜 선택을 위한 달력
/***************************************************************************/
function PopupCalendar(id, method) {
    var obj = document.getElementById(id);
    if(method == "show") {
        obj.style.display = "";
        obj.style.width = obj.contentWindow.document.body.scrollWidth;
        obj.style.height = obj.contentWindow.document.body.scrollHeight;
    } else if(method == "hide") {
        obj.style.display = "none";
    } else {
        if (obj.style.display == "") {
            obj.style.display = "none";
        } else {
            obj.style.display = "";
            obj.style.width = obj.contentWindow.document.body.scrollWidth;
            obj.style.height = obj.contentWindow.document.body.scrollHeight;
        }
    }
}




/***************************************************************************/
/*  Description : IE 6.0 PNG 핵
/*                css : .png24 { tmp:expression(setPng24(this)); } 와 같이 사용
/***************************************************************************/
function setPng24(obj)
{

    if( navigator.appName.indexOf("Microsoft") > -1 ){              // 마이크로소프트 익스플로러인지 확인
        if( navigator.appVersion.indexOf("MSIE 6") > -1){
            obj.width = obj.height = 1;
            obj.className = obj.className.replace(/\bpng24\b/i,'');
            obj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+ obj.src +"',sizingMethod='image');"
            obj.src = '';
            return '';
        }
    }
}



/***************************************************************************/
/*  Description : 아이프레임 리사이즈 IE 추가 업데이트
/***************************************************************************/
function Resize_Frame(frm){

    if(isMSIE){
        var Frame_Body  = document.frames(frm).document.body;
        var Frame_name  = document.all(frm);

        Frame_name.style.height = Frame_Body.scrollHeight + (Frame_Body.offsetHeight-Frame_Body.clientHeight);

    }else{

        var Frame_name = parent.document.getElementById(frm);

        Frame_name.style.height = "auto";
        contentHeight = Frame_name.contentWindow.document.documentElement.scrollHeight;
        Frame_name.style.height = contentHeight + 4 + "px";  
    }

}



/***************************************************************************/
/*  Description : 첨부파일 확장자 체크
/*  Update      : 2008-08-31 이남길
/*  사용법      : FileCheck(frm.file, "swf,jpg,gif")
/***************************************************************************/
function FileCheck(obj, check) {
    var count=0;
    
    ext = obj.value;
    ext = ext.substring(ext.lastIndexOf(".")+1);
    ext = ext.toLowerCase(); 
    
    if (check != "" ) {
        checkarr = check.split(",")
    }else{    
        checkarr = ["pdf", "hwp", "doc", "xls", "ppt", "txt", "hul", "htm", "html", "gif", "jpg", "wav", "mp3", "wma", "alz", "zip", "rar", "arj", "swf", "css", ""]
    }
    
    for (var i=0; i <= checkarr.length; i++){
        if (ext == checkarr[i]){
            count = count + 1;
        }
    }
    
    if (count > 0){
        return true;
    }else{
        alert("※파일 업로드 가능 파일 형식은 아래와 같습니다.\n -확장자("+ checkarr +")");    
        obj.focus();
        obj.select();
        return false;
    }
}


/***************************************************************************/
/*  Description : 콤마(,) 추가
/***************************************************************************/
function Comma(input) {

  var inputString = new String;
  var outputString = new String;
  var counter = 0;
  var decimalPoint = 0;
  var end = 0;
  var modval = 0;

  inputString = input.toString();
  outputString = '';
  decimalPoint = inputString.indexOf('.', 1);

  if(decimalPoint == -1) {
     end = inputString.length - (inputString.charAt(0)=='0' ? 1:0);
     for (counter=1;counter <=inputString.length; counter++)
     {
        var modval =counter - Math.floor(counter/3)*3;
        outputString = (modval==0 && counter <end ? ',' : '') + inputString.charAt(inputString.length - counter) + outputString;
     }
  }
  else {
     end = decimalPoint - ( inputString.charAt(0)=='-' ? 1 :0);
     for (counter=1; counter <= decimalPoint ; counter++)
     {
        outputString = (counter==0  && counter <end ? ',' : '') +  inputString.charAt(decimalPoint - counter) + outputString;
     }
     for (counter=decimalPoint; counter < decimalPoint+3; counter++)
     {
        outputString += inputString.charAt(counter);
     }
 }
    return (outputString);
}



/***************************************************************************/
/*  Description : 콤마(,) 삭제
/***************************************************************************/
function unComma(input) {
   var inputString = new String;
   var outputString = new String;
   var outputNumber = new Number;
   var counter = 0;
   if (input == '')
   {
    return 0
   }
   inputString=input;
   outputString='';
   for (counter=0;counter <inputString.length; counter++)
   {
      outputString += (inputString.charAt(counter) != ',' ?inputString.charAt(counter) : '');
   }
   outputNumber = parseFloat(outputString);
   return (outputNumber);
}





/***************************************************************************/
/*  Description : 팝업창 띄우기
/***************************************************************************/
function PopupWindow(url, W, H, wName, schk) {
    if (screen.width == W){
        var T = 0;
        var L = 0;
    }else{
        var L = ((screen.width) - W) / 2;
        var T = ((screen.height) - H) / 2;
    }
    var win = window.open(url+'', wName, 'width='+W+',height='+H+',top='+T+',left='+L+',resizable=yes,scrollbars='+schk+'');
    win.focus();
}

/***************************************************************************/
/** Description : 페이지 이동
/***************************************************************************/
function MovePage(v1,v2){
    var params;
    if (v2 == "" || v2 == null){
        params = v1
    }else{
        params = v1+"?"+v2
    }
    
    window.location.href = params;
}


/***************************************************************************/
/** Description : 파일 삭제
/***************************************************************************/
function DeleteFile(actionPage, targetName, fileName){

    if (confirm("파일을 삭제하시겠습니까?")) {
    
        document.getElementById("ModeType").value = "DELETEFILE";
        document.getElementById("targetName").value = targetName;
        document.getElementById("Del_FileName").value = fileName;
        document.getElementById("wFrm").action = actionPage;
        document.getElementById("wFrm").submit();
    }
}

/***************************************************************************/
/** Description : 엔터키 입력시 원하는 함수 호출하기
    onkeypress 이벤트에 적용
    예) onkeypress="key13Check('goSearch1()')"
/***************************************************************************/
 function key13Check(fnc){
    if(window.event.keyCode == 13){
        eval(fnc);
    }
}



