function isIdCardNo(num) 
{
    var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
    var error;
    var varArray = new Array();
    var intValue;
    var lngProduct = 0;
    var intCheckDigit;
    var intStrLen = num.length;
    var idNumber = num;    
    // initialize
    if ((intStrLen != 15) && (intStrLen != 18)) {
        //error = "输入身份证号码长度不对！";
        //alert(error);
        //frmAddUser.txtIDCard.focus();
        return false;
    }    
    // check and set value
    for(i=0;i<intStrLen;i++) {
        varArray[i] = idNumber.charAt(i);
        if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
            //error = "错误的身份证号码！.";
            //alert(error);
            //frmAddUser.txtIDCard.focus();
            return false;
        } else if (i < 17) {
            varArray[i] = varArray[i]*factorArr[i];
        }
    }
    if (intStrLen == 18) {
        //check date
        var date8 = idNumber.substring(6,14);
        if (checkDate(date8) == false) {
            //error = "身份证中日期信息不正确！.";
            //alert(error);
            return false;
        }        
        // calculate the sum of the products
        for(i=0;i<17;i++) {
            lngProduct = lngProduct + varArray[i];
        }        
        // calculate the check digit
        intCheckDigit = 12 - lngProduct % 11;
        switch (intCheckDigit) {
            case 10:
                intCheckDigit = 'X';
                break;
            case 11:
                intCheckDigit = 0;
                break;
            case 12:
                intCheckDigit = 1;
                break;
        }        
        // check last digit
        if (varArray[17].toUpperCase() != intCheckDigit) {
            //error = "身份证效验位错误!...正确为： " + intCheckDigit + ".";
            //alert(error);
            return false;
        }
    } 
    else{        //length is 15
        //check date
        var date6 = idNumber.substring(6,12);
        if (checkDate(date6) == false) {
            //alert("身份证日期信息有误！.");
            return false;
        }
    }
    //alert ("Correct.");
    return true;
}

function checkDate(date)
{
    return true;
}

function chkRadio(o){ 
        //判断单选 
        for (i=0;i<o.length;i++){ 
        if (o[i].checked) return true; 
        } 
        return false; 
}  
function strlen(str){ 
        /* 取得字符串的字节长度 */ 
        var i; 
        var len; 
        len = 0; 
        for (i=0;i<str.length;i++) 
        { 
        if (str.charCodeAt(i)>255) len+=2; else len++; 
        } 
        return len; 
} 

function isnull(str){ 
/* 检测字符串是否为空 */ 
        var i; 
         for (i=0;i<str.length;i++) 
        { 
          if (str.charAt(i)!=' ') return false; 
        } 
         return true; 
} 

