공용 자바스크립트 - common_u

Posted by RAY.D
2016. 5. 25. 08:06 Web/javascript / jQuery
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

/*****************************************************************************************
 * 함  수  명 :  gfn_IsNull
 * 입      력 :  1. sValue - String
 * 반      환 :  Boolean
 * 기      능 :  Null Check
 *****************************************************************************************/
function gfn_IsNull(sValue)
{
    if (new String(sValue).valueOf() == "undefined") return true;
    if (sValue == null) return true;
    
    var v_ChkStr = new String(sValue);

    if (v_ChkStr == null) return true;
    if (v_ChkStr.toString().length == 0 ) return true;
    return false;
}

/*****************************************************************************************
 * 함  수  명 :  gfn_GetLengthByte
 * 입      력 :  1. sValue  - 문자열
 * 반      환 :  문자열 길이(Byte)를  반환.
 * 기      능 :  입력된 문자의 문자열 길이를 Byte로 반환한다.
 *****************************************************************************************/
function gfn_GetLengthByte(sValue)
{
    var v_ChkStr = sValue.toString();
    var v_cnt = 0;
   
    for (var i=0; i<v_ChkStr.length; i++)
    {
        if (v_ChkStr.charCodeAt(i) > 127)
        {
            v_cnt += 2;
        } else {
            v_cnt += 1;
        }
    }
 
 return v_cnt;
}

/*****************************************************************************************
 * 함  수  명 : gfn_NumFormat(nNumber)
 * 입      력 : 1. nNumber - 문자열로 출력할 실수
 *     2. nDetail - 출력시 소숫점 이하의 자릿수.(반올림함)
 * 반      환 : 문자열로 바뀐 실수.
 * 기      능 : 출력되는 실수는 정해진 소숫점 자릿수를 가지며, 정수부분에는
 *                  3자리마다 ',' 가 삽입됩니다.
 *****************************************************************************************/
function gfn_NumFormat(nNumber,nDetail)
{
 if (nNumber == null) return "";
 if (nDetail == null) nDetail = 0;
 
 nNumber    = parseFloat(nNumber);
 nNumber    = Math.round(nNumber, nDetail);
 
 var strNumber  = new String(nNumber);
 var arrNumber  = strNumber.split(".");
 var strFormatNum = "";
 var j = 0;
 
 for ( i = arrNumber[0].length - 1; i >= 0; i--)
 {
  if (i != strNumber.length && j == 3)
  {
   strFormatNum = arrNumber[0].charAt(i) + "," + strFormatNum;
   j = 0;
  }
  else
  {
   strFormatNum = arrNumber[0].charAt(i) + strFormatNum;
  }
  j++;
 }
 
 if (arrNumber.length > 1) strFormatNum = strFormatNum + "." + arrNumber[1];
 
 return strFormatNum;
}

/*****************************************************************************************
 * 함  수  명 : gfn_GetDateToStr
 * 입      력 : 1. date
 * 반      환 : 'yyyyMMdd' 형태로 표현된 날짜
 * 기      능 : Date Type을 String으로 변환
 *****************************************************************************************/
function gfn_GetDateToStr(date)
{
 var strYear = date.getYear().toString();
 var strMonth = (date.getMonth()+1).toString();
 var strDate = date.getDate().toString();
 
 if(strYear.length==2)
  strYear = '19'+strYear;
 else if(strYear.length==1)
  strYear = '190'+strYear;
  
 if(strMonth.length==1)
  strMonth = '0'+strMonth;
 if(strDate.length==1)
  strDate = '0'+strDate;
 
 return strYear+strMonth+strDate;
}

/*****************************************************************************************
 * 함  수  명 : gfn_AddDate
 * 입      력 : 1. strDate : 'yyyyMMdd' 형태로 표현된 날짜.
 *                  2. nOffSet : 날짜로부터 증가 감소값.
 * 반      환 : date의 문자열 (ex. 20080821)
 * 기      능 : 입력된 날짜에 OffSet 으로 지정된 만큼의 날짜를 더함
 *****************************************************************************************/
