//////////////////////////////////////////////////////////////////////////////////////////////////////
// 1. ÆÄÀÏ¸í : validation2.js
// 2. ÇÁ·Î±×·¥¸í : ÀÚ¹Ù½ºÅ©¸³Æ® °øÅë ÇÔ¼ö.
// 3. ±â´É ¼³¸í  : °øÅë ½ºÅ©¸³Æ® ¸ðÀ½
//
// 4. ÀÛ¼ºÀÏ     : 2001.02.16                  ÀÛ¼ºÀÚ : ÇÑ´ëÈñ
//----------------------------------------------------------------------------------------------------
//<º¯°æ°ü¸®>
// Version  Date        Programmer  Desc.         Relevant Doc.
// 1.0      2001/02/16  ÇÑ´ëÈñ      ½Å±ÔÀÛ¼º      ÅØ½ºÆ® ÇÊµå¸¦ ÄÁÆ®·Ñ ÇÏ±âÀ§ÇÑ °øÅë ½ºÅ©¸³Æ®
// 1.0      2001/02/20  ÇÑ´ëÈñ      Ãß°¡ÀÛ¼º      ³¯Â¥°ü·Ã ÀÚ¹Ù½ºÅ©¸³Æ® °øÅëÇÔ¼ö, °¢Á¾ ÀÔ·Â Æû ÄÁÆ®·Ñ
// 1.0      2001/05/07  ÇÑ´ëÈñ      Ãß°¡ÀÛ¼º      get,set ÅëÇÕ ÇÔ¼ö¹× ÀÔ·Â Æû ÄÁÆ®·Ñ º¸¿Ï¼öÁ¤
// 1.0      2002/09/12  ¹Ú¼±¿µ      Ãß°¡ÀÛ¼º      Á¶°Ç ÇÊµå Áß ÀÌº¥Æ®¿¡ µû¶ó ¼û±è OR º¸ÀÌ±â
// 1.0      2002/10/07  ¹Ú¼±¿µ      Ãß°¡ÀÛ¼º      ¶óÀÎ ¼±ÅÃ¿¡ ´ëÇÑ ¼±ÅÃµÈ ¶óÀÎ background Color Ã³¸®
// 1.0      2002/10/08  ¹Ú¼±¿µ      Ãß°¡ÀÛ¼º      ¶óÀÎ ÀüÃ¼ ¼±ÅÃ¿¡ ´ëÇÑ ¶óÀÎ background Color Ã³¸®
//////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
function keypressed()
{
  return false;
}

function disableKeyPress()
{
  document.onkeydown=keypressed;
}
function enableKeyPress()
{
  document.onkeydown=true;
}

function getKeyCode()
{
  return window.event.keyCode;
}

/*
 * Copyright (c) 2000 by LG-EDS Systems Inc
 * All rights reserved.
 *
 * ³¯Â¥°ü·Ã ÀÚ¹Ù½ºÅ©¸³Æ® °øÅëÇÔ¼ö
 *
 * ºÐ´ÜÀ§ ÀÌÇÏ(= ÃÊ)´Â °í·ÁÇÏÁö ¾Ê¾Ò½À´Ï´Ù.
 * YYYYMMDDHHMI Çü½ÄÀÇ String => 'Time'À¸·Î ÄªÇÔ
 *
 * ÁÖ·Î YYYYMMDD ±îÁö¸¸ ¾²ÀÎ´Ù¸é ¾Æ·¡ ÇÔ¼öµéÀ»
 * YYYYMMDD Çü½ÄÀÇ String => 'Date'·Î ÇÏ¿© Àû´çÈ÷
 * ¼öÁ¤ÇÏ½Ã°Å³ª ¾Æ´Ï¸é ÇÔ¼ö¸¦, ¿¹¸¦µé¾î isValidDate()Ã³·³,
 * Ãß°¡ÇÏ½Ã±â ¹Ù¶ø´Ï´Ù.
 *
 * @version 2.0, 2001/01/28
 * @author ¹ÚÁ¾Áø(JongJin Park), jongjpark@lgeds.lg.co.kr
 */


/**
 * À¯È¿ÇÑ(Á¸ÀçÇÏ´Â) ¿ù(êÅ)ÀÎÁö Ã¼Å©
 */
function isValidMonth(mm) {
  var m = parseInt(mm,10);
  return (m >= 1 && m <= 12);
}

/**
 * À¯È¿ÇÑ(Á¸ÀçÇÏ´Â) ÀÏ(ìí)ÀÎÁö Ã¼Å©
 */
function isValidDay(yyyy, mm, dd) {
  var m = parseInt(mm,10) - 1;
  var d = parseInt(dd,10);

  var end = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
  if ((yyyy % 4 == 0 && yyyy % 100 != 0) || yyyy % 400 == 0) {
    end[1] = 29;
  }

  return (d >= 1 && d <= end[m]);
}

/**
 * À¯È¿ÇÑ(Á¸ÀçÇÏ´Â) ½Ã(ãÁ)ÀÎÁö Ã¼Å©
 */
function isValidHour(hh) {
  var h = parseInt(hh,10);
  return (h >= 1 && h <= 24);
}


function isValidSecond (ss) {
  var s = parseInt(ss,10);
  return (s >= 0 && s <= 60);
}


/**
 * À¯È¿ÇÑ(Á¸ÀçÇÏ´Â) ºÐ(ÝÂ)ÀÎÁö Ã¼Å©
 */
function isValidMin(mi) {
  var m = parseInt(mi,10);
  return (m >= 0 && m < 60);
}

/**
 * Time Çü½ÄÀÎÁö Ã¼Å©(´À½¼ÇÑ Ã¼Å©)
 */
function isValidTimeFormat(time) {
  return (!isNaN(time) && time.length == 12);
}

/**
 * À¯È¿ÇÏ´Â(Á¸ÀçÇÏ´Â) Time ÀÎÁö Ã¼Å©
 * ex) var time = form.time.value; //'200102310000'
 *     if (!isValidTime(time)) {
 *         alert("¿Ã¹Ù¸¥ ³¯Â¥°¡ ¾Æ´Õ´Ï´Ù.");
 *     }
 */
function isValidTime(time) {
  var year  = time.substring(0,4);
  var month = time.substring(4,6);
  var day   = time.substring(6,8);
  var hour  = time.substring(8,10);
  var min   = time.substring(10,12);

  if (parseInt(year,10) >= 1900  && isValidMonth(month) &&
    isValidDay(year,month,day) && isValidHour(hour)   &&
    isValidMin(min)) {
    return true;
  }
  return false;
}

/**
 * Time ½ºÆ®¸µÀ» ÀÚ¹Ù½ºÅ©¸³Æ® Date °´Ã¼·Î º¯È¯
 * parameter time: Time Çü½ÄÀÇ String
 */
function toTimeObject(time) { //parseTime(time)
  var year  = time.substr(0,4);
  var month = time.substr(4,2) - 1; // 1¿ù=0,12¿ù=11
  var day   = time.substr(6,2);
  var hour  = time.substr(8,2);
  var min   = time.substr(10,2);

  return new Date(year,month,day,hour,min);
}

/**
 * ÀÚ¹Ù½ºÅ©¸³Æ® Date °´Ã¼¸¦ Time ½ºÆ®¸µÀ¸·Î º¯È¯
 * parameter date: JavaScript Date Object
 */
function toTimeString(date) { //formatTime(date)
  var year  = date.getFullYear();
  var month = date.getMonth() + 1; // 1¿ù=0,12¿ù=11ÀÌ¹Ç·Î 1 ´õÇÔ
  var day   = date.getDate();
  var hour  = date.getHours();
  var min   = date.getMinutes();
  var sec   = date.getSeconds();

  if (("" + month).length == 1) { month = "0" + month; }
  if (("" + day).length   == 1) { day   = "0" + day;   }
  if (("" + hour).length  == 1) { hour  = "0" + hour;  }
  if (("" + min).length   == 1) { min   = "0" + min;   }
  if (("" + sec).length   == 1) { sec   = "0" + sec;   }

  return ("" + year + month + day + hour + min + sec);
}

/**
 * TimeÀÌ ÇöÀç½Ã°¢ ÀÌÈÄ(¹Ì·¡)ÀÎÁö Ã¼Å©
 */
function isFutureTime(time) {
  return (toTimeObject(time) > new Date());
}

