/**
 * OK
 * 字符串类
 */
var StringUtil = {
  /**
   * 去掉字符串头和尾的给定字符
   * input:输入字符串
   * removeChar:要去掉的字符
   * 
   */
  removeHeadTrailChar: function (input, removeChar) {
    var returnString = input;
    if (removeChar.length) {
      while ('' + returnString.charAt(0) == removeChar) {
        returnString = returnString.substring(1, returnString.length);
      }
      while ('' + returnString.charAt(returnString.length - 1) == removeChar) {
        returnString = returnString.substring(0, returnString.length - 1);
      }
    }
    return returnString;
  },

  /**
   * 去字符串头尾空格
   * input:输入字符串
   * 
   */
  trim: function (input) {
    return StringUtil.removeHeadTrailChar(input, ' ');
  },

  /**
   * 判断字符是否为空
   * input:输入字符串
   * 
   */
  isEmpty: function (input) {
    return (input == null || input.length == 0);
  },

  /**
   * 判断输入字符串是否是指定的email
   * input:输入字符串
   * 
   */
  isEmail:function(input) {
    var regu = "^(([0-9a-zA-Z]+)|([0-9a-zA-Z]+[_.0-9a-zA-Z-]*[0-9a-zA-Z]+))@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2}|net|NET|com|COM|gov|GOV|mil|MIL|org|ORG|edu|EDU|int|INT)"
    var re = new RegExp(regu);
    return input.search(re) != -1;
  } ,

  getPrimaryKey:function() {
    var now = new Date();
    var year = now.getFullYear();
    var month = now.getMonth() + 1;
    var date = now.getDate();
    var hour = now.getHours();
    var minute = now.getMinutes();
    var second = now.getSeconds();
    var millisecond = now.getMilliseconds();

    var key = "";
    key = key.concat(year);
    key = key.concat(month < 10 ? '0' + month : month);
    key = key.concat(date < 10 ? '0' + date : date);
    key = key.concat(hour < 10 ? '0' + hour : hour);
    key = key.concat(minute < 10 ? '0' + minute : minute);
    key = key.concat(second < 10 ? '0' + second : second);
    if (millisecond < 10) key = key.concat('00' + millisecond);
    else if (millisecond < 100) key = key.concat('0' + millisecond);
    else key = key.concat(millisecond);
    key = key.concat(StringUtil.randomChar(13));
    return key;
  },



  /**
   * 获得随机数字符串
   * len:随机字符串的长度
   */
  randomNum: function (len) {
    if (len == null) {
      len = 10;
    }
    var randomNumber = "";
    for (var i = 0; i < len; i++) {
      randomNumber += Math.round((Math.random() * 9));
    }
    return randomNumber;
  },

  /**
   * 获得随机字符串 范围 0-9,a-z,A-Z
   * len:随机字符串的长度
   */
  randomChar: function (len) {
    if (len == null) len = 10;
    var charArray = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
        "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
        "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");

    var randomString = "";
    for (var i = 0; i < len; i++) {
      randomString += charArray[Math.round((Math.random() * 61))];
    }
    charArray=null;
    return randomString;
  },


  /**
   * 返回参数的URI编码
   * input:输入字符串
   */
  convertURIEncode: function (input) {
    return encodeURIComponent(input);
  },

  /**
   * utf-8转gb2312函数作用于javascript
   * key:输入字符串
   */
  gb2312: function (key){
		var r = "";
		for(var i=0;i<key.length;i++){
			var t = key.charCodeAt(i);
			if(t>=0x4e00 || t==0x300A || t==0x300B){
				try{
					execScript("ascCode=hex(asc(\""+key.charAt(i)+"\"))", "vbscript"); r += ascCode.replace(/(.{2})/g, "%$1"); 
				}catch(e){}
			}else{
				r += escape(key.charAt(i))
			}
		}
		return r;
  },


  /**
   * 转换参数对象为参数字符串参数
   * parameterOption 参数对象 如 {"name":"张三","sex":"男"}
   * 返回 name=%E5%BC%A0%E4%B8%89&sex=%E7%94%B7
   */
  toQueryString:function(parameterOption) {
    var hash = $H(parameterOption);
    return hash.toQueryString();
  },

  /**
   * 获得字符串的长度,英文字母算1个长度, 汉字算2个长度
   * @param input
   */
  getLength :function(input) {
    var len = 0;
    for (var i = 0; i < input.length; i++) {
      if (input.charCodeAt(i) > 127 || input.charCodeAt(i) == 94) {
        len += 2;
      }
      else {
        len ++;
      }
    }
	return len;
  },
  
  getLength2 :function(input) {
    var len = 0;
    for (var i = 0; i < input.length; i++) {
      if (input.charCodeAt(i) > 127 || input.charCodeAt(i) == 94) {
        len += 2;
      }
      else {
        len ++;
      }
    }
    if(len<1024) return len+"字节";
    if(len<1024*1024){
		return NumberUtil.format(len/1024,"")+"KB";
    }
	return NumberUtil.format(len/(1024*1024),"")+"MB";
  },

  substring :function(str, len, elide) {
    if(str==null)return "";
    var strLen = StringUtil.getLength(str);
    var elideLen = (elide.length==0)? 0: StringUtil.getLength(elide);

	if (len >= strLen || len < 1) {
		return str;
	}

	if (len - elideLen > 0) {
		len = len - elideLen;
	}
    var tmpLen=0;
    for (var i = 0; i < str.length; i++) {
      if (str.charCodeAt(i) > 127 || str.charCodeAt(i) == 94) {
        tmpLen += 2;
      }
      else {
        tmpLen ++;
      }
      if(len==tmpLen)return str.substr(0, i+1) + elide;
      else if(len<tmpLen){
      	return str.substr(0, i) + elide;
      }
      
    }
    
    return str;
  }
}

