﻿//检查mobileNo是否是移动手机号码
function isMobileNo( mobileNo ) {
  //11位数字，格式为13*********，第一个*为4－9之间的数字
  //var re = /^1[3,5][4-9][0-9]{8}$/;
  var re = /^13[4-9][0-9]{8}$|^15[0,1,2,7,8,9][0-9]{8}$|^18[7,8][0-9]{8}$/; //2009-03-11 wu修改
  var r = re.test( mobileNo );
  return r;

}

//检查cellNo是否是一个手机号码
function isCellNo( cellNo ) {
  //var re = /^1[3,5][0-9]{9}$/;  //这个正则表达式可以匹配所有的移动和联通手机号码
  var re = /^13[0-9]{9}$|^15[0-9]{9}$|^18[0,5,6,7,8,9][0-9]{8}$/; //2009-03-11 wu修改
  var r = re.test( cellNo );
  return r;

}

//检查cellNo是否是一个手机号码
function isCellNoNotLimitLength( cellNo ) {
  //var re = /^1[3,5][0-9]*$/;  //这个正则表达式可以匹配所有的移动和联通手机号码
  var re = /^13[0-9]{9}$|^15[0-9]{9}$|^18[0,5,6,7,8,9][0-9]{8}$/; //2009-03-11 wu修改
  var r = re.test( cellNo );
  return r;

}


//匹配所有的手机号码
function isPhoneNo( phoneNo ) {
  //var re = /^1[3,5][0-9]{9}$/;
  var re = /^13[0-9]{9}$|^15[0-9]{9}$|^18[0,5,6,7,8,9][0-9]{8}$/; //2009-03-11 wu修改
  var r = re.test( phoneNo );
  return r;
}

//删除一行的前后空格
function killspace( str ) {
  //删除前导空格
  var re = /^[ \t]*/;
  var r1 = str.replace( re, "" );
  //删除后继空格
  re = /[ \t]*$/;
  var r2 = r1.replace( re, "" );
  return r2;
}

//判断一行是否为空行
function isNullLine( str ) {
  if ( str == "" || killspace( str ) == "" )
    return true;
  return false;
}

//判断一个字符串是否全部由数字组成
function isDigit( str ) {
  var i;
  for ( i = 0; i < str.length ; i++ ) {
    if (! ( str.charAt( i ) >= '0' && str.charAt( i ) <= '9' ) )
      return false;
  }
  return true;
}

/* -- 计算两个字符(YYYY-MM-DD)的日期相隔天数 -- */
function Date_Compare(asStartDate,asEndDate){
	var miStart = Date.parse(asStartDate.replace(/\-/g, '/'));
	var miEnd = Date.parse(asEndDate.replace(/\-/g, '/'));
	return (miEnd-miStart)/(1000*24*3600);
}

//闰年判定
function isLeapYear(year) {
	if( ( year%4 == 0 && year%100 != 0 ) || ( year%400 == 0 ) )
		return true;
	return false;
}

/*-- 辅助函数，返回某年某月的天数-- */
function Date_getDay( aiYear, aiMonth ) {
	var loDay = [0,31,28,31,30,31,30,31,31,30,31,30,31];
	if ( isLeapYear( aiYear ) )
		loDay[2] = 29;
	return loDay[aiMonth];
}

//判断字符串是否是日期类型，格式为“yyyy-mm-dd”
function isDate( asDate ){
	var lsDate = asDate + "";
	var loDate = lsDate.split("-");
	if (loDate.length!=3)
		return false;
	var liYear = parseInt(loDate[0], 10);
	var liMonth = parseInt(loDate[1], 10);
	var liDay = parseInt(loDate[2], 10);
	if ( (loDate[0].length > 4 ) || (loDate[1].length>2) || (loDate[2].length>2) )
		return false;
	if ( isNaN(liYear) || isNaN(liMonth) || isNaN(liDay))
		return false;
	if ( (liYear<1900) || (liYear>3000) )
		return false;
	if ( (liMonth>12) || (liMonth<=0) )
		return false;
	if ( Date_getDay( liYear, liMonth ) < liDay )
		return false;
	return !isNaN( Date.UTC(liYear,liMonth,liDay) );
}

/**
 * 函数功能: 打开一新窗口
*  参数: url
*
 */
function js_callpage(htmlurl){
	var now = new Date();
	var name = "t" + now.getHours() + now.getMinutes() + now.getSeconds() + now.getMilliseconds();
	var newwin=window.open(htmlurl, name,
	    'top=0,left=0,height=700,width=600,toolbar=0,location=0,directories=0,menubar=0,scrollbars=0,resizable=1,status=0');
	return false;
}


/**
*/
function js_callpage_size(htmlurl,width, height){
	var now = new Date();
	var name = "t" + now.getHours() + now.getMinutes() + now.getSeconds() + now.getMilliseconds();
	var newwin=window.open(htmlurl, name,
	    'top=200,left=200,height='+height+',width='+width+',toolbar=0,location=0,directories=0,menubar=0,scrollbars=0,resizable=1,status=0');
	return false;
}



