/**
 * OK
 * 数字类型的js函数，
 * 需要载入string.js
 */

var NumberUtil = {
  /**
   * 判断是否是数字
   * input:输入字符
   * 
   */
  isNumber: function (input) {
    return (!StringUtil.isEmpty(input) && !isNaN(input));
  },

  /**
   * 判断是否为整数
   * input:输入字符
   * 
   */
  isInt: function (input) {
    if (!NumberUtil.isNumber(input)) return false;
    return (!isNaN(parseInt(input, 10)));
  },

  /**
   * 转换Int型
   * input:输入字符
   * 
   */
  toInt: function (input) {
    return NumberUtil.isInt(input) ? parseInt(input, 10) : 0;
  },

  /**
   * 判断是否为浮点数
   * input:输入字符
   * 
   */
  isDouble: function (input) {
    if (!NumberUtil.isNumber(input)) return false;
    return (!isNaN(parseFloat(input, 10)));
  },

  /**
   * 转换double型
   * input:输入字符
   * 
   */
  toDouble: function (input) {
    return NumberUtil.isDouble(input) ? parseFloat(input, 10) : 0;
  },


  /**
   * 格式化金额，
   * 格式￥12,345,678.00###
   * mark  标识符（￥）
   * money 金额参数
   * digit 小数位数, 默认值为2(可选)
   * 用法：formatMoney("",123456789) 小数位数为2
   *      formatMoney("",123456789, 4) 小数位数为4
   * 
   */
  format: function (_money, mark, digit) {
    if (mark == null) mark = "";
    if (!NumberUtil.isNumber(_money)) {
      return mark + "0.00";
    }

    var pointLength = 2
    if ((digit != null) && (NumberUtil.isNumber(digit))) {
      pointLength = parseInt(digit);
    }

    var money = parseFloat(_money, 10)
    var minus = "";
    if (money < 0) {
      minus = "-";
    }
    money = Math.abs(money);
    money = money.toFixed(pointLength);

    var beforePoint;
    var afterPoint;
    if (pointLength > 0) {
      beforePoint = money.substring(0, money.length - (pointLength + 1));
      afterPoint = money.substring(money.length - (pointLength + 1), money.length);
    }
    else {
      beforePoint = money.substring(0, money.length);
      afterPoint = "";
    }
    var tmp = "";
    var returnStr = "";
    while (beforePoint.length >= 4) {
      tmp = "," + beforePoint.substring(beforePoint.length - 3, beforePoint.length);
      returnStr = tmp + returnStr;
      beforePoint = beforePoint.substring(0, beforePoint.length - 3);
    }
    returnStr = minus + mark + beforePoint + returnStr + afterPoint;
    return returnStr;
  }
}


