function util_trim_str_simple(str)
{
  return str.replace( /^\s*/,"").replace( /\s*$/,"");
}
function util_gage_str (str)
{
  for (i=0, width=0; i < str.length; i++) {
    if (str.charAt(i) == 'W')
      width += 1.7;
    else if (str.charAt(i) == '.')
      width += 0.46;
    else if (str.charAt(i) == ' ')
      width += 0.46;
    else if (str.charCodeAt(i) > 128)
      width += 1.8;
    else
      width += 1.0;
  }
  return width;
}
function util_cut_str (str, len, tail)
{
  for (var i=0, width=0; width < len && i < str.length; i++) {
    if (str.charAt(i) == 'W')
      width += 1.7;
    else if (str.charAt(i) == '.')
      width += 0.46;
    else if (str.charAt(i) == ' ')
      width += 0.46;
    else if (str.charCodeAt(i) > 128)
      width += 1.8;
    else
      width += 1.0;
  }
  if (i < str.length)
    return str.substr(0, i - tail.length) + tail;
  else
    return str;
}
function calc_strlen (str)
{
  var len = 0;

  for (var i=0; i < str.length; i++) {
    var n = str.charCodeAt(i);
    if ((n >= 0)  && (n < 256))
      len ++;
    else
      len += 2;
  }
  return len;
}
function util_strlen (str)
{
  var len = 0;

  for (var i=0; i < str.length; i++) {
    if (str.charCodeAt(i) > 128)
      len += 2;
    else
      len ++;
  }

  return len;
}
/* by serice */
function util_strlen_cut (str, cutlen)
{
  var len = 0;
  var cutstr = "";

  for (var i=0; len < cutlen; i++) {
    if (str.charCodeAt(i) > 128) {
      cutstr += str.charAt(i);
      len += 2;
    } else {
      cutstr += str.charAt(i);
      len ++;
    }
  }
  return cutstr;
}

function util_get_realidx(mystr, rstrlen)
{
  var r_len = 0;

  for(i=0; i<mystr.length; i++)
  {
    if( mystr.charCodeAt(i) <= 127 )
      r_len = r_len + 1;
    else
      r_len = r_len + 2;

    if( r_len == rstrlen )
      return i+1;
    else if( r_len > rstrlen )
      return i;
  }

  return i;
}

function util_check_allowstr(kind, instr)
{
  var chkstr = "";
    
  if( kind.indexOf("ALPHABET") >= 0 ) // ¾ËÆÄºªÀÎÁö Ã¼Å©
    chkstr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  else if( kind.indexOf("ALPHANUMERIC") >= 0 ) // ¾ËÆÄºª+¼ýÀÚ Ã¼Å©
    chkstr = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  else if( kind.indexOf("PHONE") >= 0 ) // ¼ýÀÚ + '-' Ã¼Å©
    chkstr = "0123456789-";
  else if( kind.indexOf("NUMERIC") >= 0 ) // ¼ýÀÚÀÎÁö Ã¼Å©
    chkstr = "0123456789";
  else
    return false;

  for(var i=0; i<instr.length; i++)
  {
    if( chkstr.indexOf(instr.charAt(i)) < 0 )
    {
      return false;
      break;
    }
  }
  return true; // Çã¿ëÇØµµ ÁÁ´Ù.
} 

function util_trim_str( str, trimtype ) 
{
	var start;
	var end;

	str = str.toString();
	var len = str.length;

  if( trimtype && trimtype == 'rtrim' )
  {
    start = 0;
  }
  else
  {
    for (start = 0; start < len; start ++)
    {
      if (str.charAt(start) != ' ')
        break;
    }
  }

	if (start == len)
		return "";

  if( trimtype && trimtype == 'ltrim' )
  {
	  return str.substring(start, len-1);
  }
  else
  {
    for (end = len - 1; end > start; end --)
    {
      if (str.charAt(end) != ' ')
        break;
    }
    end ++;

    return str.substring(start, end);
  }
}

function util_ltrim_str( str ) 
{
  return util_trim_str( str, 'ltrim' );
}

function util_rtrim_str( str ) 
{
  return util_trim_str( str, 'rtrim' );
}


//in_arrayµ¿ÀÛ
function util_in_array( str, arrvar )
{
  for (var i=0; i < arrvar.length; i++)
  {
    if (arrvar[i] == str)
      return true;
  }

  return false;
}

var engine_ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion())
// function 'by_pass' is needed by do_something_by_regExp
function _util_by_pass (str)
{
  return str;
}
// do someting with regular expression match result
// do func_inc with matched and do func_exc with unmatched
function util_do_something_by_regExp (str, regexp, func_inc, func_exc)
{
  var result	= "";
  var stpt	= 0;
  var resTag;
  if ('undefined' == typeof(func_inc) || !func_exc)
    func_exc = _util_by_pass;
  if ('undefined' == typeof(func_inc) || !func_inc)
    func_inc = _util_by_pass;
  while (resTag = regexp.exec(str)) {
    result += func_exc(str.substr(stpt, resTag.index - stpt));
    result += func_inc(str.substr(resTag.index, resTag.lastIndex - resTag.index));
    if (engine_ver < 5.5)
      str = str.substr(resTag.lastIndex);
    else
      stpt = resTag.lastIndex;
  }
  result += func_exc(str.substr(stpt));
  return result;
}
/**
* @brief text inputÀÇ ¹®ÀÚ¿­ÀÇ ±æÀÌ¸¦ ½Ç½Ã°£À¸·Î »Ñ·ÁÁÜ
* @param string id_input text inputÀÇ id
* @param string id_length ±æÀÌ¸¦ ³ÖÀ» elementÀÇ id
* @param string callback_name onkeyup ÀÌº¥Æ®¿Í onchange ÀÌº¥Æ®¿¡ ³Ö¾îÁÙ 
*                             callback ÇÔ¼öÀÇ ÀÌ¸§
*/
function syncStrLength(id_input,id_length,callback_name)
{
  funcStr = "oInput = document.getElementById('"+id_input+"');   \
             oLength = document.getElementById('"+id_length+"'); \
             oLength.innerHTML = util_strlen(oInput.value);";

  if(typeof(callback_name) != 'undefined')
  {
    funcStr = funcStr + callback_name + "();";
  }

  syncFunction = new Function(funcStr);
  oInput = document.getElementById(id_input);
  oInput.onkeyup = syncFunction;
  oInput.onchange = syncFunction;
  syncFunction();
}

// input ¾ÈÀÇ ½ºÆ®¸µ¿¡ charsÀÇ ¹®ÀÚ°¡ Æ÷ÇÔµÇ¾î ÀÖ´ÂÁö
function containsCharsOnly(input,chars) 
{
   for (var index = 0; index < input.length; index++) 
   {
      if (chars.indexOf(input.charAt(index)) == -1)
          return false;
   }
   return true;
}

function isNumber(input) 
{
   var chars = "0123456789";
      return containsCharsOnly(input,chars);
}