/**
*	验证身份证
*	idcard 身份证号码
*/
function checkIdcard(idcard){
  switch(idcard.length){
	case 18:
		return checkIdcard18(idcard);
		break;
	case 15:
		return checkIdcard15(idcard);
		break;
	default:
		return false;
		break;
  }
}

/**
*	验证18位身份证
*	idcard 身份证号码
*/
function checkIdcard18(idcard){
	var front_17 = idcard.substring(0, idcard.length-1);
	var verify = idcard.substring(17, 18);

	if(!checkIsNumber(front_17)){
		return false;
	}

	if(!checkVerify(verify, front_17)){
		return false;
	}
	return true;
}

/**
*	验证15位身份证
*	idcard 身份证号码
*	生日 6位
*	性别 true-male false-female
*/
function checkIdcard15(idcard){
	if(!checkIsNumber(idcard)){
		return false;
	}
	return true;
}

/**
*	检查验证码是否正确
*/
function checkVerify(verify, front_17){
	var wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
	var vi = new Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2");
	var s = 0;
	for(i = 0; i<front_17.length; i++){
		ai = parseInt(front_17.charAt(i));
		s += wi[i]*ai;
	}
	y = s%11;
	v = vi[y];
	return (verify.toUpperCase()==v);
}

/**
*	检查字符串是否为数字
*/
function checkIsNumber(numstr){
	numlist = "1234567890";
	for(i=0; i<numstr.length; i++){
		c = numstr.charAt(i);
		if(numlist.indexOf(c)<0){
			return false;
		}
	}
	return true;
}

/**
*	检查字符串是否为有效数值
*/
function checkIsFloat(str){
  for ( i = 0; i < str.length ; i++ ) {
    if (! (( str.charAt( i ) >= '0' && str.charAt( i ) <= '9' )|| str.charAt( i )=='.' ) )
      return false;
  }
  return true;
}


/*
RTrim(string):去除左边的空格
*/
function LTrim(str)
{
    var whitespace = new String(" \t\n\r");
    var s = new String(str);
    if (whitespace.indexOf(s.charAt(0)) != -1)    {
        var j=0, i = s.length;
        while (j < i && whitespace.indexOf(s.charAt(j)) != -1)        {
            j++;
        }
        s = s.substring(j, i);
    }
    return s;
}

/*
RTrim(string):去除右边的空格
*/
function RTrim(str){
    var whitespace = new String(" \t\n\r");
    var s = new String(str);
    if (whitespace.indexOf(s.charAt(s.length-1)) != -1){
        var i = s.length - 1;
        while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)        {
            i--;
        }
        s = s.substring(0, i+1);
    }
    return s;
}
/*
Trim(string):去除前后空格
*/
function Trim(str){
    return RTrim(LTrim(str));
}

//匹配0-9 a-z A-Z _ 以外的字符
function isAB(str){
  var re = /\W/;
  var r = re.test(str);
  return r;
}

//匹配纯数字
function isNUM(zipcode){
  var re = /[0-9]+/;
  var r = re.test(zipcode);
  return r;
}

//匹配电子邮件
function isEmail( email ){
  var re = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
  var r = re.test(email);
  return r;
}


//检查身份证
function checkIdCard_new(pId){

//检查身份证号码 Go_Rush(阿舜) from http://ashun.cnblogs.com
    var arrVerifyCode = [1,0,"x",9,8,7,6,5,4,3,2];
    var Wi = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
    var Checker = [1,9,8,7,6,5,4,3,2,1,1];

    if(pId.length != 15 && pId.length != 18) {
	  alert ("身份证号共有 15 码或18位");
	  return false;
	}

    var Ai=pId.length==18 ?  pId.substring(0,17)   :   pId.slice(0,6)+"19" + pId.slice(6,16);

    if (!/^\d+$/.test(Ai))  {
	   alert( "身份证除最后一位外，必须为数字！" ) ;
	   return false;
	}

    var yyyy=Ai.slice(6,10) ,  mm=Ai.slice(10,12)-1  ,  dd=Ai.slice(12,14);

    var d=new Date(yyyy,mm,dd) ,  now=new Date();
     var year=d.getFullYear() ,  mon=d.getMonth() , day=d.getDate();

    if (year!=yyyy || mon!=mm || day!=dd || d>now || year<1940) {
	   alert(  "身份证输入错误！");
	   return false;
	 }

    for(var i=0,ret=0;i<17;i++)
	    ret+=Ai.charAt(i)*Wi[i];

	Ai+=arrVerifyCode[ret %=11];


	if( pId.length ==18 && pId != Ai ){
	   alert ("身份证输入错误！");
	   return false;
	}

    return   true ;
}
