// ex) rmFormat('2002-05-01','-') ==> 20020501
function rmFormat(obj, str) {
  var rtn = "";
  for (i = 0; i < obj.length; i++ ) {
    if (obj.charAt(i)!= str)
        rtn += obj.charAt(i);
  }
  return rtn;
}


// 20030801 ===> 2003-08-01
function formatDate(str){
  var ret = ""
  if(str.length==8){
    ret = str.substring(0,4);
    ret += "-";
    ret += str.substring(4,6);
    ret += "-";
    ret += str.substring(6,8);
  }

  return ret;
}

// number check
function checkNumber(s) {
  var NUM = "0123456789";
  var i;

  for (i=0; i<s.length; i++)
  {
    if (NUM.indexOf( s.substring(i,i+1))<0 ) return false;
  }
  return true;
}

// YYYY-MM-DD (when KeyUp Event, call: DateTextBox : TextBox Object Name)
function YYYY_MM_DD(DateTextBox_Object)
{
  var strDate = DateTextBox_Object.value;
  if (strDate.length == 4 || strDate.length == 7)
  {
    if (strDate.charAt(strDate.length-1) != "-")
      DateTextBox_Object.value = strDate + "-";
  }
}

function isEmpty(str){
	var ret = "";
	var i;

	if (str == null || str == "undefined") return true;

	for(i=0; i<str.length; i++){
		if(str.charAt(i)==' ' || str.charAt(i)=='\t' || str.charAt(i)=='\n' || str.charAt(i)=='\r')
			continue;
		else
			ret+=str.charAt(i);
	}
	if(ret=="" || ret==" ")
		return true;
	return false;
}

// string ===> float
function toFloat(str)
{
	str = str.toString();
	if(isEmpty(str)) return 0;
	var ret = rmLeadingZero(rmComma(lrtrim(str)));
	var ret = posCeil(ret,2);
	if (isNaN(ret)) ret = 0;
	return ret;
}

// Ceil
function posCeil(varint, pos)
{
	var retpos = Math.pow(10,pos);
	if (retpos == 0) retpos=1;
	var ret = Math.ceil(Math.floor(varint*retpos*10)/10);	
	//alert("posceil"+retpos+"--"+varint*retpos+"--"+ret+"--"+ret/retpos);
	return ret/retpos;
}

// 
function rmLeadingZero(str)
{
	var ret = "";
	for(i=0; i<str.length; i++){
		if(str.charAt(i) == '0')
			continue;
		else
			break;
	}
	for(;i<str.length;i++)
	{
		ret+=str.charAt(i);
	}
	return ret;
}
function rmComma(obj) {
	var str = '';
	for (i = 0; i < obj.length; i++) {
		if (obj.charAt(i) != ',')
			str += obj.charAt(i);
	}
	return str;
}


// string ===> integer
function toInt(src)
{
  src = src.toString();
  if(isEmpty(src)) return 0;
  var ret = rmLeadingZero(rmComma(lrtrim(src)));
  var ret = parseInt(ret);
  if (isNaN(ret)) ret = 0;
  return ret;
}

/**
 * isDateValid(yy, mm, dd) : check date
 * @param yy  year
 * @param mm  month
 * @param dd  day
 * @return  0, -1, -2
 */
function isDateValid(yy, mm, dd)
{
  yyStr = yy;
  mmStr = mm;
  ddStr = dd;

  if (mmStr == 1) 
      max_days = 31;
  else if (mmStr == 2) { 
      if ((( yyStr % 4 == 0) && (yyStr % 100 != 0)) || (yyStr % 400 == 0)) 
          max_days = 29;
      else 
          max_days = 28;
  } 
  else if (mmStr == 3) max_days = 31;
  else if (mmStr == 4) max_days = 30;
  else if (mmStr == 5) max_days = 31;
  else if (mmStr == 6) max_days = 30;
  else if (mmStr == 7) max_days = 31;
  else if (mmStr == 8) max_days = 31;
  else if (mmStr == 9) max_days = 30;
  else if (mmStr == 10) max_days = 31;
  else if (mmStr == 11) max_days = 30;
  else if (mmStr == 12) max_days = 31;
  else { 
      //alert("Invalid Month(1~12)");
      return -1;
  }
  if (ddStr < 1 || ddStr > max_days) { 
      //alert("Invalid day(max days : " + max_days + ")"); 
      return -2;
  } else  return 0;
}

function ltrim(src)
{
   var k='';

   if (src == null || src == "undefined") return k;

   for (i=0;i<src.length;i++)
   {
      if (src.charCodeAt(i) != 32)
      {
         k=src.substring(i);
         break;
      }
   }
   return k;
}

