/***************************************
 * author  : ¹Ú¿µ±Ô
 * history : 2005.03.
 ***************************************/

// form input À» check ÇÑ´Ù.
function checkForm(f, bJustCheck)
{
  var input;
  for ( var n = 0, sz = f.elements.length; n < sz; n++ )
  {
    input = f.elements[n];
    if ( ! input.name && ! input.id ) continue;

    switch ( input.type )
    {
      case "button":
      case "image":
      case "submit":
      case "reset": continue; break;
    }

    if ( ! checkInput(input, bJustCheck) ) return false;
  }
  return true;
}

// input À» check ÇÑ´Ù.
function checkInput(input, bJustCheck)
{
  // 1. required ÇÊ¼ö¿©ºÎ
  // 2. minv, maxv
  // 4. minbl, maxbl
  // 5. email
  var str = input.value;

  var msg_prefix1 = input.korname ? input.korname +" Àº(´Â) " : "";
  var msg_prefix2 = input.korname ? input.korname +" À»(¸¦) " : "";

  if ( (input.required || input.key_field) == "Y" && ! str )
  {
    if ( ! bJustCheck )
    {
      alert(msg_prefix2 + "ÀÔ·ÂÇØÁÖ¼¼¿ä.");
      input_selectfocus(input);
    }
    return false;
  }

  if ( str )
  {
    if ( input.data_format && ! checkFormatInput(input, true) ) return false;


    // ¼ýÀÚ¿¡¼­¸¸ »ç¿ë
    if ( input.minv && ! checkMinMaxVal(Number(getNormalValue(input)), Number(input.minv), null) )
    {
      if ( ! bJustCheck )
      {
        alert(msg_prefix2 + input.minv +" ÀÌ»óÀ¸·Î ÀÔ·ÂÇØÁÖ¼¼¿ä.");
        input_selectfocus(input);
      }
      return false;
    }

    if ( input.maxv && ! checkMinMaxVal(Number(getNormalValue(input)), null, Number(input.maxv)) )
    {
      if ( ! bJustCheck )
      {
        alert(msg_prefix2 + input.maxv +" ÀÌÇÏ·Î ÀÔ·ÂÇØÁÖ¼¼¿ä.");
        input_selectfocus(input);
      }
      return false;
    }

    // ¹®ÀÚ¿¡¼­¸¸ »ç¿ë
    if ( input.minbl && ! checkMinMaxByteLen(str, Number(input.minbl), null) )
    {
      if ( ! bJustCheck )
      {
        alert(msg_prefix2 + input.minbl +" byte(s) ÀÌ»óÀ¸·Î ÀÔ·ÂÇØÁÖ¼¼¿ä.(ÇöÀç "+getByteLength(str)+" byte(s))");
        input_selectfocus(input);
      }
      return false;
    }

    if ( input.maxbl && ! checkMinMaxByteLen(str, null, Number(input.maxbl)) )
    {
      if ( ! bJustCheck )
      {
        alert(msg_prefix2 + input.maxbl +" byte(s) ÀÌÇÏ·Î ÀÔ·ÂÇØÁÖ¼¼¿ä.(ÇöÀç "+getByteLength(str)+" byte(s))");
        input_selectfocus(input);
      }
      return false;
    }

  }

  return true;
}

function checkInputNN(input, bJustCheck)
{
  var str = input.value;

  var msg_prefix1 = input.korname ? input.korname +" Àº(´Â) " : "";
  var msg_prefix2 = input.korname ? input.korname +" À»(¸¦) " : "";

  if ( ! str )
  {
    if ( ! bJustCheck )
    {
      alert(msg_prefix2 + "ÀÔ·ÂÇØÁÖ¼¼¿ä.");
      input_selectfocus(input);
    }
    return false;
  }

  return checkInput(input, bJustCheck);
}
// ½ÃÀÛÀÏ, Á¾·áÀÏ input À» check ÇÑ´Ù.
function checkFromTo(inputFrom, inputTo)
{
  if ( inputFrom.value && inputTo.value )
  {
    if ( inputFrom.value > inputTo.value )
    {
      alert("±¸°£À» Á¤È®È÷ ÀÔ·ÂÇØÁÖ¼¼¿ä.("+inputFrom.korname+" < "+inputTo.korname+")");
      input_selectfocus(inputTo);
      return false;
    }
  }
  return true;
}

