//判断字符串是否s结尾
String.prototype.endsWith = function(s){
	if(this.length >= s.length){
		return this.substring(this.length - s.length, this.length) == s;
	}
	return false;
};

//判断字符串是否s开始
String.prototype.startsWith = function(s){
	if(this.length >= s.length){
		return this.substring(0, s.length) == s;
	}
	return false;
};

//去掉字符串左边的空格
String.prototype.ltrim = function(){
	return this.replace(/^\s*/,"");
};
//去掉字符串右边的空格
String.prototype.rtrim = function(){
	return this.replace(/\s*$/,"");
};
//去掉字符串左右2边的空格
String.prototype.trim = function(){
	return this.ltrim().rtrim();
};
String.prototype.trim = function(){
	return this.ltrim().rtrim();
};
/*
String.prototype.trim = function(){
	var st = 0;
	var len = this.length;
	var off = this.length;
	while(st < off && this.charAt(st) == ' '){
		st ++ ;
	}
	while(st < len && this.charAt(len) == ' '){
		len -- ;
	}
	return this.substring(st, len);
};
*/

//字符串的长度
String.prototype.len = function(){
	return this.replace(/[^\x00-\xff]/g, "aa").length;
};
//判断字符串是否为日期格式（yyyy-MM-dd）
String.prototype.isDate = function(){
	var m = this.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})/);
	if(null == m)
		return false;
	var d = new Date(m[1], m[3], m[4]);
	return ((d.getYear() == m[1]) && (d.getMonth() == m[3]) && (d.getDate() == m[4]));
};
//判断字符串是否为日期格式（yyyy-MM-dd hh:mm:ss）
String.prototype.isDateTime = function(){
	var m = this.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/);
	if(null == m)
		return false;
	var d = new Date(m[1], m[3]-1, m[4], m[5], m[6], m[7]);
	return ((d.getFullYear() == m[1]) && (d.getMonth()+1 == m[3]) && (d.getDate() == m[4]) && (d.getHours() == m[5]) && (d.getMinutes() == m[6]) && (d.getSeconds() == m[7]));
};
/**
 * 判断字符串是否为小数
 */
String.prototype.isNumeric = function(){
	return (/^(-){0,1}(\d)*(.)(\d)*$/.test(this));
};
/**
 * 判断字符串是否为整数
 */
String.prototype.isInteger = function(){
	return (/^(-){0,1}(\d)*$/.test(this));
};
/**
 * 判断字符串中是否包含2个字母（定义操作员用到）
 */
String.prototype.isContain2Char =function(){
	  var re = /[A-Za-z]+/g;
          var arr,str="";
	  while ((arr = re.exec(this)) != null){
            str+=arr;
          }
 return (str.length>1);
};
/**
 * 格式或金钱格式 （例如 1234。4 --> ￥1,234.5）
 */
String.prototype.formatMoney = function (){
	if(!/^(\+|-)?(\d+)(\.\d+)?$/.test(this)){
		return '￥0.00';
	}
	var a = RegExp.$1, b = RegExp.$2, c = RegExp.$3;
	var re = new RegExp().compile("(\\d)(\\d{3})(,|$)");
	while(re.test(b))
		b = b.replace(re, "$1,$2$3");
	return ('￥' + a + '' + b + '' + c);
}

//onkeypress 输入整数
function number(){
  var e = window.event.keyCode;
  if(48<= e && e <= 57){
    event.returnValue = true;
  }else{
    event.returnValue = false;
  }
}

//onkeypress 输入小数
function money(){
  var e = window.event.keyCode;
  if(48<= e && e <= 57 || e == 46){
    event.returnValue = true;
  }else{
    event.returnValue = false;
  }
}

//控制展示图片大小
function changeImg(mypic,showWidth,showHeight){
    var xw=showWidth;
    var xl=showHeight;

    var width = mypic.width;
    var height = mypic.height;
    var bili = width/height;

    var A=xw/width;
    var B=xl/height;

    if(!(A>1&&B>1))
    {
        if(A<B)
        {
            mypic.width=xw;
            mypic.height=xw/bili;
        }
        if(A>B)
        {
            mypic.width=xl*bili;
            mypic.height=xl;
        }
    }
}

/*通过id获取对象*/
function G(obj){if(document.getElementById){return eval('document.getElementById("'+obj+'")')}else if(document.layers){return eval("document.layers['"+obj+"']")}else{return eval('document.all.'+obj)}}

//这个可以验证15位和18位的身份证，并且包含生日和校验位的验证。
function isIdCardNo(num) {
  num = num.toUpperCase();
  //身份证号码为15位或者18位，15位时全为数字，18位前17位为数字，最后一位是校验位，可能为数字或字符X。
  if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))){
    alert('输入的身份证号长度不对，或者号码不符合规定！\n15位号码应全为数字，18位号码末位可以为数字或X。');
    return false;
  }
  //校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。
  //下面分别分析出生日期和校验位
  var len, re;
  len = num.length;
  if (len == 15) {
    re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
    var arrSplit = num.match(re);
    //检查生日日期是否正确
    var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
    var bGoodDay;
    bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
    if (!bGoodDay) {
      alert('输入的身份证号里出生日期不对！');
      return false;
    } else {
      //将15位身份证转成18位
      //校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。
      var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
      var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
      var nTemp = 0, i;
      num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
      for(i = 0; i < 17; i ++){
        nTemp += num.substr(i, 1) * arrInt[i];
      }
      num += arrCh[nTemp % 11];
      return num;
    }
  }
  if (len == 18) {
    re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
    var arrSplit = num.match(re);
    //检查生日日期是否正确
    var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
    var bGoodDay;
    bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
    if (!bGoodDay) {
      alert(dtmBirth.getYear());
      alert(arrSplit[2]);
      alert('输入的身份证号里出生日期不对！');
      return false;
    }
  } else {
    //检验18位身份证的校验码是否正确。
    //校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。
    var valnum;
    var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
    var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
    var nTemp = 0, i;
    for(i = 0; i < 17; i ++) {
      nTemp += num.substr(i, 1) * arrInt[i];
      valnum = arrCh[nTemp % 11];
      if (valnum != num.substr(17, 1)) {
        alert('18位身份证的校验码不正确！应该为：' + valnum);
        return false;
      }
      return num;
    }
  }
  return true;
}