//
function rtrim(src)
{
	if (src == null || src == "undefined") return '';

   var giaTemp= new Array();
   var i=src.length-1;
   var result='';

   for (i,j=0;i>=0;i--)
   {
      if (src.charCodeAt(i) != 32)
      {
        break;
      }
   }
   result=src.substr(0,i+1);
   return result;
}

//ltrim+rtrim
function lrtrim(src)
{
   var s=ltrim(src);
   var t=rtrim(s);

   return t;
}

function dateFormat(obj) {
  var oldValue = "";
  obj.value=rmFormat(obj.value, "-");
  var dt = lrtrim(obj.value);
  var ret="";
  if (dt == "") return 0;
  if(dt.length!=8)
  {
    obj.value = oldValue;;
    return -10;
  }

  var yyyy = dt.substr(0, 4);
  var mm = dt.substr(4, 2);
  var dd = dt.substr(6, 2);
  
  var result = isDateValid(toInt(yyyy), toInt(mm), toInt(dd));
  if (result != 0) {
    obj.value = oldValue;
    return result;
  }

  ret += dt.substr(0, 4);
  ret += "-";
  ret += dt.substr(4, 2);
  ret +="-";
  ret += dt.substr(6, 2);

  obj.value=ret;
  return 0;
}

function dateFormatYYYYMM(obj) {
  var oldValue = "";
  obj.value=rmFormat(obj.value, "-");
  var dt = lrtrim(obj.value);
  var ret="";
  if (dt == "") return 0;
  if(dt.length!=6)
  {
    obj.value = oldValue;;
    return -10;
  }

  var yyyy = dt.substr(0, 4);
  var mm = dt.substr(4, 2);
  var dd = "01";
  
  var result = isDateValid(toInt(yyyy), toInt(mm), toInt(dd));
  if (result != 0) {
    //obj.value = oldValue;
    return result;
  }

  ret += dt.substr(0, 4);
  ret += "-";
  ret += dt.substr(4, 2);

  obj.value=ret;
  return 0;
}

function isEmpty(str){
  var ret = "";
  var i;

  if (str == null || str == "undefined") return true;

  for(i=0; i<str.length; i++){
    if(str.charAt(i)==' ' || str.charAt(i)=='\t' || str.charAt(i)=='\n' || str.charAt(i)=='\r')
      continue;
    else
      ret+=str.charAt(i);
  }
  if(ret=="" || ret==" ")
    return true;
  return false;
}

function isValid(theDate)
{
  
    try{
        yy = parseInt(theDate.substring(0,4),10); 
        mm = parseInt(theDate.substring(4,6),10); 
        dd = parseInt(theDate.substring(6,8),10); 
        if (mm == 1) 
            max_days = 31 
        else if (mm == 2) { 
            if ((( yy % 4 == 0) && (yy % 100 != 0)) || (yy % 400 == 0)) 
                max_days = 29; 
            else 
                max_days = 28; 
        }
        else if (mm == 3) 
            max_days = 31;
        else if (mm == 4) 
            max_days = 30;
        else if (mm == 5) 
            max_days = 31;
        else if (mm == 6) 
            max_days = 30;
        else if (mm == 7) 
            max_days = 31;
        else if (mm == 8)  
            max_days = 31;
        else if (mm == 9) 
            max_days = 30;
        else if (mm == 10) 
            max_days = 31;
        else if (mm == 11) 
            max_days = 30;
        else if (mm == 12) 
            max_days = 31;
        else { 
            return false; 
        } if (dd < 1 || dd > max_days) { 
             return false; 
        } else 
            return true;
    } catch(e) {
        yy = parseInt(theDate.substring(0,4),10); 
        mm = parseInt(theDate.substring(4,6),10); 
        dd = parseInt(theDate.substring(6,8),10); 
        if (mm == 1) 
            max_days = 31 
        else if (mm == 2) { 
            if ((( yy % 4 == 0) && (yy % 100 != 0)) || (yy % 400 == 0)) 
                max_days = 29; 
            else 
                max_days = 28; 
        } 
        else if (mm == 3) 
            max_days = 31;
        else if (mm == 4) 
            max_days = 30;
        else if (mm == 5) 
            max_days = 31;
        else if (mm == 6) 
            max_days = 30;
        else if (mm == 7) 
            max_days = 31;
        else if (mm == 8) 
            max_days = 31;
        else if (mm == 9) 
            max_days = 30;
        else if (mm == 10) 
            max_days = 31;
        else if (mm == 11) 
            max_days = 30;
        else if (mm == 12) 
            max_days = 31;
        else { 
            return false;
        } 
        
        if (dd < 1 || dd > max_days) {
             return false; 
        } else 
            return true;
    }
}