// ÃÖ¼Ò°ª, ÃÖ´ë°ªÀ» Ã¼Å©ÇÑ´Ù.
function checkMinMaxVal(v, min, max)
{
  var check = true;
  if ( min != null ) check = v >= min;
  if ( ! check ) return false;
  if ( max != null ) check = v <= max;
  return check;
}

// ÃÖ¼Ò ÃÖ´ë ¹ÙÀÌÆ® ±æÀÌ¸¦ Ã¼Å©ÇÑ´Ù.
function checkMinMaxByteLen(str, min, max)
{
  var v = getByteLength(str);
  return checkMinMaxVal(v, min, max);
}

// ¹®ÀÚ¿­ÀÇ ¹ÙÀÌÆ® Å³ÀÌ¸¦ ±¸ÇÑ´Ù.
function getByteLength(str)
{
  var rv = 0;
  for ( var n = 0, sz = str.length; n < sz; n++ )
  {
    rv += str.charCodeAt(n) > 0x00ff ? 2 : 1;
  }
  return rv;
}

// input À» select ÇÏ°í focus ÇÑ´Ù.
function input_selectfocus(input)
{
  //try { input.blur(); } catch(e) {}
  try { input.select(); } catch(e) {}
  try { input.focus(); } catch(e) {}
}

//////////////////////////////
//                          //
//////////////////////////////
// ¹®ÀÚ¿­À» Æ÷¸ÅÆÃÇÑ´Ù.
function formatValue(str, data_format, pointCount)
{
  var rv = "";
  switch ( data_format )
  {
    case "dfDateYy":  rv = formatValueMask(str, "####"); break;
    case "dfDateMm":  rv = formatValueMask(str, "##"); break;
    case "dfDateYmd": rv = formatValueMask(str, "####.##.##"); break;
    case "dfDateYm":  rv = formatValueMask(str, "####.##"); break;
    case "dfDateMd":  rv = formatValueMask(str, "##.##"); break;

    case "dfTimeHms": rv = formatValueMask(str, "##:##:##"); break;
    case "dfTimeHm":  rv = formatValueMask(str, "##:##"); break;

    case "dfTimeYmdhms":  rv = formatValueMask(str, "####.##.## ##:##:##"); break;

    case "dfIdNo":    rv = formatValueMask(str, "######-#######"); break;
    case "dfSaupNo":  rv = formatValueMask(str, "###-##-#####"); break;
    case "dfCardNo":  rv = formatValueMask(str, "####-####-####-####"); break;
    case "dfPostNo":  rv = formatValueMask(str, "###-###"); break;

    case "dfNo":      rv = str.replace(/\D/g, ""); break;
    case "dfInteger+":rv = formatComma(str.replace(/\D/g, "")); break;
    case "dfInteger":
    {
      var sign = str.substr(0, 1) == "-" ? "-" : "";
      rv = sign + formatComma(str.replace(/\D/g, ""));
    }
    break;
    case "dfFloat+":
    {
      var pointidx = str.indexOf(".");
      var pointbelow = ( pointidx >= 0 ) ? "."+ str.substr(pointidx).replace(/\D/g, "") : "";
      var numvalue = formatComma(str.substr(0, pointidx >= 0 ? pointidx : str.length).replace(/\D/g, ""));
      if ( pointCount != null)
      {
        numvalue = numvalue == "" ? "0" : numvalue;
        pointbelow = rpad(pointbelow || ".", pointCount+1, "0");
      }
      rv = numvalue + pointbelow;
    }
    break;
    case "dfFloat":
    {
      var sign = str.substr(0, 1) == "-" ? "-" : "";
      var pointidx = str.indexOf(".");
      var pointbelow = ( pointidx >= 0 ) ? "."+str.substr(pointidx).replace(/\D/g, "") : "";
      var numvalue = formatComma(str.substr(0, pointidx >= 0 ? pointidx : str.length).replace(/\D/g, ""));
      if ( pointCount != null)
      {
        numvalue = numvalue == "" ? "0" : numvalue;
        pointbelow = rpad(pointbelow || ".", pointCount+1, "0");
      }
      rv = sign + (sign && pointbelow && ! numvalue ? "0" : numvalue) + pointbelow;
    }
    break;

    //case "dfEmail":
    default:          rv = str; break;
  }

  return rv;
}

