/**
 * Util
 * 
 * @author jonathan@neowiz.com
 */
if("undefined" == typeof Util)
{
  Util = {
      strlen: function(str){
          var len = 0;
          for (var i = 0; i < str.length; i++) {
            if (str.charCodeAt(i) > 128) 
              len += 2;
            else 
              len++;
          }          
          return len;
      },
			strlenCut : function (str,cutlen,tail)
			{
				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 ++;
			    }
			  }
				
				if(typeof(tail) != 'undefined')
				{
					if(str.length > cutlen)
						cutstr = cutstr + tail;	
				}
				
			  return cutstr;
			},
      allowStr : function(kind,str){
        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 < str.length; i++)
        {
          if( chkstr.indexOf(str.charAt(i)) < 0 )
          {
            return false;
            break;
          }
        }
        return true; // 허용해도 좋다.
      },
      utilTrimStr : function (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);
        }

      },
      isNumber : function (input)
      {
         var chars = "0123456789";
            return Util.containsCharsOnly(input,chars);
      },
      containsCharsOnly : function (input,chars)
      {
         for (var index = 0; index < input.length; index++)
         {
            if (chars.indexOf(input.charAt(index)) == -1)
                return false;
         }
         return true;
      },
      urlencode : function (url)
      {
        var url = escape(url.replace(/ /g, "+"));
        return url.replace(/\//g, "%2F");
      },
      urldecode : function (url)
      {
        var url = unescape(url.replace(/\+/g, " "));
        return url.replace(/%2F/g, "\/");
      },
			rand : function(min , max)
			{
			 	return Math.floor(Math.random() * (max - min + 1)) + min;
			},
      numberFormat : function (num)
      {
        if (!num) return 0;

        var retNum = "";
        var oNum = new Number(num);
        var strNum = oNum.toString();
        for (var i=strNum.length; i>0; i=i-3)
        {
          if (i >= 3)
            retNum = strNum.substr(i-3,3) + "," + retNum;
          else
            retNum = strNum.substr(0,i) + "," + retNum;
        }
        retNum = retNum.substr(0,retNum.length-1);
        return retNum;
      }
  }
}