function gfn_AddDate(strDate, nOffSet)
{
 var date = new Date();
 
 date.setYear(strDate.substr(0, 4));
 date.setMonth(strDate.substr(4, 2)-1);
 date.setDate(strDate.substr(6, 2)-(nOffSet*-1));
 
 return gfn_GetDateToStr(date);
}

/*****************************************************************************************
 * 함  수  명 : gfn_AddMonth
 * 입      력 : 1. strMonth : 'yyyyMM' 형태로 표현된 날짜.
 *                  2. nOffSet  : 해당월로부터 증가 감소값.
 * 반      환 : date의 문자열 (ex. 200808)
 * 기      능 : 입력된 월에 OffSet 으로 지정된 만큼의 월을 더함
 *****************************************************************************************/
function gfn_AddMonth(strMonth, nOffSet)
{
 var date = new Date();
 
 date.setYear(strMonth.substr(0, 4));
 date.setMonth(strMonth.substr(4, 2)-1-(nOffSet*-1));
 
 return gfn_GetDateToStr(date).substr(0, 6);
}

/*****************************************************************************************
 * 함  수  명 : gfn_GetMonthLastDay
 * 입      력 : 1. strMonth : 'yyyyMMdd' 형태로 표현된 날짜.
 * 반      환 : 해당월의 마지막일자
 * 기      능 : 입력일자 해당월의 마지막 일
 *****************************************************************************************/
function gfn_GetMonthLastDay(strMonth)
{
 var iLastDay;
 var iYear  = parseInt(strMonth.substr(0, 4),10) ;
 var iMonth = parseInt(strMonth.substr(4, 2),10);
 switch(iMonth)
 {
  case 2 :
   if( ((iYear%4)==0) && ((iYear%100)!=0) || ((iYear%400)==0) )
    iLastDay = 29;
   else
    iLastDay = 28;   
   break;
  case 4 :
  case 6 :
  case 9 :
  case 11 :
   iLastDay = 30;
   break;
  default:
   iLastDay = 31;
   break;
 }
 
 return iLastDay;
}

/*****************************************************************************************
 * 함  수  명 : gfn_GetDay
 * 입      력 : 1. strDate : 'yyyyMMdd' 형태로 표현된 날짜.
 * 반      환 : 요일에 따른 숫자.
 *                  0 = 일요일 ~ 6 = 토요일. 오류가 발생할 경우 -1 Return.
 * 기      능 : 입력된 날자로부터 요일을 구함
 *****************************************************************************************/
function gfn_GetDay(strDate)
{
    var date = new Date();
    date.setYear(strDate.substr(0, 4));
    date.setMonth(strDate.substr(4, 2) - 1);
    date.setDate(strDate.substr(6, 2));

    return date.getDay();
}

/*****************************************************************************************
 * 함  수  명 : gfn_GetDayWeek
 * 입      력 : 1. strDate : 'yyyyMMdd' 형태로 표현된 날짜.
 *                  2. strType - 0(숫자: 일요일부터 시작), 1(한글), 2(한문)
 * 반      환 : strType에 따라 요일 반환
 *                  0 = 일요일 ~ 6 = 토요일. 오류가 발생할 경우 -1 Return.
 * 기      능 : 요일 반환
 *****************************************************************************************/
function gfn_GetDayWeek(strDate,strType)
{
 if (strType == null) strType = "0";
 
 var date = new Date();
 date.setYear(strDate.substr(0, 4));
    date.setMonth(strDate.substr(4, 2) - 1);
    date.setDate(strDate.substr(6, 2));
    
    var nDayWeek = date.getDay();
    
 var strDayWeek;
 
 switch(strType)
 {
  case "0":
   strDayWeek = nDayWeek;
   break;
  case "1":
   strDayWeek = arrDayWeek1[nDayWeek];
   break;
  case "2":
   strDayWeek = arrDayWeek2[nDayWeek];
   break;
 }
    return strDayWeek;
}