// Æ÷¸ËÀ» Ã¼Å©ÇÑ´Ù.
function checkFormatInput(input, bShowMsg)
{
  var check = checkFormatValue(input.value, input.data_format);
  if ( ! check && bShowMsg )
  {
    alert( (input.korname ? input.korname+" Àº(´Â) " : "") + getFormatErrMsg(input.data_format));
    input_selectfocus(input);
  }
  return check;
}

// ¹®ÀÚ¿­ÀÌ format ¿¡ ¸Â´ÂÁö °Ë»çÇÑ´Ù.
function checkFormatValue(str, data_format, bShowMsg)
{
  var numstr;
  var check = false;
  switch ( data_format )
  {
    case "dfDateYy":  check = /^\d{4}$/.test(str); break;
    case "dfDateMm":
    {
      check = /^\d{2}$/.test(str);
      if ( ! check ) break;
      var mm = Number(str.substr(0, 2));//-1 ¾ÈÇÔ
      check = between(mm, 1, 12);
    }
    break;
    case "dfDateYmd":
    {
      check = /^\d{4}\.\d{2}\.\d{2}$/.test(str);
      if ( ! check ) break;
      numstr = str.replace(/\D/g, "");
      var yy = Number(numstr.substr(0, 4));
      var mm = Number(numstr.substr(4, 2))-1;
      var dd = Number(numstr.substr(6, 2));
      var dt = new Date(yy, mm, dd);
      check = yy == dt.getFullYear() && mm == dt.getMonth() && dd == dt.getDate();
    }
    break;
    case "dfDateYm":
    {
      check = /^\d{4}\.\d{2}$/.test(str);
      if ( ! check ) break;
      numstr = str.replace(/\D/g, "");
      var mm = Number(numstr.substr(4, 2));//-1 ¾ÈÇÔ
      check = between(mm, 1, 12);
    }
    break;
    case "dfDateMd":
    {
      check = /^\d{2}\.\d{2}$/.test(str);
      if ( ! check ) break;
      numstr = str.replace(/\D/g, "");
      var mm = Number(numstr.substr(0, 2));//-1 ¾ÈÇÔ
      var dd = Number(numstr.substr(2, 2));
      check = between(mm, 1, 12);
      if ( ! check ) break;
      return mm == 1 ? between(dd, 1, 31) :
             mm == 2 ? between(dd, 1, 29) ://<--
             mm == 3 ? between(dd, 1, 31) :
             mm == 4 ? between(dd, 1, 30) :
             mm == 5 ? between(dd, 1, 31) :
             mm == 6 ? between(dd, 1, 30) :
             mm == 7 ? between(dd, 1, 31) :
             mm == 8 ? between(dd, 1, 31) :
             mm == 9 ? between(dd, 1, 30) :
             mm ==10 ? between(dd, 1, 31) :
             mm ==11 ? between(dd, 1, 30) :
             mm ==12 ? between(dd, 1, 31) : false;
    }
    break;
    case "dfTimeHms":
    {
      check = /^\d{2}:\d{2}:\d{2}$/.test(str);
      if ( ! check ) break;
      numstr = str.replace(/\D/g, "");
      var hh = Number(numstr.substr(0, 2));
      var mi = Number(numstr.substr(2, 2));
      var ss = Number(numstr.substr(4, 2));
      check = between(hh, 0, 23) && between(mi, 0, 59) && between(ss, 0, 59);
    }
    break;
    case "dfTimeHm":
    {
      check = /^\d{2}:\d{2}$/.test(str);
      if ( ! check ) break;
      numstr = str.replace(/\D/g, "");
      var hh = Number(numstr.substr(0, 2));
      var mi = Number(numstr.substr(2, 2));
      check = between(hh, 0, 23) && between(mi, 0, 59);
    }
    break;
    case "dfTimeYmdhms":
    {
      check = /^\d{4}\.\d{2}\.\d{2}[ ]\d{2}:\d{2}:\d{2}$/.test(str);
      if ( ! check ) break;
      numstr = str.replace(/\D/g, "");
      var yy = Number(numstr.substr(0, 4));
      var mm = Number(numstr.substr(4, 2))-1;
      var dd = Number(numstr.substr(6, 2));
      var dt = new Date(yy, mm, dd);
      check = yy == dt.getFullYear() && mm == dt.getMonth() && dd == dt.getDate();
      if ( ! check ) break;

      var hh = Number(numstr.substr(8, 2));
      var mi = Number(numstr.substr(10, 2));
      var ss = Number(numstr.substr(12, 2));
      check = between(hh, 0, 23) && between(mi, 0, 59) && between(ss, 0, 59);
    }
    break;
    case "dfIdNo":
    {
      check = /^\d{6}-\d{7}$/.test(str);
      if ( ! check ) break;
      check = checkJuminNo(restoreValue(str, data_format));
      if ( ! check )
      {
        if ( confirm("ÁÖ¹Î¹øÈ£ Çü½ÄÀÌ ¸ÂÁö ¾Ê½À´Ï´Ù. °è¼Ó ÁøÇàÇÏ½Ã°Ú½À´Ï±î?") ) check = true;
        else break;
      }
    }
    break;
    case "dfSaupNo":
    {
      check = /^\d{3}-\d{2}-\d{5}$/.test(str);
      if ( ! check ) break;
      check = checkSaupNo(restoreValue(str, data_format));
    }
    break;
    case "dfCardNo":  check = /^\d{4}-\d{4}-\d{4}-\d{4}$/.test(str); break;
    case "dfPostNo":  check = /^\d{3}-\d{3}$/.test(str); break;

    case "dfNo":      check = /^\d+$/.test(str); break;
    case "dfInteger+":check = /^0|([1-9]\d*)$/.test(restoreValue(str, data_format)); break;
    case "dfInteger": check = /^-?(0|([1-9]\d*))$/.test(restoreValue(str, data_format)); break;
    case "dfFloat+":  check = /^(0|([1-9]\d*))(\.\d*)?$/.test(restoreValue(str, data_format)); break;
    case "dfFloat":   check = /^-?(0|([1-9]\d*))(\.\d*)?$/.test(restoreValue(str, data_format)); break;

    case "dfEmail":   check = /^[^@]+@[^@]+$/.test(str);
    default:          check = true; break;
  }

  if ( ! check && bShowMsg )
  {
    alert(getFormatErrMsg(data_format));
  }

  return check;

}