/**
 * TimeÀÌ ÇöÀç½Ã°¢ ÀÌÀü(°ú°Å)ÀÎÁö Ã¼Å©
 */
function isPastTime(time) {
  return (toTimeObject(time) < new Date());
}

/**
 * ÁÖ¾îÁø Time °ú y³â m¿ù dÀÏ h½Ã Â÷ÀÌ³ª´Â TimeÀ» ¸®ÅÏ
 * ex) var time = form.time.value; //'20000101000'
 *     alert(shiftTime(time,0,0,-100,0));
 *     => 2000/01/01 00:00 À¸·ÎºÎÅÍ 100ÀÏ Àü Time
 */
function shiftTime(time,y,m,d,h) { //moveTime(time,y,m,d,h)
  var date = toTimeObject(time);

  date.setFullYear(date.getFullYear() + y); //y³âÀ» ´õÇÔ
  date.setMonth(date.getMonth() + m);       //m¿ùÀ» ´õÇÔ
  date.setDate(date.getDate() + d);         //dÀÏÀ» ´õÇÔ
  date.setHours(date.getHours() + h);       //h½Ã¸¦ ´õÇÔ

  return toTimeString(date);
}

/**
 * µÎ TimeÀÌ ¸î °³¿ù Â÷ÀÌ³ª´ÂÁö ±¸ÇÔ
 * time1ÀÌ time2º¸´Ù Å©¸é(¹Ì·¡¸é) minus(-)
 */
function getMonthInterval(time1,time2) { //measureMonthInterval(time1,time2)
  var date1 = toTimeObject(time1);
  var date2 = toTimeObject(time2);

  var years  = date2.getFullYear() - date1.getFullYear();
  var months = date2.getMonth() - date1.getMonth();
  var days   = date2.getDate() - date1.getDate();

  return (years * 12 + months + (days >= 0 ? 0 : -1) );
}

/**
 * µÎ TimeÀÌ ¸çÄ¥ Â÷ÀÌ³ª´ÂÁö ±¸ÇÔ
 * time1ÀÌ time2º¸´Ù Å©¸é(¹Ì·¡¸é) minus(-)
 */
function getDayInterval(time1,time2) {
  var date1 = toTimeObject(time1);
  var date2 = toTimeObject(time2);
  var day   = 1000 * 3600 * 24; //24½Ã°£

  return parseInt((date2 - date1) / day, 10);
}

/**
 * µÎ TimeÀÌ ¸î ½Ã°£ Â÷ÀÌ³ª´ÂÁö ±¸ÇÔ
 * time1ÀÌ time2º¸´Ù Å©¸é(¹Ì·¡¸é) minus(-)
 */
function getHourInterval(time1,time2) {
  var date1 = toTimeObject(time1);
  var date2 = toTimeObject(time2);
  var hour  = 1000 * 3600; //1½Ã°£

  return parseInt((date2 - date1) / hour, 10);
}

/**
 * µÎ TimeÀÌ ¸î ºÐ Â÷ÀÌ³ª´ÂÁö ±¸ÇÔ
 * time1ÀÌ time2º¸´Ù Å©¸é(¹Ì·¡¸é) minus(-)
 */
function getMinInterval(time1,time2) {
  var date1 = toTimeObject(time1);
  var date2 = toTimeObject(time2);
  var min  = 1000 * 3600; //1½Ã°£
  return parseInt(((date2 - date1) / min)*60, 10);
}

/**
 * ÇöÀç ½Ã°¢À» Time Çü½ÄÀ¸·Î ¸®ÅÏ
 */
function getCurrentTime() {
  return toTimeString(new Date());
}

/**
 * ÇöÀç ½Ã°¢°ú y³â m¿ù dÀÏ h½Ã Â÷ÀÌ³ª´Â TimeÀ» ¸®ÅÏ
 */
function getRelativeTime(y,m,d,h) {
  return shiftTime(getCurrentTime(),y,m,d,h);
}

/**
 * ÇöÀç Ò´À» YYYYÇü½ÄÀ¸·Î ¸®ÅÏ
 */
function getYear() {
  return getCurrentTime().substr(0,4);
}

/**
 * ÇöÀç êÅÀ» MMÇü½ÄÀ¸·Î ¸®ÅÏ
 */
function getMonth() {
  return getCurrentTime().substr(4,2);
}

/**
 * ÇöÀç ìíÀ» DDÇü½ÄÀ¸·Î ¸®ÅÏ
 */
function getDay() {
  return getCurrentTime().substr(6,2);
}

/**
 * ÇöÀç ãÁ¸¦ HHÇü½ÄÀ¸·Î ¸®ÅÏ
 */
function getHour() {
  return getCurrentTime().substr(8,2);
}

/**
 * ¿À´ÃÀÌ ¹«½¼ ¿äÀÏÀÌ¾ß?
 * ex) alert('¿À´ÃÀº ' + getDayOfWeek() + '¿äÀÏÀÔ´Ï´Ù.');
 * Æ¯Á¤ ³¯Â¥ÀÇ ¿äÀÏÀ» ±¸ÇÏ·Á¸é? => ¿©·¯ºÐÀÌ Á÷Á¢ ¸¸µé¾î º¸¼¼¿ä.
 */
function getDayOfWeek() {
  var now = new Date();

  var day = now.getDay(); //ÀÏ¿äÀÏ=0,¿ù¿äÀÏ=1,...,Åä¿äÀÏ=6
  var week = new Array('ÀÏ','¿ù','È­','¼ö','¸ñ','±Ý','Åä');

  return week[day];
}
/********************************************************************************/



/**************************************
**
** ³¯ÀÚ °ü·Ã ÇÔ¼öµé(Ãß°¡)
**
** 2001.05.04
**
***************************************/
// ÇöÀçÀÏº¸´Ù °ú°ÅÀÏÀÎÁö °Ë»ç
function isPastDate(yyyy, mm, dd)
{
  if (isPastDate.arguments.length==1)
  {
    mm = yyyy.substring(4,2);
    dd = yyyy.substring(6,2);
    yyyy = yyyy.substring(0,4);
  }

  yyyy = Number(yyyy);  if (isNaN(yyyy)) return false;
  mm   = Number(mm  );  if (isNaN(mm  )) return false;
  dd   = Number(dd  );  if (isNaN(dd  )) return false;

  if ( Number(getYear())<=yyyy ||
       Number(getYear())==yyyy && Number(getMonth())<=mm ||
       Number(getYear())==yyyy && Number(getMonth())==mm && Number(getDay())<=dd ) return false;

  return true;
}

// ¿Ã¹Ù¸¥ ³¯ÀÚÀÎÁö °Ë»ç
function isValidDate(yyyy, mm, dd)
{
  if (isValidDate.arguments.length==1)
  {
    mm = yyyy.substring(4,2);
    dd = yyyy.substring(6,2);
    yyyy = yyyy.substring(0,4);
  }

  yyyy = Number(yyyy);  if (isNaN(yyyy)) return false;
  mm   = Number(mm  );  if (isNaN(mm  )) return false;
  dd   = Number(dd  );  if (isNaN(dd  )) return false;

  return ( isValidMonth(mm) && isValidDay(yyyy,mm,dd) );
}

// ÀÔ·ÂÇÑ ³¯Â¥¿¡¼­ ÇÊ¿äÇÑ ³¯¼ö ¸¸Å­ µÚ·Î °è»êÇØÁØ´Ù.
function get_Day(month, day, count_Day)
{
  var Last_mon = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

  if(month == '1') month = '13';

        month     = Number(month);
	day       = Number(day);
	count_Day = Number(count_Day);

  if((day - count_Day) > 0)
  {
  	day = day - count_Day;

  	month = String(month)                        // 2001.08.20 Â÷µµ¿µ Ãß°¡ ½ÃÀÛ
  	day = String(day)

  	if (month.length < 2 ) month = "0" + month;
  	if (day.length < 2 ) day = "0" + day;         // 2001.08.20 Â÷µµ¿µ Ãß°¡ ³¡

  }
  else
  {
  	day = Last_mon[(month - 2)] - count_Day + day;
  	month = month - 1;

  	month = String(month)                         // 2001.08.20 Â÷µµ¿µ Ãß°¡ ½ÃÀÛ
  	day = String(day)


  	if (month.length < 2 ) month = "0" + month;
  	if (day.length < 2 ) day = "0" + day;         // 2001.08.20 Â÷µµ¿µ Ãß°¡ ³¡


  }
  var result = String(month) + String(day);
 	return(result);
}