/*****************************************************************************************
 * 함  수  명 : gfn_GetDiffDate
 * 입      력 : 1. sStartDate : yyyyMMdd형태의 From 일자 ( 예 : "20121122" )
 *                  2. sEndDate   : yyyyMMdd형태의 To 일자   ( 예 : "20121202" )
 * 반      환 : 숫자 형태의 차이일수  ( 예 : 10 )
 *                  단, sEndDate < sStartDate이면 음수가 return된다.
 * 기      능 : 두 일자간의 차이 일수 계산
 *****************************************************************************************/
function gfn_GetDiffDate(sStartDate, sEndDate)
{
    var vFromDate = new Date(parseInt(sEndDate.substring(0,4),  10), parseInt(sEndDate.substring(4,6)-1,  10), parseInt(sEndDate.substring(6,8), 10));
    var vToDate = new Date(parseInt(sStartDate.substring(0,4),  10), parseInt(sStartDate.substring(4,6)-1,  10), parseInt(sStartDate.substring(6,8), 10));
    
    return parseInt((vFromDate - vToDate)/(1000*60*60*24));
}

/*****************************************************************************************
 * 함  수  명 : gfn_GetDiffMonth
 * 입      력 : 1. sStartDate : yyyyMMdd형태의 From 일자 ( 예 : "20121122" )
 *                  2. sEndDate   : yyyyMMdd형태의 To 일자   ( 예 : "20121202" )
 * 반      환 : 숫자 형태의 차이월수  ( 예 : 10 )
 *                  단, sEndDate < sStartDate이면 음수가 return된다.
 * 기      능 : 두 월간의 차이 월수 계산
 *                  단, sStartDate, sEndDate의 일은 포함하지 않고 계산된다.
 *****************************************************************************************/
function gfn_GetDiffMonth(sStartDate, sEndDate)
{
 var nStartMon, nEndMon;
 
 nStartMon = parseInt(sStartDate.substr(0,4), 10)*12 + parseInt(sStartDate.substr(4,2), 10);
 nEndMon = parseInt(sEndDate.substr(0,4), 10)*12 + parseInt(sEndDate.substr(4,2), 10);
 
 return (nEndMon - nStartMon);
}

/*****************************************************************************************
 * 함  수  명 : gfn_IsJuminNo
 * 입      력 : 1. sJuminNo : 주민번호
 * 반      환 : return 정상 true 1 / 비정상 false 0 
 *                  단, sEndDate < sStartDate이면 음수가 return된다.
 * 기      능 : 주민번호를 확인한다.
 *****************************************************************************************/
function gfn_IsJuminNo(sJuminNo)
{
 var birthYear = gfn_GetBirthYear(sJuminNo);
 
 birthYear += sJuminNo.substr(0, 2);
 var birthMonth = sJuminNo.substr(2, 2)-1;
 var birthDate = sJuminNo.substr(4, 2);
 var birth = new Date(birthYear, birthMonth, birthDate);

 if ( birth.getYear() % 100 != sJuminNo.substr(0, 2) ||
  birth.getMonth() != birthMonth ||
  birth.getDate() != birthDate) 
 {
  alert("잘못된 주민등록번호입니다. 년도"); return;  //
 }

 // Check Sum 코드의 유효성 검사
 buf = new Array(13);
 for (i = 0; i < 6; i++) buf[i] = parseInt(sJuminNo.charAt(i));
 for (i = 6; i < 13; i++) buf[i] = parseInt(sJuminNo.charAt(i));
   
 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]);

 if ((11 - (sum % 11)) % 10 != buf[12]) {
  return 0;
 }else{
  return 1;
 }
}

/*****************************************************************************************
 * 함  수  명 : gfn_GetBirthYear
 * 입      력 : 1. sJuminNo : 생년 월일 또는 주민 번호
 * 반      환 : return true/false
 * 기      능 : 주민번호 뒷 첫번째 자리로 년대를 return 한다.
 *****************************************************************************************/
function gfn_GetBirthYear(sJuminNo)
{
 if (sJuminNo.toString().length != 13) 
 {
  alert("주민번호를 확인해주세요.!!");
  return "N";
 }
 
 if (!(sJuminNo).match(/^\d{6}\d{7}$/)) {
  alert("잘못된 주민등록번호입니다.!!"); 
  return "N";
 }

 var vGb = sJuminNo.substr(6,1);

 if (vGb == '1' || vGb == '2' || vGb == '5' || vGb == '6') {
  return '19';
 } else if (vGb == '3' || vGb == '4' || vGb == '7' || vGb == '8') {
  return '20';
 }
}