// ¿¡·¯¸Þ½ÃÁö
function getFormatErrMsg(data_format)
{
  var rv = "";
  switch ( data_format )
  {
    case "dfDateYy":  rv = "¿Ã¹Ù¸¥ ³¯Â¥(³âµµ) Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;
    case "dfDateMm":  rv = "¿Ã¹Ù¸¥ ³¯Â¥(¿ù) Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;
    case "dfDateYmd": rv = "¿Ã¹Ù¸¥ ³¯Â¥(³â¿ùÀÏ) Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;
    case "dfDateYm":  rv = "¿Ã¹Ù¸¥ ³¯Â¥(³â¿ù) Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;
    case "dfDateMd":  rv = "¿Ã¹Ù¸¥ ³¯Â¥(¿ùÀÏ) Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;

    case "dfTimeHms": rv = "¿Ã¹Ù¸¥ ½Ã°£(½ÃºÐÃÊ) Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;
    case "dfTimeHm":  rv = "¿Ã¹Ù¸¥ ½Ã°£(½ÃºÐ) Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;

    case "dfTimeYmdhms": rv = "¿Ã¹Ù¸¥ ½Ã°£(³â¿ùÀÏ½ÃºÐÃÊ) Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;

    case "dfIdNo":    rv = "¿Ã¹Ù¸¥ ÁÖ¹Î¹øÈ£ Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;
    case "dfSaupNo":  rv = "¿Ã¹Ù¸¥ »ç¾÷ÀÚ¹øÈ£ Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;
    case "dfCardNo":  rv = "¿Ã¹Ù¸¥ Ä«µå¹øÈ£ Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;
    case "dfPostNo":  rv = "¿Ã¹Ù¸¥ ¿ìÆí¹øÈ£ Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;

    case "dfNo":      rv = "¿Ã¹Ù¸¥ ¹øÈ£ Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;
    case "dfInteger+":rv = "¿Ã¹Ù¸¥ ¼ýÀÚ(¾çÀÇ Á¤¼ö) Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;
    case "dfInteger": rv = "¿Ã¹Ù¸¥ ¼ýÀÚ(Á¤¼ö) Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;
    case "dfFloat+":  rv = "¿Ã¹Ù¸¥ ¼ýÀÚ(¾çÀÇ ½Ç¼ö) Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;
    case "dfFloat":   rv = "¿Ã¹Ù¸¥ ¼ýÀÚ(½Ç¼ö) Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;

    case "dfEmail":   rv = "¿Ã¹Ù¸¥ ÀÌ¸ÞÀÏ Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;
    default:          rv = "¿Ã¹Ù¸¥ Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù."; break;
  }

  return rv;
}