// ÀÔ·ÂÇÑ ³¯Â¥¿¡¼­ ÇÊ¿äÇÑ ³¯¼ö ¸¸Å­ ¾ÕÀ¸·Î ·Î °è»êÇØÁØ´Ù. (2001.08.24  Â÷µµ¿µ Ãß°¡)
function get_Day_Next(month, day, count_Day)
{
  var Last_mon = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

  //if(month == '12') month = '0';

        month     = Number(month);
	day       = Number(day);
	count_Day = Number(count_Day);


  if( (day + count_Day) > Last_mon[month] )
  {
  	month   = month + 1;
  	day = day + count_Day ;
  	day = Last_mon[month] - day ;

  	month = String(month)
  	day = String(day)

  	if (month.length < 2 ) month = "0" + month;
  	if (day.length < 2 ) day = "0" + day;

  }
  else
  {

  	day = day + count_Day;

  	month = String(month)
  	day = String(day)


  	if (month.length < 2 ) month = "0" + month;
  	if (day.length < 2 ) day = "0" + day;

  }
  var result = String(month) + String(day);
 	return(result);
}




/*************************************************
**
**  ¹®ÀÚ¿­ ´Ù·ç´Â ÇÔ¼öµé.
**
**  2001.05.04
**
**************************************************/

////////////////////////////////////////////////////////////////////////////////////
function toHex2(num)
{
  switch(num)
  {
    case 10: return "A";
    case 11: return "B";
    case 12: return "C";
    case 13: return "D";
    case 14: return "E";
    case 15: return "F";
  }

  return num;
}

function toHex(num)
{
  var a = Math.ceil((num-15)/16);
  var b = num%16;

  a=toHex2(a);
  b=toHex2(b);

  return (""+a)+b;
}

function toDec(num)
{
  return eval("0x"+num);
}

function char2Ascii(ch)
{
  ch=ch.substring(0,1);

  var tmp = escape(ch);
  var len = tmp.length;

  if (len==1)
  {
    var i;

	  for (i=0;i<256;i++)
	  {
	    if (ch==unescape("%"+toHex(i)))
	    	break;
	  }

		return i;
	}
  else if (len>4)
    return eval("0x"+tmp.substring(len-4,len));
  else if (len>2)
    return eval("0x"+tmp.substring(len-2,len));

	return -1;
}

function str2Ascii(str)
{
  var arr = new Array();
  var i;
  var num;

  for (i=0;i<str.length;i++)
  {
    num = char2Ascii(str.charAt(i));

    if (num>255)
    {
      arr[arr.length]=Math.ceil((num-255)/256);
      arr[arr.length]=num%256;
    }
    else
      arr[arr.length]=num;
  }

  return arr;
}
////////////////////////////////////////////////////////////////////////////////////

// ¹®ÀÚ¿­ str¿¡ Æ÷ÇÔµÈ fromStrÀ» toStrÀ¸·Î replace
function replaceString( str, fromStr, toStr )
{
  var idx;
  var dst="";

  if (!str.substring) return str;

  while((idx = str.indexOf(fromStr))>=0)
  {
    dst += str.substring(0,idx) + toStr;
    str  = str.substring(idx+fromStr.length);
  }

  return dst + str;
}

function strtok( str, ch, idx )
{
  var i,j;
  var p1;
  var p;

  p1 = 0;
  p = -1;

  for (i=0,j=0;i<str.length;i++)
  {
    if ( str.charAt(i)==ch )
    {
      j++;
      if (j==idx || i>=str.length )
        break;

      p = i;
    }
  }
  return str.substring(p+1, i);
}

// ¹®ÀÚ¿­ strÀÇ ¿À¸¥ÂÊ³¡ºÎºÐÀÇ ¹®ÀÚ ch¸¦ ¸ðµÎ Á¦°Å.
// chÀÇ default°ªÀº ' '
function rTrim(str, ch)
{
  var i=0;

  if (ch==null || ch.length==0) ch=' ';

  for (i=str.length; i>0;i--)
  {
    if ( str.charAt(i-1)!=ch)
      break;
  }

  return str.substring(0,i);
}

// ¹®ÀÚ¿­ strÀÇ ¿ÞÂÊ³¡ºÎºÐÀÇ ¹®ÀÚ ch¸¦ ¸ðµÎ Á¦°Å.
// chÀÇ default°ªÀº ' '
function lTrim(str, ch)
{
  var i=0;

  if (ch==null || ch.length!=1) ch=' ';

  for (i=0;i<str.length;i++)
  {
    if ( str.charAt(i)!=ch)
      break;
  }

  return str.substring(i);
}

function trim(str,ch)
{
  return rTrim( lTrim(str,ch) ,ch);
}

// ¹®ÀÚ¿­ str¿¡¼­ ¹®ÀÚ ch¸¦ ¸ðµÎ Á¦°Å.
// chÀÇ default°ªÀº ' '
function trimChar(str, ch)
{
  var i=0;
  var dst="";

  if (ch==null || ch.length!=1) ch=' ';

  for (i=0;i<str.length;i++)
  {
    if ( str.charAt(i)!=ch)
      dst+=str.charAt(i);
  }

  return dst;
}

// ¹®ÀÚ¿­ str¿¡¼­ ¼ýÀÚ¸¸ ³²±â°í ¸ðµç ¹®ÀÚ¸¦ Á¦°Å.
function trimAllChar(str)
{
  var i=0;
  var dst="";

  for (i=0;i<str.length;i++)
  {
    if ( str.charAt(i)>='0' && str.charAt(i)<='9')
      dst+=str.charAt(i);
  }

  return dst;
}

function trimNotAlphaNum(str)
{
  var i=0;
  var dst="";

  for (i=0;i<str.length;i++)
  {
    if ( str.charAt(i)>='0' && str.charAt(i)<='9' ||
         str.charAt(i)>='a' && str.charAt(i)<='z' ||
         str.charAt(i)>='A' && str.charAt(i)<='Z' ) {
      dst+=str.charAt(i);
//Debug
	alert("trimNotAlphaNum : str : " + str.charAt(i) + " && dst : " + dst); }
  }

  return dst;
}

// ¹®ÀÚ¿­ÀÌ lenº¸´Ù ÂªÀ¸¸é ¿À¸¥ÂÊ¿¡ ¹®ÀÚ ch·Î Ã¤¿ö ±æÀÌ¸¦ lenÀ¸·Î ¸ÂÃá´Ù.
function rFill(str, ch, len)
{
  while (str.length<len) str+=ch;
  return str;
}
// ¹®ÀÚ¿­ÀÌ lenº¸´Ù ÂªÀ¸¸é ¿À¸¥ÂÊ¿¡ ¹®ÀÚ ch·Î Ã¤¿ö ±æÀÌ¸¦ lenÀ¸·Î ¸ÂÃá´Ù.
function lFill(str, ch, len)
{
  while (str.length<len) str=ch+str;
  return str;
}
function lFillObj(sObj,ch,len)
{
  if(sObj.value.length!=0) sObj.value=lFill(sObj.value,ch,len);
}
// ¹®ÀÚ¿­¿¡ ±¸ºÐÀÚ »ðÀÔ
// ('str', lastflag, offset1, 'sep1', offset2, 'sep2', ...)
// ex) setSeparator("aaaaaaaaaa", false, 3, "|", 2, ",", 5, "/");
//     => "aaa|aa,aaaaa"   (±¸ºÐÀÚ »ðÀÔÀ§Ä¡ ´ÙÀ½¿¡ ¹®ÀÚ°¡ ¾øÀ¸¸é ±¸ºÐÀÚ »ðÀÔ ¾ÈÇÔ)
// ex) setSeparator("aaaaaaaaaa", true, 3, "|", 2, ",", 5, "/");
//     => "aaa|aa,aaaaa/"   (±¸ºÐÀÚ »ðÀÔÀ§Ä¡ ´ÙÀ½¿¡ ¹®ÀÚ°¡ ¾ø¾îµµ ±¸ºÐÀÚ »ðÀÔ ÇÔ)
function setSeparator()
{
  var args = setSeparator.arguments;
  var i=0;
  var str  = args[0].toString();
  var lastflag = args[1].toString();

  for (i=2;i<args.length;i+=2)
  {
    args[i] = Number(args[i]);
    args[i+1] = args[i+1].toString();

    if (isNaN(args[i])) return false;
  }

  for (i=2,offset=0;i<args.length;i+=2)
  {
    offset += args[i];

    if (lastflag && offset>str.length || !lastflag && offset>=str.length) break;

    str = str.substring(0,offset) + args[i+1] + str.substring(offset);

    offset+=args[i+1].length;
  }

  return str;
}