/*****************************************************************************************
 * 함  수  명 : gfn_IsCustNo
 * 입      력 : 1. strCustNo : 사업자번호(-제외) strCustNo는 숫자만 10자리로 해서 문자열로 넘긴다.
 * 반      환 : return true/false
 * 기      능 : 사업자번호 유효성 검사.
 *****************************************************************************************/
function gfn_IsCustNo(strCustNo) 
{
 if (strCustNo.length != 10) return false;
 else {
  
  var checkID = new Array(1, 3, 7, 1, 3, 7, 1, 3, 5, 1);
  var tmpcustNo, i, chkSum=0, c2, remander;

  for (i=0; i<=7; i++) chkSum += checkID[i] * strCustNo.charAt(i);

  c2 = "0" + (checkID[8] * strCustNo.charAt(8));
  c2 = c2.substring(c2.length - 2, c2.length);

  chkSum += Math.floor(c2.charAt(0)) + Math.floor(c2.charAt(1));

  remander = (10 - (chkSum % 10)) % 10 ;

  if (Math.floor(strCustNo.charAt(9)) == remander) return true; // OK!
  return false;
 }

 return true;
}

/*****************************************************************************************
 * 함  수  명 : gfn_ValueCheck
 * 입      력 : 1. Dataset : DataSet(Object)
 *                  2. Col Id : Col Id ex) "SAMPLE_ID1=SAMPLE_NM1,SAMPLE_ID2=SAMPLE_NM2"
 * 반      환 : return true/false
 * 기      능 : 입력된 그리드의 컬럼값 NULL CHECK
 *****************************************************************************************/
 function gfn_ValueCheck(objDs, strColid)
 {
 for(var i=0; i<objDs.getColCount(); i++)
 {
  var objArr1; // Array
   objArr1 = strColid.split(",");
  
  for(var j=0; j<objArr1.length; j++)
  {
   var objArr2; // Array
    objArr2 = objArr1[j].split("=");
   
   if(objDs.getColID(i) == objArr2[0]){
    var nIdx = objDs.findRow(objArr2[0],"");
    
    if(nIdx > -1){
     if(objDs.getRowType(nIdx) == 2 || objDs.getRowType(nIdx) == 4){
      if(gfn_IsNull(objDs.getColumn(nIdx,objArr2[0]))){
       alert(objArr2[1] + " 을/를 입력하세요.");
       return false;
       break;
      }
     }
    }
   }
  }
 }
 
 return true;
}

/*******************************************************************************
 * 함수명  : gfn_getToday
 * 설명 : 오늘날짜 구하는 함수.
 * argument  :
 * return Type : - 해당날짜를 리턴.
 ******************************************************************************/
function gfn_getToday()
{
 var d = new Date();
 var s = d.getFullYear()
       + ((d.getMonth() + 1) + "").padLeft(2, '0')
       + (d.getDate() + "").padLeft(2, '0');

 return (s);
}

/*******************************************************************************
 * 함수명  : gfn_getFirstDate
 * 설명 : 현재월 1일 만들기.
 * argument  :
 * return Type : 해당날짜를 리턴.
 ******************************************************************************/
function gfn_getFirstDate(strDate)
{
    var s = "";

    if (strDate == null) {
     s = getToday().substr(0,6) + "01";
    }
    else {
     var date = new Date(parseInt(strDate.substr(0,4)),parseInt(strDate.substr(4,2))-1,1);
     s = (new Date(date)).getFullYear()
       + (((new Date(date)).getMonth()+1)+ "").padLeft(2, '0')
       + ((new Date(date)).getDate() + "").padLeft(2, '0');

    }
    
 return (s);
}

/*******************************************************************************
 * 함수명  : gfn_getLastDateStr
 * 설명 : 현재월 마지막일 만들기.
 * argument  :
 * return Type : 해당날짜를 리턴.
 ******************************************************************************/