// DB¿¡ ³ÖÀ» °ªÀ» °¡Á®¿Â´Ù.
function restoreValue(str, data_format)
{
  var rv = "";
  switch ( data_format )
  {
    //case "dfDateYy":
    //case "dfDateMm":
    case "dfDateYmd":
    case "dfDateYm":
    case "dfDateMd":

    case "dfTimeHms":
    case "dfTimeHm":

    case "dfTimeYmdhms":

    case "dfIdNo":
    case "dfSaupNo":
    case "dfCardNo":
    case "dfPostNo":  rv = str.replace(/\D/g, ""); break;

    //case "dfNo":
    case "dfInteger+":
    case "dfInteger":
    case "dfFloat+":
    case "dfFloat":   rv = str.replace(/,/g, ""); break;

    //case "dfEmail":
    default:          rv = str; break;
  }
  return rv;

}

// display ¿ë °ªÀÌ ¾Æ´Ñ DB¿¡ ³ÖÀ» °ªÀ» °¡Á®¿Â´Ù.
function getNormalValue(input, data_format)
{
  return restoreValue(input.value, nvl(data_format, input.data_format));
}

// input À» format ÇÑ´Ù.
function formatInput(input, data_format)
{
  input.value = formatValue(input.value, nvl(data_format, input.data_format));
}

function inputSetFormatValue(input, str, data_format)
{
  input.value = formatValue(str, nvl(data_format, input.data_format));
}

// input value ¼¼ÆÃÇÒ ¶§ type ÀÌ³ª data_format ¿¡ ¸Â°Ô ÀÚµ¿À¸·Î ¼¼ÆÃ
function inputSetValueAuto(input, str, data_format, default_value)
{
  if ( default_value != null && (str == null || str == "")) str = default_value;

  // if radio
  if ( input.length && input[0].type == "radio")
    for ( var n = 0, nsz = input.length; n < nsz; n++ )
      input[n].checked = input[n].value == str;

  switch ( input.tagName )
  {
    case "SELECT": setSelect(input, str); break;
    case "INPUT":
    {
      if ( input.type == "checkbox" || input.type == "radio")
        input.checked = input.value == str;
      else if ( input.data_format )
        inputSetFormatValue(input, str, input.data_format);
      else
        input.value = str;
    }
    break;
    default: input.value = str; break;
  }

}