/********************************************
**
** ¹®ÀÚ¿­ °Ë»ç. ¹®ÀÚ¿­ Ç¥Çö
**
** 2001.05.04
**
*********************************************/

// ÀÛ¼º 2001.02.16 ÇÑ´ëÈñ
function getBytes(src)
{
  var i=0;
  var sum=0;
  for (i=0;i <src.length; i++,sum++)
  {
    if (escape(src.charAt(i)).length>4) sum++;
  }
  return sum;
}

// ÁÖ¾îÁø ¹®ÀÚ¿­ÀÌ ¼öÄ¡dataÀÎÁö °Ë»ç
function isNum(src)
{
  var dst = trimChar(src, ",");
  dst = trim(dst, ' ');

  return !isNaN(Number(dst));
}

function isDigit(src)
{
  return isNum(src);
}

//Æ¯¼ö¹®ÀÚ°¡ ÀÖ´ÂÁö ¹®ÀÚ¿­ °Ë»ç
// { , } , [ , ] , | , \ , ~ , ` , @ , # , $ , ^ , ? , ! , ' Ã¼Å©
function isSpecial_char(src)
{
     var ch ="\0";
     for (var i = 0, ch = src.charAt(i); (i <src.length); ch = src.charAt(++i))
     {
     	  switch(ch) {
     	  	case "{":
     	  	case "}":
     	  	case "[":
     	  	case "]":
     	  	case "|":
     	  	case "\\":
     	  	case "~":
     	  	case "`":
     	  	case "@":
     	  	case "!":
     	  	case "#":
     	  	case "$":
     	  	case "^":
     	  	case ":":
     	  	case "?":
     	  	case "'":   return false; break;
     	  }
     }
     return true;
}

// srcÀÌ ¾ËÆÄºªÀ¸·Î¸¸ ±¸¼ºµÈ ¹®ÀÚ¿­ÀÎÁö °Ë»ç
// alphanum -> isAlphaNum ÀÌ¸§ º¯°æ
function isAlpha(src) {

  var ch = "\0";

  for (var i = 0, ch = src.charAt(i);
    (i <src.length); ch = src.charAt(++i)) {
    if ((ch >= 'a') && (ch <= 'z'))
       ;
    else if ((ch >= 'A') && (ch <= 'Z'))
       ;
    else
       return false;
  }
  return true;
}

function isSpace(src) {

  return true;

}

//srcÀÌ ¾ËÆÄºª°ú Space·Î¸¸ ±¸¼ºµÈ ¹®ÀÚ¿­ÀÎÁö °Ë»ç
function isSpaceAlpha(src) {

  var ch = "\0";

  for (var i = 0, ch = src.charAt(i);
    (i <src.length); ch = src.charAt(++i)) {

    if ((ch >= 'a') && (ch <= 'z'))
       ;
    else if ((ch >= 'A') && (ch <= 'Z'))
       ;
    else if(ch==' ')
       ;
    else
       return false;
  }
  return true;

}
// srcÀÌ ¾ËÆÄºª°ú ¼ýÀÚ¿Í Space·Î¸¸ ±¸¼ºµÈ ¹®ÀÚ¿­ÀÎÁö °Ë»ç
function isSpaceAlphaNum(src) {

  var ch = "\0";

  for (var i = 0, ch = src.charAt(i);
    (i <src.length); ch = src.charAt(++i)) {
    if ((ch >= '0') && (ch <= '9'))
       ;
    else if ((ch >= 'a') && (ch <= 'z'))
       ;
    else if ((ch >= 'A') && (ch <= 'Z'))
       ;
    else if(ch==' ')
       ;
    else
       return false;
  }
  return true;
}

// srcÀÌ ¾ËÆÄºª°ú ¼ýÀÚ·Î¸¸ ±¸¼ºµÈ ¹®ÀÚ¿­ÀÎÁö °Ë»ç
// alphanum -> isAlphaNum ÀÌ¸§ º¯°æ
function isAlphaNum(src) {

  var ch = "\0";

  for (var i = 0, ch = src.charAt(i);
    (i <src.length); ch = src.charAt(++i)) {
    if ((ch >= '0') && (ch <= '9'))
       ;
    else if ((ch >= 'a') && (ch <= 'z'))
       ;
    else if ((ch >= 'A') && (ch <= 'Z'))
       ;
    else
       return false;
  }
  return true;
}

// ÁÖ¾îÁø ¹®ÀÚ¿­ÀÌ ÇÑ±Û·Î¸¸ ±¸¼ºµÈ ¹®ÀÚ¿­ÀÎÁö °Ë»ç
// À§¿¡ korean ¸»°í ÀÌ°Å ¾²¼¼¿ä.
function isKorean(src) {
  var ch = "\0";

  for (var i = 0, ch = src.charAt(i);
    (i <src.length); ch = src.charAt(++i)) {
    if (ch<'¤¡')
       return false;
  }
  return true;
}

// ÁÖ¾îÁø ¹®ÀÚ¿­ÀÌ ÇÑ±Û°ú Space·Î¸¸ ±¸¼ºµÈ ¹®ÀÚ¿­ÀÎÁö °Ë»ç
function isSpaceKorean(src) {
  var ch = "\0";

  for (var i = 0, ch = src.charAt(i);
    (i <src.length); ch = src.charAt(++i)) {
    if (ch<'¤¡') {
	if(ch!=' ') return false;
    }
  }
  return true;
}

// Á¤¼ö¹®ÀÚ¿­À» xxx,xxx,xxx,xxx Çü½ÄÀ¸·Î º¯È¯
function getFormattedInteger(src)
{
  var sPos;
  var i;

  var sign="";
  var dst="";

  src = ""+src;

  trim(src);

  if (src.charAt(0)=='-') sign='-';

  src = trimAllChar(src);

  if (src.length>3)
    sPos=(src.length-1)%3+1;
  else
    sPos=3;

  dst=src.substring(0,sPos);

  for (i=sPos; i<src.length;i+=3)
  {
    dst+=","+src.substring(i,i+3);
  }

  dst = sign + dst;
  return dst;
}

// ¼Ò¼ö¹®ÀÚ¿­À» xxx,xxx,xxx,xxx.xxxxxx Çü½ÄÀ¸·Î º¯È¯
function getFormattedDouble(str)
{
  var idx;

  if (str==null || (idx=str.indexOf('.'))<0 || idx>str.length)
    return str;

  return getFormattedInteger(str.substring(0,idx)) + str.substring(idx);
}

// ¿Ã¸², ³»¸², ¹Ý¿Ã¸²
// str  - ¿Ã¸²..µîÀ» ÇÒ ¼ö
// flag - "¿Ã¸²", "³»¸²", "¹Ý¿Ã¸²"
// f    - ÀÚ¸®¼ö (10ÀÇ Áö¼ö·Î Ç¥Çö,  ¾ç¼ö : ¼Ò¼öÁ¡À§ f+1¹øÂ°±îÁö ³²±è, À½¼ö : ¼Ò¼öÁ¡¾Æ·¡ -f¹øÂ°±îÁö ³²±è)
//    ex> str = 12345.6789
//        flag = "¿Ã¸²"
//          f = -3   => 12345.679
//          f = 2    => 12400
//        flag = "³»¸²"
//          f = -3   => 12345.678
//          f = 2    => 12300
//        flag = "¹Ý¿Ã¸²"
//          f = -3   => 12345.679
//          f = 2    => 12300
function getFixedNum(str, flag, f)
{
	var num = Number(str);

	if (isNaN(num)) return str;

  switch(flag)
  {
  	case "¿Ã¸²":
  	  num = Math.ceil(num/Math.pow(10, f));
  	  break;
  	case "³»¸²":
  	  num = Math.ceil(num/Math.pow(10, f)+0.1)-1;
  	  break;
  	case "¹Ý¿Ã¸²":
  	  num = Math.round(num/Math.pow(10, f));
  	  break;
  	default:
  	  break;
  }

	num *= Math.pow(10, f);

	return num;
}