function gfn_getLastDateStr(strDate)
{
    var s = "";
    if (strDate == null) {
     var date = (new Date()).addMonth(1);
    }
    else {
     var date = new Date(parseInt(strDate.substr(0,4)),parseInt(strDate.substr(4,2)),1);
    }

 date = (new Date(date)).addDate((new Date(date)).getDate()*-1);

 s = (new Date(date)).getFullYear()
   + (((new Date(date)).getMonth() + 1) + "").padLeft(2, '0')
   + ((new Date(date)).getDate() + "").padLeft(2, '0');
 return (s);
}

/*******************************************************************************
 * 함수명  : gfn_strDate
 * 설명 : 문자를 날짜로 변환.
 * argument  :
 * return Type : 해당날짜를 리턴.
 ******************************************************************************/
function gfn_strDate(inDate)
{
  var date =  new Date(parseInt(inDate.substr(0,4)),parseInt(inDate.substr(4,2))-1,parseInt(inDate.substr(6,2)));
  return date;
}

/*******************************************************************************
 * 함수명  : gfn_getLastMonth
 * 설명 : 한달전 날짜 구하는 함수.
 * argument  :
 * return Type : 해당날짜를 리턴.
 ******************************************************************************/
function gfn_getLastMonth(strDate) {
    if (strDate) {
        var date = gfn_strDate(strDate);
        var d = (new Date(date)).addMonth(-1);
    }
    else {
  var d = (new Date).addMonth(-1);
    }

 var s = (new Date(d)).getFullYear()
     + (((new Date(d)).getMonth() + 1) + "").padLeft(2, '0')
     + (((new Date(d)).getDate()) + "").padLeft(2, '0');
 return (s);
}

/*******************************************************************************
 * 함수명  : gfn_getOneMonthAfter
 * 설명 : 한달후 날짜 구하는 함수.
 * argument  :
 * return Type : 해당날짜를 리턴.
 ******************************************************************************/
function gfn_getOneMonthAfter(strDate) {
    if (strDate) {
        var date = gfn_strDate(strDate);
        var d = (new Date(date)).addMonth(1);
    }
    else {
  var d = (new Date).addMonth(1);
    }

 var s = (new Date(d)).getFullYear()
     + (((new Date(d)).getMonth() + 1) + "").padLeft(2, '0')
     + (((new Date(d)).getDate()) + "").padLeft(2, '0');

 return (s);
}

/*******************************************************************************
 * 함수명  : gfn_FixLength
 * 설명 : Grid에서 정수부와 소수부 자릿수를 제한하는 함수
 * argument  : 1. e   Grid Event
               2. length1 정수부 자릿수
               3. length2 소수부 자릿수
 * return Type :
 ******************************************************************************/
function gfn_FixLength(e, length1, length2)
{
 var i;
 var arrTemp = e.posttext.split(".");
 
 if(arrTemp[0].length>length1)
 {
  return false;
 }
 
 if(arrTemp.length==2)
 {
  if(arrTemp[1].length>length2)
  {
   return false;
  }
 }
 return true;
}

/*******************************************************************************
 * 함수명  : gfn_IsNullZero
 * 설명 : Dataset에서 Null 값을 0으로 치환하는 함수
 * argument  : 1. obj   Dataset Object
               2. e    Dataset Event
 * return Type :
 ******************************************************************************/
function gfn_IsNullZero(obj,e)
{
 var newValue = new String(e.newvalue);
 
 if(newValue=="0"||newValue==""||gfn_IsNull(newValue)==true){
  obj.setColumn(e.row, e.columnid, "0");
 }
}

/*******************************************************************************
 * 함수명  : gfn_Debug(objDs, objForm)
 * 설명 : Dataset Debug
 * argument  : 1. objDs   Dataset Object
               2. objForm  Form Object
 * return Type :
 ******************************************************************************/
 function gfn_Debug(objDs)
 {
 gfn_Dialog(objDs, -1, -1, 380, 394,"CommForm::COMM_DEBUG.xfdl",false,{objDs:objDs},false,true,true);
 }