/**
 * ¹®ÀÚ¿­ÀÇ ±æÀÌ¸¦ 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;
}


/**
 * ÀÔ·Â°ªÀÌ ¼ýÀÚÀÎÁö¸¦ È®ÀÎÇÑ´Ù
 * param : sVal ÀÔ·Â½ºÆ®¸µ
 * return : 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;
}


/**
 * Ã¹¹øÂ° Zero °ªÀ» ÀÚ¸¥´Ù.
 * param : sVal ÀÔ·Â½ºÆ®¸µ
 * return : String  Zero°ªÀ» ÀÚ¸¥ °ª
 */
function trimZero(sVal)
{
  if(sVal.charAt(0) == '0')
  {
    return sVal.substring(1,sVal.length);
  }
  else
  {
    return sVal;
  }
}


/**
 * ³¯Â¥ ¿©ºÎ¸¦ È®ÀÎÇÑ´Ù.(³â¿ùÀÏ)
 * param : sYmd ÀÔ·Â½ºÆ®¸µ(YYYYMMDD)
 * return : Boolean trueÀÌ¸é ³¯Â¥ ¹üÀ§ÀÓ
 */
function isDateYMD(sYmd)
{
  // ¼ýÀÚ È®ÀÎ
  if(!isNumber(sYmd))
  {
    alert('³¯Â¥´Â ¼ýÀÚ¸¸ ÀÔ·ÂÇÏ½Ê½Ã¿À');
    return false;
  }

  // ±æÀÌ È®ÀÎ
  if(sYmd.length != 8)
  {
    alert('ÀÏÀÚ¸¦ ¸ðµÎ ÀÔ·ÂÇÏ½Ê½Ã¿À');
    return false;
  }
  var iYear = parseInt(sYmd.substring(0,4));  // ³âµµ ÀÔ·Â(YYYY)
  var iMonth = parseInt(trimZero(sYmd.substring(4,6)));   //¿ùÀÔ·Â(MM)
  var iDay = parseInt(trimZero(sYmd.substring(6,8)));     //ÀÏÀÚÀÔ·Â(DD)

  if((iMonth < 1) ||(iMonth >12))
  {
    alert(iMonth+'¿ùÀÇ ÀÔ·ÂÀÌ Àß¸ø µÇ¾ú½À´Ï´Ù.');
	return false;
  }
	
  //°¢ ´ÞÀÇ ÃÑ ³¯¼ö¸¦ ±¸ÇÑ´Ù
  var iLastDay = lastDay(sYmd.substring(0,6));  // ÇØ´ç¿ùÀÇ ¸¶Áö¸»³¯ °è»ê

  if((iDay < 1) || (iDay > iLastDay))
  {
    alert(iMonth+'¿ùÀÇ ÀÏÀÚ´Â 1 - '+ iLastDay +'±îÁöÀÔ´Ï´Ù.');
    return false;
  }
  return true;
}



/**
 * sVal °ªÀÌ ¼ýÀÚÀÎÁö¸¦ È®ÀÎÇÑ´Ù.('.'±îÁö ±¦ÂúÀ½), ¸¶ÀÌ³Ê½º °ªµµ Çã¿ë
 * param : sVal ÀÔ·Â½ºÆ®¸µ
 * return : 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;
}



/**
 * ³¯Â¥ ¿©ºÎ¸¦ È®ÀÎÇÑ´Ù.(³â¿ù)
 * param : sYM ÀÔ·Â½ºÆ®¸µ(YYYYMM)
 * return : Boolean trueÀÌ¸é ³¯Â¥ ¹üÀ§ÀÓ
 */
function isDateYM(sYM)
{
  // ¼ýÀÚ È®ÀÎ
  if(!isNumber(sYM))
  {
    alert('³¯Â¥´Â ¼ýÀÚ¸¸ ÀÔ·ÂÇÏ½Ê½Ã¿À');
    return false;
  }

  // ±æÀÌ È®ÀÎ
  if(sYM.length != 6)
  {
    alert('ÀÏÀÚ¸¦ ¸ðµÎ ÀÔ·ÂÇÏ½Ê½Ã¿À');
    return false;
  }
	
  var iYear = parseInt(sYM.substring(0,4)); //³âµµ°ªÀ» ¼ýÀÚ·Î
  var iMonth = parseInt(trimZero(sYM.substring(4,6)));  //¿ùÀ» ¼ýÀÚ·Î
	
  if((iMonth < 1) ||(iMonth >12))
  {
    alert(iMonth+'¿ùÀÇ ÀÔ·ÂÀÌ Àß¸ø µÇ¾ú½À´Ï´Ù.');
    return false;
  }
  return true;		
}