getUnformat = getNormalValue;
formatThis = formatInput;
// util //////////////////////////////////////////////////////////////////////////////////

// Çü½ÄÈ­µÈ ¼ýÀÚÇü½ÄÀ» formatting
function formatValueMask(str, format)
{
  var rv = "";
  var numcount = countChr(format, '#');
  str = str.replace(/\D/g, "").substr(0, numcount);
  var chrAt;
  var validx = 0;
  for ( var n = 0; n < format.length; n++ )
  {
    chrAt = format.charAt(n);
    rv += ( chrAt == '#' ) ? str.charAt(validx++) : chrAt;
    if ( validx >= str.length ) break;
  }
  return rv;
}

// str ¿¡¼­ chr Æ÷ÇÔ °¹¼ö
function countChr(str, chr)
{
  var count = 0;
  var length = str.length;
  for ( var n = 0; n < length; n++ )
  {
    if ( chr == str.charAt(n) ) count++;
  }
  return count;
}

// ÄÄ¸¶¸¦ ºÙÀÎ´Ù.
// numstr Àº ¹Ýµå½Ã number string
function formatComma(numstr)
{
  numstr = deletePrecedingZero(numstr.replace(/\D/g, ""));// ¼±ÇàÇÏ´Â zero ¸¦ Áö¿î´Ù.
  var rv = "";
  var idx = 0;
  for ( var n = numstr.length - 1; n >= 0; n-- )
  {
    if ( idx != 0 && idx % 3 == 0 ) rv = "," + rv;
    rv = numstr.charAt(n) + rv;
    idx++;
  }
  return rv;
}

// oracle between
function between(val, from, to)
{
  return val >= from && val <= to;
}

// ÁÖ¹Îµî·Ï¹øÈ£ Ã¼Å©
function checkJuminNo(numstr)
{
  if ( ! /^\d{13}$/.test(numstr) ) return false;

  var cBit = 0;
  var sCode="234567892345";

  for ( var n = 0; n < 12; n++)
  {
    cBit += Number(numstr.charAt(n)) * Number(sCode.charAt(n));
  }

  cBit = 11 - ( cBit % 11);
  cBit = cBit % 10;

  return Number(numstr.charAt(12)) == cBit;
}

// »ç¾÷ÀÚµî·Ï¹øÈ£ Ã¼Å©
function checkSaupNo(numstr)
{
  if ( ! /^\d{10}$/.test(numstr) ) return false;

  var sCode = "137137135";

  var sum = 0;
  for ( var n = 0; n < 9; n++)
  {
    sum += Number(numstr.charAt(n)) * Number(sCode.charAt(n));
  }

  sum += parseInt(Number(numstr.charAt(8)) * 5 / 10);

  var sidliy = sum % 10;
  var sidchk = ( sidliy != 0 ) ? 10 - sidliy : 0;

  return sidchk == Number(numstr.charAt(9));
}

// oracle decode
function decode(s)
{
  var idx = 1;
  while ( idx < arguments.length - 1 )
  {
    if ( s == arguments[idx] )
    {
      return arguments[idx+1];
    }
    else
    {
      if ( idx+2 == arguments.length - 1)
      {
        return arguments[idx+2];
      }
    }
    idx += 2;
  }
  return null;
}

// ¼±Çà 0 Á¦°Å
function deletePrecedingZero(numstr)
{
  var replaced = numstr.replace(/^0+/, "");
  return numstr && ! replaced ? "0" : replaced;
}

// ÅØ½ºÆ®Á¤·Ä, ÇÑ¿µÀÔ·Â, ÃÖ´ë±ÛÀÚ¼öÁ¦ÇÑ style Àû¿ë
function applyStyle(e, textAlign, imeMode, maxLength)
{
  if ( textAlign != null ) e.runtimeStyle.textAlign = textAlign;
  if ( imeMode != null ) e.runtimeStyle.imeMode = imeMode;
  if ( maxLength != null )
  {
    e.maxLength = maxLength;
    e.size = maxLength + 2;
  }
}