function getFixedNum2(num,f)
{
	var su='1';
	for(var i=1; i<=f; i++ ){ su=su+'0';}
	var no=Number(su);

	return Math.round(num*no) / no;
	
}

//¿øÀÎÈ¯ º¯°æ2003³â 11¿ù 14ÀÏ
// Seperator¸¦ ³Ö¾î¼­  Ã³¸®ÇÒ ¼ö ÀÖµµ·Ï Ãß°¡º¯°æÇÔ
//µÎ¹øÂ° ¾Æ±Ô¸ÕÆ®´Â Seperator

function getFormattedDate(str)
{
  if (str==null) return str;

  var separator='-';

//¿øÀÎÈ¯ Ãß°¡ ½ÃÀÛ
 if (arguments[1])
 {

	 var separator = arguments[1];
 }
 //¿øÀÎÈ¯ Ãß°¡ ³¡

  return setSeparator(str, false, 4, separator, 2, separator);
}

function getFormattedDate2(str)
{
  if (str==null) return str;

  var separator='/';

  return setSeparator(str, false, 2, separator, 2, separator);
}

function getFormattedString(str, formatStr)
{
	if (str==null) return str;

	var i,j;
	var dst="";

	for (i=0,j=0;i<str.length && j<formatStr.length;i++,j++)
	{
	  if (formatStr.charAt(j)=='#')
	    dst+=str.charAt(i);
	  else
	  {
	    dst+=formatStr.charAt(j);
	    i--;
	  }
	}

	return dst;
}



