/**
 * 去掉左侧空格
 */
function ltrim(s){
    return ultrim(s.replace(/^\s*/,""));
}
/**
 * 去掉右侧空格
 */
function rtrim(s){
    return urtrim(s.replace(/\s*$/,""));
}

/**
 * 去掉前后空格
 */
function trim(s){
    return utrim(rtrim(ltrim(s)));
}

/**
 * 全角左侧空格去掉
 */
function ultrim(s){
    return s.replace(/^[" "|"　"]*/,"");
}

/**
 * 全角右侧空格去掉
 */
function urtrim(s){
    return s.replace(/[" "|"　"]*$/,"");
}

/**
 * 全角前后空格去掉
 */
function utrim(s){
    return urtrim(ultrim(s));
}
/**
 * 是否为可用注册用户名
 * 以字字母开头可带_以及字母和数字的组合6到20位
 */
function isRegisterUserName(s)
{
     var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[_]){5,16}$/; 
     if (!patrn.exec(s)) 
        return false;
     return true;
}

function isChn(str){
      var reg = /^[u4E00-u9FA5]$/;
      if(!reg.test(str)){
       return false;
      }
      return true;
}
/**
 * 是否为汉字
 */
function isChineseWord(s)
{
    var reg=/^(\w|[\u4E00-\u9FA5])*$/;
    if(arr = s.match(reg))
    {
        return true;
    }
    else
    {
        return false;
    } 
 }
/**
 * 是否为正确密码
 */
function isPassword(s)
{
    var patrn=/^(\w){6,16}$/;
    if (!patrn.exec(s)) 
        return false;
    return true
}

/**
 * 是否为空
 */
function isEmpty(ui)
{   
    return (ui==null||trim(ui)=="");
}

/**
 * 是否为正确Email
 */ 
function isEmail(email)
{
    var pattern = /^\w+((-\w+)|(\.\w+)|([a-zA-Z0-9_-]))+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
    var flag=pattern.test(email);
    if(flag)
        return true; 
    else
        {return false; } 
} 

/**
 * 是否为正确邮编
 */
function isPostalCode(s)
{
    var patrn=/^[a-zA-Z0-9 ]{3,12}$/;
    if (!patrn.exec(s))
         return false;
    return true;
}

/**
 * 是否为正确手机号
 */
function isMobile(s)
{
    var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
    if (!patrn.exec(s))
         return false;
    return true;
}

/**
 * 是否为正确电话号码
 */
function isTel(s)
{
    var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
    if (!patrn.exec(s))
         return false;
    return true;
}

/**
 * 是否为数字
 */
function isDigit(s)
{
    var patrn=/^[0-9]{1,20}$/;
    if (!patrn.exec(s)) 
        return false;
    return true;
}

/**
 * 身份证验证
 */
function isChinaIDCard(StrNo){   
  
  if (StrNo.length==18)   
  {   
            var   a,b,c   
            if   (!isInteger(StrNo.substr(0,17)))   {return   false}   
            a=parseInt(StrNo.substr(0,1))*7+parseInt(StrNo.substr(1,1))*9+parseInt(StrNo.substr(2,1))*10;   
            a=a+parseInt(StrNo.substr(3,1))*5+parseInt(StrNo.substr(4,1))*8+parseInt(StrNo.substr(5,1))*4;   
            a=a+parseInt(StrNo.substr(6,1))*2+parseInt(StrNo.substr(7,1))*1+parseInt(StrNo.substr(8,1))*6;     
            a=a+parseInt(StrNo.substr(9,1))*3+parseInt(StrNo.substr(10,1))*7+parseInt(StrNo.substr(11,1))*9;     
            a=a+parseInt(StrNo.substr(12,1))*10+parseInt(StrNo.substr(13,1))*5+parseInt(StrNo.substr(14,1))*8;     
            a=a+parseInt(StrNo.substr(15,1))*4+parseInt(StrNo.substr(16,1))*2;   
            b=a%11;   
    
            if   (b==2)   //最后一位为校验位   
            {   
            c=StrNo.substr(17,1).toUpperCase();   //转为大写X   
            }   
            else   
            {   
            c=parseInt(StrNo.substr(17,1));   
            }   
    
            switch(b)   
            {   
	            case   0:   if   (   c!=1   )   {
		            //alert("身份证好号码校验位错:最后一位应该为:1");
		            return   false;
	            }
	            break;   
            	case   1:   if   (   c!=0   )   {
		            //alert("身份证好号码校验位错:最后一位应该为:0");
		            return   false;
            	}
            	break;   
            case   2:   if   (   c!="X")   {
            	//alert("身份证好号码校验位错:最后一位应该为:X");
            	return   false;
            }break;   
            case   3:   if   (   c!=9   )   {//alert("身份证好号码校验位错:最后一位应该为:9");
            return   false;}break;   
            case   4:   if   (   c!=8   )   {//alert("身份证好号码校验位错:最后一位应该为:8");
            return   false;}break;   
            case   5:   if   (   c!=7   )   {//alert("身份证好号码校验位错:最后一位应该为:7");
            return   false;}break;   
            case   6:   if   (   c!=6   )   {//alert("身份证好号码校验位错:最后一位应该为:6");
            return   false;}break;   
            case   7:   if   (   c!=5   )   {//alert("身份证好号码校验位错:最后一位应该为:5");
            return   false;}break;   
            case   8:   if   (   c!=4   )   {//alert("身份证好号码校验位错:最后一位应该为:4");
            return   false;}break;   
            case   9:   if   (   c!=3   )   {//alert("身份证好号码校验位错:最后一位应该为:3");
            return   false;}break;   
            case   10:   if   (   c!=2   ){//alert("身份证好号码校验位错:最后一位应该为:2");
            return   false}   
            }   
            }   
  else   //15位身份证号   
            {   
            if   (!isInteger(StrNo))   {//alert("身份证号码错误,前15位不能含有英文字母！");
            return   false}     
            }   
    
  switch(StrNo.length){   
  case   15:     
                  if   (isValidDate("19"+StrNo.substr(6,2),StrNo.substr(8,2),StrNo.substr(10,2)))   
                          {return   true;}   
                  else   
                          {return   false;}   
  case   18:     
                  if   (isValidDate(StrNo.substr(6,4),StrNo.substr(10,2),StrNo.substr(12,2)))   
                          {return   true;}   
                  else   
                          {return   false;}   
  }   
  //alert("输入的身份证号码必须为15位或者18位！");   
  return   false   
  }   
  
  /**
   * 是否为日期
   */
  function isValidDate(iY,iM,iD){     
     var a = new Date(iY,iM-1,iD);   
     var y=a.getFullYear();   
     var m=a.getMonth()+1;   
     var d=a.getDate();   
     if (y != iY || m != iM || d != iD)   
     {   
         return false;   
     }   
     return true;  
  } 
  
  /**
   * 是否为整数
   */
  function isInteger(str){   
      if (/[^\d]+$/.test(str)){   
      return false;   
      }   
      return true;   
  }