function isNum(s) { 
        /* 检测字符串是否为数字 */ 
        var regu = "^[-+]?\d*$";//支持正负\小数 
        //var regu = "^([0-9]*)$"; 
        //var regu = "^([0-9]*[.0-9])$"; // 小数测试 
        var re   = new RegExp(regu); 
        if (s.search(re) != -1) 
                return true; 
        else 
                return false; 
} 
function fucCheckNUM(NUM)
{
 var i,j,strTemp;
 strTemp="0123456789";
 if ( NUM.length== 0)
  return false;
 for (i=0;i<NUM.length;i++)
 {
  j=strTemp.indexOf(NUM.charAt(i)); 
  if (j==-1)
  {
   return false;
  }
 }
 return true;
}
function isType(s,t){ 
/* 检测数据类型是否合法 */ 
        var RegExpPtn; 
        var t2=t; 
        if (t2 != ""){ 
                switch(s){ 
                        case "EN"://英文 
                                RegExpPtn=/^[A-Za-z]+$/; 
                                if (!RegExpPtn.test(t2) ){return false;}else{return true;} 
                                break; 
                        case "CN"://中文 
                                RegExpPtn=/^[\u4e00-\u9fa5]+$/; 
                                if (!RegExpPtn.test(t2) ){return false;}else{return true;} 
                                break; 
                        case "NUM"://实数 
                                RegExpPtn=/^(\+|-)?\d+($|\.\d+$)/; 
                                if (!RegExpPtn.test(t2) ){return false;}else{return true;} 
                                break; 
                        case "INT"://正整数 
                                RegExpPtn=/^[1-9]d*$/; 
                                if (!RegExpPtn.test(t2) ){return false;}else{return true;} 
                                break; 
                        case "DATE"://日期yyyy-mm-dd 
                                RegExpPtn=/^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/; 
                                if (!RegExpPtn.test(t2) ){return false;}else{return true;} 
                                break; 
                        case "EMAIL"://邮件 
                                RegExpPtn=/\w[\w.-]+@[\w-]+(\.\w{2,})+/gi; 
                                if (!RegExpPtn.test(t2) ){return false;}else{return true;} 
                                break; 
                        case "CARD"://身份证,也可直接调用isCard()函数 
                                return isCard(t2)                                 
                                break; 
                        case "URL"://网址 
                                RegExpPtn=/^[a-zA-z]+\:\/\/(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$/;   
                                if (!RegExpPtn.test(t2) ){return false;}else{return true;} 
                                break; 
                        case "IP"://IP地址,,也可直接调用isIP()函数 
                                return isIP(t2)                                 
                                break; 
                        case "ID1"://ID类型1,充许英文+数字+下划线(0~30字节) 
                                RegExpPtn=/^[a-zA-Z][a-zA-Z0-9_]{0,29}$/;   
                                if (!RegExpPtn.test(t2) ){return false;}else{return true;} 
                                break; 
                        case "ID2"://ID类型1,充许中文+英文+数字+下划线(0~30字节) 
                                RegExpPtn=/^[a-zA-Z][a-zA-Z0-9_][_0-9a-zA-Z\u4e00-\u9fa5]{0,29}$/;   
                                if (!RegExpPtn.test(t2) ){return false;}else{return true;} 
                                break; 
                                 
                        default : break; 
                } 
        }else{ 
                return false;         
        } 
} 

function isCard(obj){  
        /*功能：验证身份证号码是否有效 */  
    var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};     
    var iSum = 0;     
    var info = "";     
    var strIDno = obj;     
    var idCardLength = strIDno.length;       
    if(!/^\d{17}(\d|x)$/i.test(strIDno)&&!/^\d{15}$/i.test(strIDno))      
    {     
        //alert("非法身份证号");     
        return false;     
    }     
    //在后面的运算中x相当于数字10,所以转换成a     
    strIDno = strIDno.replace(/x$/i,"a");     
    if(aCity[parseInt(strIDno.substr(0,2))]==null)     
    {     
        //alert("非法地区");     
        return false;     
    }     
         
    if (idCardLength==18)     
    {     
        sBirthday=strIDno.substr(6,4)+"-"+Number(strIDno.substr(10,2))+"-"+Number(strIDno.substr(12,2));     
        var d = new Date(sBirthday.replace(/-/g,"/"))     
        if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))     
        {            
            //alert("非法生日");     
            return false;     
        }     
    
        for(var i = 17;i>=0;i --)     
            iSum += (Math.pow(2,i) % 11) * parseInt(strIDno.charAt(17 - i),11);     
    
        if(iSum%11!=1)     
        {     
            //alert("非法身份证号");     
            return false;     
        }     
    }     
    else if (idCardLength==15)     
    {     
        sBirthday = "19" + strIDno.substr(6,2) + "-" + Number(strIDno.substr(8,2)) + "-" + Number(strIDno.substr(10,2));     
        var d = new Date(sBirthday.replace(/-/g,"/"))     
        var dd = d.getFullYear().toString() + "-" + (d.getMonth()+1) + "-" + d.getDate();        
        if(sBirthday != dd)     
        {     
           //alert("非法生日");     
            return false;     
        }     
    }     
    return true;      
}   
function isIP(obj)      
{      
    var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; //IP正则     
    if(re.test( obj ))     
    {     
        if( RegExp.$1 <256 && RegExp.$2<256 && RegExp.$3<256 && RegExp.$4<256) return true;     
    }     
    //alert("请输入合法的计算机IP地址");     
    return false;      
}
//得到前N天或后N天的日期  d的格式为："2010/02/01"
function showdate(d,n){
	var uom = new Date(d);
	uom.setDate(uom.getDate()+n);
	uom = uom.getFullYear() + "-" + (uom.getMonth()+1) + "-" + uom.getDate();
	return uom;
}
//增加月
function MonthAdd(d,n){
	var uom = new Date(d);
	uom.setMonth(uom.getMonth()+n);
	uom = uom.getFullYear() + "-" + (uom.getMonth()+1) + "-" + uom.getDate();
	return uom;
}
//将2005-8-5转换成2005-08-05格式
function dtodd(d1){
	return d1.replace(/\b(\w)\b/g, '0$1');
}