// Test FieldÀÇ °ª ¼³Á¤.
function setTextField(sObj, val)
{
  if (!sObj)
  {
    alert("[setTextField] sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }
  sObj.value = val;
}
function getTextField(sObj)
{
  if (!sObj)
  {
    alert("[getTextField] sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }
  return sObj.value;
}
function setTextArea(sObj, val)
{
  if (!sObj)
  {
    alert("[setTextArea] sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }
  setTextField(sObj, val);
}
function getTextArea(sObj)
{
  if (!sObj)
  {
    alert("[getTextArea] sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }
  return getTextField(sObj);
}


//////////////////////////////////////////// ComboBox Controll Start/////////////
// ÄÞº¸ ¹Ú½ºÀÇ °ª ¼³Á¤
function setComboBoxVal(sObj, val)
{
  if (!sObj)
  {
    alert("[setComboBoxVal] sObj°¡ nullÀÔ´Ï´Ù.");
    return;
  }
  var i;
  
  for (i=0;i<sObj.options.length;i++)
  {
    if (sObj.options[i].value == val)
    {
      sObj.options.selectedIndex = i;
      break;
    }
  }
}

//////////////////////////////////////////// ComboBox Controll Start/////////////
// ÄÞº¸ ¹Ú½ºÀÇ °ª ¼³Á¤
function setComboBoxValIgnoreCase(sObj, val)
{
  if (!sObj)
  {
    alert("[setComboBoxVal] sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }
  var i;
  
  for (i=0;i<sObj.options.length;i++)
  {
    if (sObj.options[i].value.toUpperCase() == val.toUpperCase())
    {
      sObj.options.selectedIndex = i;
      break;
    }
  }
}

function setComboBoxText(sObj, text)
{
  if (!sObj)
  {
    alert("[setComboBoxText] sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }
  var i;
  for (i=0;i<sObj.options.length;i++)
  {
    if (sObj.options[i].text == text)
    {
      sObj.options.selectedIndex = i;
      break;
    }
  }
}

function setComboBoxIdx(sObj, idx)
{
  if (!sObj)
  {
    alert("[setComboBoxIdx] sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  if (idx>=0 && idx<sObj.options.length)
    sObj.options.selectedIndex = idx;
}

function setComboBoxFirst(sObj)
{
  if (!sObj)
  {
    alert("[setComboBoxFirst] sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  sObj.options.selectedIndex = 0;
}

function setComboBoxLast(sObj)
{
  if (!sObj)
  {
    alert("[setComboBoxLast] sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  sObj.options.selectedIndex = sObj.options.length-1;
}

// ÄÞº¸ ¹Ú½ºÀÇ ¼±ÅÃµÈ °ª ÀÐ±â
function getComboBoxVal(sObj)
{
  if (!sObj)
  {
    alert("[getComboBoxVal] sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  return sObj.options[sObj.options.selectedIndex].value;
}

// ÄÞº¸ ¹Ú½ºÀÇ ¼±ÅÃµÈ Index ÀÐ±â
function getComboBoxIdx(sObj)
{
  if (!sObj)
  {
    alert("[getComboBoxIdx] sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  return sObj.options[sObj.options.selectedIndex].value;
}

// ÄÞº¸ ¹Ú½ºÀÇ ¼±ÅÃµÈ Text ÀÐ±â
function getComboBoxText(sObj)
{
  if (!sObj)
  {
    alert("[getComboBoxText] sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  return sObj.options[sObj.options.selectedIndex].text;
}

// ÄÞº¸ ¹Ú½ºÀÇ ¸¶Áö¸· ÀÎµ¦½º
function getComboBoxLastIdx(sObj)
{
  if (!sObj)
  {
    alert("[getComboBoxLastIdx] sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  return sObj.options.length-1;
}

// ¿øÇÏ´Â valueÀÇ ¿É¼Ç Ã£±â. (index¸®ÅÏ)
function findOption(sObj, value)
{
  if (!sObj)
  {
    alert("[findOption] sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  for (i=0;i<sObj.options.length;i++)
  {
    if (sObj.options[i].value == value)
      return i;
  }

  return -1;
}

// ÀÌ¹Ì »ý¼ºµÈ ÄÞº¸ ¹Ú½ºÀÇ ¿øÇÏ´Â À§Ä¡¿¡ option ÇÏ³ª¸¦ Ãß°¡
function addOption(sObj, idx, value, text)
{
  if (!sObj)
  {
    alert("[addOption] sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  if ( sObj==null || idx==null || value==null || text==null ) return;

  if ( idx<0 ) idx=0;
  else if (idx>sObj.options.length) idx=sObj.options.length;

  sObj.options.length++;

  for (i=sObj.options.length-1; i>idx ; i--)
  {
    sObj.options[i].value = sObj.options[i-1].value;
    sObj.options[i].text  = sObj.options[i-1].text ;
  }

  sObj.options[idx].value = value;
  sObj.options[idx].text  = text ;

}

// ÄÞº¸ ¹Ú½º¿¡¼­ ÇØ´ç INDEXÀÇ optionÀ» »èÁ¦
function delOption(sObj, idx)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  if ( sObj==null || idx==null ) return;

  if ( idx<0 || idx>=sObj.options.length) return;;

  sObj.options[idx]=null;
}

function delAllOption(sObj)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  sObj.options.length=0;
}

// sObj¿¡¼­ ¼±ÅÃµÈ optionÀ» targetÀ¸·Î ÀÌµ¿(listÈ¤Àº combo)
function moveSelectedOption( sObj, target )
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  if ( sObj==null || target==null ) return false;

  var idx = sObj.options.selectedIndex;

  if ( idx<0 || idx>=sObj.options.length || sObj.options[idx].value=="-1" ) return false;

  addOption (target, target.options.length, sObj.options[idx].value, sObj.options[idx].text );
  delOption (sObj, idx);

  return true;
}

// sObj¿¡¼­ ¼±ÅÃµÈ optionÀ» ÇÑÄ­ À§·Î ÀÌµ¿
function moveUpOption( sObj )
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  var idx   = sObj.options.selectedIndex;
  var i;

  if (idx<=0 || idx>sObj.options.length-1) return false;

  var value = sObj.options[idx].value;
  var text  = sObj.options[idx].text ;

  if (value=="-1") return false;

  for (i=idx-1;i>=0;i--)
  {
    var value1 = sObj.options[i].value;
    var text1  = sObj.options[i].text ;

    if (value1!="-1")
    {
      break;
    }
  }

  if (i<0) return false;

  delOption( sObj, idx );
  delOption( sObj, i );

  addOption( sObj, idx-1, value1, text1 );
  addOption( sObj, i, value, text );

  return true;
}

// sObj¿¡¼­ ¼±ÅÃµÈ optionÀ» ÇÑÄ­ ¾Æ·¡·Î ÀÌµ¿
function moveDownOption( sObj )
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  var idx   = sObj.options.selectedIndex;
  var i;

  if (idx<0 || idx>=sObj.options.length-1 ) return false;

  var value = sObj.options[idx].value;
  var text  = sObj.options[idx].text ;

  if (value=="-1") return false;

  for (i=idx+1;i<=sObj.options.length-1;i++)
  {
    var value1 = sObj.options[i].value;
    var text1  = sObj.options[i].text ;

    if (value1!="-1")
    {
      break;
    }

  }
  if (i>sObj.options.length-1) return false;

  delOption( sObj, i );
  delOption( sObj, idx );

  addOption( sObj, idx, value1, text1 );
  addOption( sObj, i, value, text );

  return true;
}


//////////////////////////////////////////// ComboBox Controll End/////////////

// CheckBox ÃÊ±âÈ­ (¾Æ¹«°Íµµ ¼±ÅÃµÇÁö ¾ÊÀº »óÅÂ·Î)
function clearCheckBox(sObj)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  var i;
  for (i=0;i<sObj.length;i++)
  {
    sObj[i].checked=false;
  }
}

// CheckBox ¼±ÅÃ
// sObj : CheckBox
// val    : ¼±ÅÃÇÒ ¹öÆ°ÀÇ value
function setCheckBoxVal(sObj, val)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  if (!sObj.length && sObj.value && sObj.value == val)
    sObj.checked=true;
  else
  {
	  var i;
	  for (i=0;i<sObj.length;i++)
	  {
	    if (sObj[i].value == val)
	    {
	      sObj[i].checked=true;
	      break;
	    }
	  }
	}
}

// CheckBox ¼±ÅÃ
// sObj : CheckBox
// idx  : ¼±ÅÃÇÒ ¹öÆ°ÀÇ index
function setCheckBoxIdx(sObj, idx)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  if (idx>=sObj.length) return;

  sObj[idx].checked=true;
}

function getCheckBoxVal(sObj)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  if (!sObj.length && sObj.checked)
    return sObj.value;
  else
  {
	  var i;
	  for (i=0;i<sObj.length;i++)
	  {
	    if (sObj[i].checked) return sObj[i].value;
	  }
	}
  return null;
}

function getCheckBoxIdx(sObj)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  var i;
  for (i=0;i<sObj.length;i++)
  {
    if (sObj[i].checked) return i;
  }
  return -1;
}
// CheckBox¿¡¼­ ¼±ÅÃÇÒ¼ö ÀÖ´Â °¹¼ö¸¦ Á¦ÇÑ.
// OnClick ¿¡ °É¾î¼­ »ç¿ë.
// sObj : checkbox
// max    : ÃÖ´ë ¼±ÅÃÇÒ¼ö ÀÖ´Â °¹¼ö
// idx    : index
// <input type=checkbox name=C value='1' onClick="javascript:limitedCheckBox(C, 1, 0);">
// <input type=checkbox name=C value='2' onClick="javascript:limitedCheckBox(C, 1, 1);">
// <input type=checkbox name=C value='3' onClick="javascript:limitedCheckBox(C, 1, 2);">
function limitedCheckBox(sObj, max, idx)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  if (idx==null || idx<0 || idx>=sObj.length) return;

  var i,j;
  for (j=0,i=0;i<sObj.length;i++)
  {
    if (sObj[i].checked==true)
      j++;
  }
  if (j>max) sObj[idx].checked=false;
}

// RadioButton ÃÊ±âÈ­ (¾Æ¹«°Íµµ ¼±ÅÃµÇÁö ¾ÊÀº »óÅÂ·Î)
function clearRadioButton(sObj)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  clearCheckBox(sObj);
}

// RadioButton ¼±ÅÃ
// sObj : RadioButton
// val    : ¼±ÅÃÇÒ ¹öÆ°ÀÇ value
function setRadioButtonVal(sObj, val)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  setCheckBoxVal(sObj, val);
}

// RadioButton ¼±ÅÃ
// sObj : RadioButton
// idx  : ¼±ÅÃÇÒ ¹öÆ°ÀÇ Index
function setRadioButtonVal(sObj, idx)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  setCheckBoxIdx(sObj, idx);
}

function getRadioButtonVal(sObj)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  return getCheckBoxVal(sObj);
}

function getRadioButtonIdx(sObj)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  return getCheckBoxIdx(sObj);
}

// nameÀ¸·Î Anchor <A tag> °´Ã¼ Ã£±â.
// anchors array´Â name index·Î °Ë»öÀÌ ¾ÈµÇ´õ±º¿ä.
function getAnchorByName(doc, name)
{
  if (doc==null || name==null) return null;

  var obj = doc.anchors;

  for (var i=0;i<obj.length;i++)
  {
    if (obj[i].name == name)
      return obj[i];
  }
  return null;
}

function getObjType( obj )
{
  if (!obj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  var typeArr = new Array (
    "text", "hidden", "textarea", "select-one",
    "select-multiple", "checkbox", "radio"
  );

  var i;

  for (i=0;i<typeArr.length;i++)
  {
    if ( obj.type && obj.type==typeArr[i] ) return typeArr[i];
    else if ( !obj.type && obj.length && obj[0].type ==typeArr[i] ) return typeArr[i];
  }

  return null;
}

// ÀÔ·Â ÇÊµåÀÇ °ª ÀÐ±â
function getValue ( obj )
{
  if (!obj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  switch(getObjType( obj ))
  {
    case "text":
    case "hidden":
    case "textarea":
      return getTextField(obj);
      break;
    case "select-one":
    case "select-multiple":
      return getComboBoxVal(obj);
      break;
    case "checkbox":
    case "radio":
      return getCheckBoxVal(obj);
      break;
    default: return "";
  }
}

// ÀÔ·Â ÇÊµåÀÇ °ª ¼³Á¤
function setValue ( obj , val)
{
  if (!obj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  switch(getObjType( obj ))
  {
    case "text":
    case "hidden":
    case "textarea":
      setTextField(obj , val);
      break;
    case "select-one":
    case "select-multiple":
      setComboBoxVal(obj , val);
      break;
    case "checkbox":
    case "radio":
      setCheckBoxVal(obj , val);
      break;
    default: return;
  }
}

function isMoveKey(code)
{
	//alert(code);
	var keyArr = new Array ( 8, 9, 16, 35, 36, 37,38,39,40, 45, 46,229 );
	for (i=0;i<keyArr.length;i++)
	{
		if (keyArr[i]==code) return true;
	}
	return false;
}
// num type ¿¡ ´ëÇÑ flag
// DEFAULT : SIGN
var ZEROFILL = 0x01;
var SIGN     = 0x02;
//

// string type¿¡ ´ëÇÑ flag
// default : ALPHA_NUM
var ONLY_KOREAN = 0x01;// »ç¿ë ¾ÈÇÔ T.T
var ONLY_ALPHA  = 0x02;
var ONLY_NUM    = 0x04;
var ALPHA_NUM   = 0x08;
var SPACE       = 0x16;
var SPACE_KOREAN  = 0x03;
var SPACE_ALPHA   = 0x05;
var SPACE_ALPHANUM  = 0x07;

//////////////////////////////////////////////////////////////////////
// focus¾ò°í³ª¼­ ±× Á÷ÈÄ¿¡ ºê¶ó¿ìÀú°¡ ÀÌ»óÇÏ°Ô ¹ÝÀÀ ÇÏ±â ¶§¹®¿¡
// »ç¿ëÇÏ´Â flag¿Í ÇÔ¼ö
var CORRECT_FLAG = false;

function ignoreKey()
{
	if (getKeyCode()==16)
	{
		return true;
	}
  if (CORRECT_FLAG==true && getKeyCode()!=9)
  {
  	CORRECT_FLAG=false;
  	return true;
  }
  if (getKeyCode()==9 && window.event.type=="keyup")
  {
  	CORRECT_FLAG=true;
  	return true;
  }

  return false;
}
//////////////////////////////////////////////////////////////////////


// ¹®ÀÚ¿­ÀÌ ÁÖ¾îÁø type°ú flag¿¡ ´ëÇØ Å¸´çÇÑÁö °Ë»ç
function checkTimeField(str,flag)
{
  var hh;
  var mi;

  if (!str)
  {
    alert("¹®ÀÚ¿­ÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.");
    return false;
  }

  if (!isNum(str)) return false;

  hh   = str.substring(0,2);
  mi   = str.substring(2,4);

  switch(str.length)
  {
    case 0: return;
    case 1: return (str>="0" && str<="2");
    case 2: return isValidHour(hh);
    case 3: mi += "0";  break;
    case 4: break;
    default: return false;
  }

  return isValidHour(hh)&&isValidMin(mi);
}

function checkTime(str,flag)
{
  var hh;
  var mi;

  if (!str)
  {
    alert("¹®ÀÚ¿­ÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.");
    return false;
  }

  if (!isNum(str)) return false;

  hh   = str.substring(0,2);
  mi   = str.substring(2,4);
  se   = str.substring(4,6);

  switch(str.length)
  {
    case 0: return;
    case 1: return (str>="0" && str<="2");
    case 2: return isValidHour(hh);
    case 3: mi += "0";
    case 4: return isValidHour(hh)&&isValidMin(mi);
    case 5: se +="0";
    case 6: return isValidHour(hh)&&isValidMin(mi)&&isValidSecond(se); break;
    default: return false;
  }
}

function correctTime(sObj,flag)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  if (ignoreKey()) return false;

	if (getKeyCode()==8) return;

	if (!sObj || getObjType(sObj)!="text")
	{
		alert("¿Ã¹Ù¸¥ Text Field°¡ ¾Æ´Õ´Ï´Ù.");
		return;
	}
	if (!flag) flag=null;

	var str = trimAllChar(getValue(sObj)).substring(0,6);
	var i;

	for (i=str.length;i>0;i--)
	{
		if (checkTime(str.substring(0,i),flag)) break;
	}

	str = setSeparator(str.substring(0,i), true, 2,":",2,":");
	setValue(sObj, str);
	sObj.focus();

}

function correctTimeField(sObj,flag)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  if (ignoreKey()) return false;

	if (getKeyCode()==8) return;

	if (!sObj || getObjType(sObj)!="text")
	{
		alert("¿Ã¹Ù¸¥ Text Field°¡ ¾Æ´Õ´Ï´Ù.");
		return;
	}
	if (!flag) flag=null;

	var str = trimAllChar(getValue(sObj)).substring(0,4);
	var i;

	for (i=str.length;i>0;i--)
	{
		if (checkTimeField(str.substring(0,i),flag)) break;
	}

	str = setSeparator(str.substring(0,i), true, 2,":");
	setValue(sObj, str);
	sObj.focus();

}
// ¹®ÀÚ¿­ÀÌ ÁÖ¾îÁø type°ú flag¿¡ ´ëÇØ Å¸´çÇÑÁö °Ë»ç
function checkDateField(str,flag)
{
  var yyyy;
  var mm;
  var dd;

  if (!str)
  {
    alert("¹®ÀÚ¿­ÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.");
    return false;
  }

  if (!isNum(str)) return false;

  yyyy = str.substring(0,4);
  mm   = str.substring(4,6);
  dd   = str.substring(6,8);
  switch(str.length)
  {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4: return true;
    case 5: return (str.substring(4,5)=="0" || str.substring(4,5)=="1");
    case 6: dd = "01";                 break;
    case 7: dd += (dd=="0")? "1":"0";  break;
    case 8: break;
    default: return false;
  }
  return isValidDate(yyyy,mm,dd);
}


function correctDateField(sObj , sepChar ,flag)
{

  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return false;
  }

  // ÀÍ½ºÇÃ·Î·¯°¡ ÀÌ»óÇÏ°Ô µ¿ÀÛÇØ¼­ Èæ.. ÀÌ·¸°Ô ¹Ù²ß´Ï´Ù.
  if (ignoreKey()) return false;
  ///////////////////////////////////////////////////////

	if (getKeyCode()==8) return true;
	if (getKeyCode()==9) return true;
	if (getKeyCode()==37) return true;
	if (getKeyCode()==39) return true;
	if (getKeyCode()==46) return true;

	if (!sObj || getObjType(sObj)!="text")
	{
		alert("¿Ã¹Ù¸¥ Text Field°¡ ¾Æ´Õ´Ï´Ù.");
		return false;
	}

	if (sepChar == null || sepChar == "" ) sepChar = "/";

	if (!flag) flag=null;

	var str = trimAllChar(getValue(sObj)).substring(0,8);
	var i;

	for (i=str.length;i>0;i--)
	{
		if (checkDateField(str.substring(0,i),flag)) break;
	}


  if(str.length == 6) /////////// ¿ùº°·Î Á¶È¸½Ã¿¡ µÚ¿¡ "-" °¡ ºÙ´Â°ÍÀ» ¹æÁö
  {
  		str = setSeparator(str.substring(0,i), true, 4,sepChar);
    	setValue(sObj, str);
	    sObj.focus();
	}
	else
	{
		str = setSeparator(str.substring(0,i), true, 4,sepChar,2,sepChar);
	  setValue(sObj, str);
	  sObj.focus();
	}
	return true;
}

function correctMDayField(sObj,flag)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  // ÀÍ½ºÇÃ·Î·¯°¡ ÀÌ»óÇÏ°Ô µ¿ÀÛÇØ¼­ Èæ.. ÀÌ·¸°Ô ¹Ù²ß´Ï´Ù.
  if (ignoreKey()) return false;
  ///////////////////////////////////////////////////////

	if (getKeyCode()==8) return true;
	if (getKeyCode()==9) return true;
	if (getKeyCode()==37) return true;
	if (getKeyCode()==39) return true;
	if (getKeyCode()==46) return true;

	if (!sObj || getObjType(sObj)!="text")
	{
		alert("¿Ã¹Ù¸¥ Text Field°¡ ¾Æ´Õ´Ï´Ù.");
		return false;
	}
	if (!flag) flag=null;

	var str = trimAllChar(getValue(sObj)).substring(0,4);
	var i;

	for (i=str.length;i>0;i--)
	{
		if (checkDateField(str.substring(0,i),flag)) break;
	}
    
	str = setSeparator(str.substring(0,i), true, 2,"/");
    setValue(sObj, str);
    sObj.focus();

	return true;
}

function correctTeleField(sObj,flag)
{
	var chkDigit = "0123456789";
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù.");
    return;
  }

  // ÀÍ½ºÇÃ·Î·¯°¡ ÀÌ»óÇÏ°Ô µ¿ÀÛÇØ¼­ Èæ.. ÀÌ·¸°Ô ¹Ù²ß´Ï´Ù.
  if (ignoreKey()) return false;
  ///////////////////////////////////////////////////////

	if (getKeyCode()==8) return true;
	if (getKeyCode()==9) return true;
	if (getKeyCode()==37) return true;
	if (getKeyCode()==39) return true;
	if (getKeyCode()==46) return true;

	if (!sObj || getObjType(sObj)!="text")
	{
		alert("¿Ã¹Ù¸¥ Text Field°¡ ¾Æ´Õ´Ï´Ù.");
		return false;
	}
	if (!flag) flag=null;

	var str = trimAllChar(sObj.value);


	if(str.length >= 11) /////////// ¿ùº°·Î Á¶È¸½Ã¿¡ µÚ¿¡ "-" °¡ ºÙ´Â°ÍÀ» ¹æÁö
	{
		var end = str.length;
  		var rtnStr = str.substring(end - 4 , end);
		rtnStr = "-" + rtnStr;
		end = end - 4
  		rtnStr = str.substring(end - 4 , end) + rtnStr;
		rtnStr = "-" + rtnStr;
		end = end - 4
  		rtnStr = str.substring(end - 3, end) + rtnStr;
	   	setValue(sObj, rtnStr);
	    sObj.focus();
	}
	else if( str.length < 11 && str.length >= 8)
	{
		var end = str.length;
  		var rtnStr = str.substring(end - 4 , end);
		rtnStr = "-" + rtnStr;
		end = end - 4
  		rtnStr = str.substring(end -3 , end) + rtnStr;
		rtnStr = "-" + rtnStr;
		end = end - 3
  		rtnStr = str.substring(0 , end) + rtnStr;
	   	setValue(sObj, rtnStr);
	    sObj.focus();
	}
	else if( str.length < 8 && str.length >= 5)
	{

		var end = str.length;
  		var rtnStr = str.substring(end - 4 , end);
		rtnStr = "-" + rtnStr;
		end = end - 4;
  		rtnStr = str.substring(0 , end) + rtnStr;
		setValue(sObj, rtnStr);
	    sObj.focus();
	} 
	else if( str.length < 5 )
	{
		var end = str.length;
  		var rtnStr = str.substring(0 , end);
	   	setValue(sObj, rtnStr);
	    sObj.focus();
	}

	
	return true;
}



function checkNumField(str, flag, n,f )
{
  if (!str)
  {
    alert("¹®ÀÚ¿­ÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.");
    return false;
  }
  if (!n||n<0)
  {
    alert("ÀÎ¼ö ºÎÁ·.");
    return false;
  }
  if (!f || f<0) f=0;

  var num = Number(str);
  if (isNaN(num)) return false;

  if (str.charAt(0)=="-") str=str.substring(1);

 	var idx = str.indexOf(".");

 	if (idx>0)
 	{
 		var no1 = str.substring(0,idx);
 		var no2 = str.substring(idx+1);

 		if (no1.length>n || no2.length>f) return false;
 	}
  else if (str.length>n) return false;

  return true;
}

//flag -> ºÎÈ£¿Í ZEROÇÃ·¡±×
// 0 : sign Çã¿ë¾ÈÇÔ , ¿ÞÂÊ °ª¾ø´Â ZERO Çã¿ë¾ÈÇÔ.
// 1 : sign Çã¿ë¾ÈÇÔ , ¿ÞÂÊ °ª¾ø´Â ZERO Çã¿ëÇÔ.
// 2 : sign Çã¿ë ÇÔ   , ¿ÞÂÊ °ª¾ø´Â ZERO Çã¿ë ¾ÈÇÔ.
// 3 : sign Çã¿ë ÇÔ   , ¿ÞÂÊ °ª¾ø´Â ZERO Çã¿ë ÇÔ.
//n - > ºÎÈ£¿Í ¼Ò¼ýÁ¡À» »« Á¤¼öºÎºÐ ÀÚ¸´¼ö
//f - > ¼Ò¼ýÁ¡À» »« ½Ç¼öºÎºÐ ÀÚ¸´¼ö
//ÁÖ¼® : ¿øÀÎÈ¯

function correctNumField(sObj,flag, n,f) {
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  // ÀÍ½ºÇÃ·Î·¯°¡ ÀÌ»óÇÏ°Ô µ¿ÀÛÇØ¼­ Èæ.. ÀÌ·¸°Ô ¹Ù²ß´Ï´Ù.
  if (ignoreKey()) return false;
  ///////////////////////////////////////////////////////

    if (getKeyCode()==8) return;	
	if (getKeyCode()==9) return;
	if (getKeyCode()==37) return;
	if (getKeyCode()==39) return;
	if (getKeyCode()==46) return;

	if (!sObj || getObjType(sObj)!="text")
	{
		alert("¿Ã¹Ù¸¥ Text Field°¡ ¾Æ´Õ´Ï´Ù.");
		return;
	}
	if (!flag && flag!=0) flag=0;
  if (!n)
  {
  	alert("ÀÚ¸´¼ö¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù.");
  	return;
  }
	if (!f) f=0;

	var str = getValue(sObj);
	var sign= "";
	var idx;
	var no1, no2;

	if (flag&SIGN && str.charAt(0)=='-') sign='-';

  if ( f>0 && (idx=str.indexOf("."))>0 )
  {
  	no1 = str.substring(0,idx);
  	no2 = str.substring(idx+1);
  	if ( (idx=no2.indexOf("."))>0 )
  	  no2 = no2.substring(0,idx);
  	str = getFormattedInteger(trimAllChar(no1).substring(0,n))+"."+trimAllChar(no2).substring(0,f);
  }
	else
	  str = getFormattedInteger(trimAllChar(str).substring(0,n));

  if (!(flag&ZEROFILL)) str=lTrim(str, '0');

	setValue(sObj, sign+str);
	sObj.focus();
}

function checkStringField(str,flag)
{
  if (!str)
  {
    alert("¹®ÀÚ¿­ÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.");
    return false;
  }
  if (!flag) flag=0;

  switch( flag )
  {
  	case ONLY_KOREAN:
  	  return isKorean(str);
  	case ONLY_ALPHA:
  	  return isAlpha(str);
  	case ONLY_NUM:
  	  return isNum(str);
  	case ALPHA_NUM:
  	  return isAlphaNum(str);
  	case SPACE:
  	  return isSpace(str);
	case SPACE_KOREAN:
	  return isSpaceKorean(str);
	case SPACE_ALPHA:
	  return isSpaceAlpha(str);
	case SPACE_ALPHANUM:
	  return isSpaceAlphaNum(str);
  	default:
  	  return true;
  }
}

function correctStringField(sObj,flag, maxlen, frm)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  // ÀÍ½ºÇÃ·Î·¯°¡ ÀÌ»óÇÏ°Ô µ¿ÀÛÇØ¼­ Èæ.. ÀÌ·¸°Ô ¹Ù²ß´Ï´Ù.
  if (ignoreKey()) return false;
  ///////////////////////////////////////////////////////

	if (getKeyCode()==8) return;

	if (getKeyCode()==27)
	{
	  sObj.form.onReset=false;
	  //alert("correctStringField");
	  return false;
	}

	if (!sObj || getObjType(sObj)!="text")
	{
		alert("¿Ã¹Ù¸¥ Text Field°¡ ¾Æ´Õ´Ï´Ù.");
		return;
	}
	if (!flag) flag=null;

	var str = getValue(sObj);
	var i;

	for (i=str.length;i>0;i--)
	{
		if ( checkStringField(str.substring(0,i),flag)  ) break;
	}

	//if (!(!maxlen)) { str = str.substring(0,maxlen); alert("!!maxlen debug : correctStr : maxlen:"+maxlen+"str : " + str);}
	if (maxlen) { str = str.substring(0,maxlen);}

	str = str.substring(0,i);

	setValue(sObj, str);
	//´ÙÀ½ Field·Î Jump
	if(maxlen&&maxlen==str.length) mvFocus(frm);
}



function checkFormattedStringField(str)
{
  if (!str)
  {
    alert("¹®ÀÚ¿­ÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.");
    return false;
  }

  return isAlphaNum(str);
}

function correctFormattedStringField(sObj, formatStr)
{
  if (!sObj)
  {
    alert("sObj°¡ nullÀÔ´Ï´Ù. T.T");
    return;
  }

  // ÀÍ½ºÇÃ·Î·¯°¡ ÀÌ»óÇÏ°Ô µ¿ÀÛÇØ¼­ Èæ.. ÀÌ·¸°Ô ¹Ù²ß´Ï´Ù.
  if (ignoreKey()) return false;
  ///////////////////////////////////////////////////////


	if (getKeyCode()==8) return;

	if (!sObj || getObjType(sObj)!="text")
	{
		alert("¿Ã¹Ù¸¥ Text Field°¡ ¾Æ´Õ´Ï´Ù.");
		return;
	}

	var str = trimNotAlphaNum( getValue(sObj) );
	var i;

	for (i=str.length;i>0;i--)
	{
		if ( checkFormattedStringField(str.substring(0,i))  ) break;
	}

	str = getFormattedString(str.substring(0,i),formatStr);

	setValue(sObj, str);
	sObj.focus();
}


//////////////////////////////////////////////////////////////////////////
//
// ¿¡·¯¸Þ½ÃÁö Ç¥Çö¹× Æ÷Ä¿½º ÀÌµ¿µî..

function errMsg(obj, str)
{
  if (str)
    alert(str);

	if (obj&&obj.form)
	{
		if (obj.select) obj.select();
		if (obj.focus ) obj.focus();
  }
}

function checkReset()
{
	  alert("checkReset");

	if (getKeyCode()==27)
	  return false;
	alert(getKeyCode())
	return true;
}


////////////////////////////////////////////////////////////////
//´ë¹®ÀÚ·Î µ¹·ÁÁØ´Ù.
//
function toUpper(sObj)
{

  if (!sObj || getObjType(sObj)!="text")
  {
    alert("¿Ã¹Ù¸¥ Text Field°¡ ¾Æ´Õ´Ï´Ù.");
    return;
  }

  var str = getValue(sObj);
  var result = str.toUpperCase();

  setValue(sObj,result);
}