// max °ªÀ» °¡Á®¿Â´Ù.
function max()
{
  var rv = null;
  for ( var n = 0; n < arguments.length; n++ )
  {
    if ( rv == null || arguments[n] > rv )
    {
      rv = arguments[n];
    }
  }
  return rv;
}

// min °ªÀ» °¡Á®¿Â´Ù.
function min()
{
  var rv = null;
  for ( var n = 0; n < arguments.length; n++ )
  {
    if ( rv == null || arguments[n] < rv )
    {
      rv = arguments[n];
    }
  }
  return rv;
}

// Æò±Õ°ªÀ» °¡Á®¿Â´Ù.
function avg()
{
  var sum = 0;
  for ( var n = 0; n < arguments.length; n++ )
  {
    sum += arguments[n];
  }
  return arguments.length == 0 ? 0 : sum / arguments.length;
}

// form ÀÇ Æ÷¸Ë°ªµéÀ» ÀÚµ¿À¸·Î unformat °´Ã¼°¡ ¾øÀ¸¸é ÀÚµ¿»ý¼º
function inputAutoUnformat(form, f, s)
{
  form = form || document.forms[0];
  f = f == null ? "F" : f;
  s = s == null ? "S" : s;
  var f_ = f + "_";
  var s_ = s + "_";
  $A(form.document.getElementsByTagName("INPUT")).select(function(e)
  {
    return e.name && e.name.startsWith(f_);
  }).each(function(e)
  {
    var s_name = s_ + e.name.substr(f_.length);
    if ( form[s_name] == null )
    {
      form.appendChild(form[s_name] = $E("input", {name: s_name, type: "hidden"}));
    }
    form[s_name].value = getUnformat(e);
  });
}
/*
function makeInputFormatAll()
{
  $A(document.getElementsByTagName("INPUT")).each(function (input, index)
  {
    if ( input.data_format )
    {
      switch ( input.data_format )
      {
        case "dfDateYy":  applyStyle(input, "center", "disabled", "####".length); break;
        case "dfDateMm":  applyStyle(input, "center", "disabled", "##".length); break;
        case "dfDateYmd": applyStyle(input, "center", "disabled", "####.##.##".length); break;
        case "dfDateYm":  applyStyle(input, "center", "disabled", "####.##".length); break;
        case "dfDateMd":  applyStyle(input, "center", "disabled", "##.##".length); break;

        case "dfTimeHms": applyStyle(input, "center", "disabled", "##:##:##".length); break;
        case "dfTimeHm":  applyStyle(input, "center", "disabled", "##:##".length); break;

        case "dfTimeYmdhms": applyStyle(input, "center", "disabled", "####.##.## ##:##:##".length); break;

        case "dfIdNo":    applyStyle(input, "center", "disabled", "######-#######".length); break;
        case "dfSaupNo":  applyStyle(input, "center", "disabled", "###-##-#####".length); break;
        case "dfCardNo":  applyStyle(input, "center", "disabled", "####-####-####-####".length); break;
        case "dfPostNo":  applyStyle(input, "center", "disabled", "###-###".length); break;

        case "dfNo":
        case "dfInteger+":
        case "dfInteger":
        case "dfFloat+":
        case "dfFloat":   applyStyle(input, "right", "disabled", null); break;
      }

      input.attachEvent("onkeyup", function() {
        switch ( event.keyCode )
        {
          case Event.KEY_BACKSPACE:
          case Event.KEY_TAB:
          case Event.KEY_RETURN:
          case Event.KEY_ESC:
          case Event.KEY_LEFT:
          case Event.KEY_UP:
          case Event.KEY_RIGHT:
          case Event.KEY_DOWN:
          case Event.KEY_DELETE:
          case Event.KEY_HOME:
          case Event.KEY_END:
          case Event.KEY_PAGEUP:
          case Event.KEY_PAGEDOWN: return;
        }
        formatThis(input);
      });

      input.attachEvent("onfocus", function() {
        input.select();
      });
    }
  });
}
*/
