﻿/*-------------------
 *输入校验脚本
 *更新时间2011/04/13（丁文钊）
 *
 *-------------------
 */


//填写错误的input Text焦点定位，并更改父结点的背景颜色，errorLog为input Text显示的错误信息，ZXB
function focusError(errorLog, focusID) {
    gE(focusID).focus();
    gE(focusID).value = errorLog;
    gE(focusID).parentNode.style.backgroundColor = "#ffe6e6";
    gE(focusID).parentNode.style.border = "1px solid #ffd0d0";
    gE(focusID).style.color = "red";
    gE(focusID).onclick = function() {
        if (gE(focusID).value == errorLog) gE(focusID).value = "";
        gE(focusID).style.color = "#333";
    }
    return false;
}

function checkIdcard(idcard) {
   var Errors = new Array(
"验证通过!",
"身份证号码位数不对!",
"身份证号码出生日期超出范围或含有非法字符!",
"身份证号码校验错误!",
"身份证地区非法!"
);
   var area = { 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 idcard, Y, JYM;
   var S, M;
   var idcard_array = new Array();
   idcard_array = idcard.split("");
   //地区检验
   if (area[parseInt(idcard.substr(0, 2))] == null) return Errors[4];
   //if (area[parseInt(idcard.substr(0, 2))] == null) return false;
   //身份号码位数及格式检验
   switch (idcard.length) {
      case 15:
         if ((parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0 || ((parseInt(idcard.substr(6, 2)) + 1900) % 100 == 0 && (parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0)) {
            ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/; //测试出生日期的合法性
         } else {
            ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/; //测试出生日期的合法性
         }
         if (ereg.test(idcard)) return Errors[0];
         else return Errors[2];
//         if (ereg.test(idcard)) return true;
//         else return false;
         break;
      case 18:
         //18位身份号码检测
         //出生日期的合法性检查 
         //闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
         //平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
         if (parseInt(idcard.substr(6, 4)) % 4 == 0 || (parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard.substr(6, 4)) % 4 == 0)) {
            ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/; //闰年出生日期的合法性正则表达式
         } else {
            ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/; //平年出生日期的合法性正则表达式
         }
         if (ereg.test(idcard)) {//测试出生日期的合法性
            //计算校验位
            S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7
+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9
+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10
+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5
+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8
+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4
+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2
+ parseInt(idcard_array[7]) * 1
+ parseInt(idcard_array[8]) * 6
+ parseInt(idcard_array[9]) * 3;
            Y = S % 11;
            M = "F";
            JYM = "10X98765432";
            M = JYM.substr(Y, 1); //判断校验位
            if (M == idcard_array[17]) return Errors[0]; //检测ID的校验位
            else return Errors[3];
//            if (M == idcard_array[17]) return true; //检测ID的校验位
//            else return false;
         }
         else return Errors[2];
//         else return false;
         break;
      default:
          return Errors[1];
//          return false;
         break;
   }
//   return true;
}
function CheckPhone(phoneNo) {
   var reg0 = /\d{7}|\d{8}/
   var reg1 = /\d{4}-\d{7}|\d{3}-\d{8}/
   var reg2 = /\d{4}-\d{7}-\{3}|\d{3}-\d{8}-\d{3}/
   if (phoneNo.length > 12)
      return reg2.test(phoneNo);
   else
      if (phoneNo.length > 8)
      return reg1.test(phoneNo);
   else
      return reg0.test(phoneNo);
}
function CheckPhoneNo(phoneNo) {
   if (CheckPhone(phoneNo))
      return "";
   else
      return "电话号码不正确!";
}
function CheckEmail(email) {
   var reg = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/
   return reg.test(email);
}
function CheckMobliePhoneNo(mobile) {
    var reg = /^0?1[3|5|6|8]\d{9}$/;
   return reg.test(mobile);
}
 //检查时间格式,ZXB       
 function CheckDateTime(str){        
    var thePat = /^\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1])/;
    if (thePat.test(str)) {
        return true;
    }
    else {
        return false;   
    }
}

//检查城市名,ZXB
function CheckCity(city) {
    var CityStr = "北京,上海,昆明,杭州,广州,成都,西安,南京,深圳,重庆,长沙,沈阳,厦门,武汉,海口,乌鲁木齐,青岛,大连,哈尔滨,三亚,长春,南宁,贵阳,福州,郑州,济南,桂林,天津,太原,南昌,安庆,阿勒泰,安康,阿克苏,白山,包头,北海,北京,百色,保山,长治,长春,常州,昌都,朝阳,常德,长白山,成都,重庆,长沙,赤峰,大同,大连,达县,东营,大庆,丹东,大理,敦煌,鄂尔多斯,恩施,福州,阜阳,贵阳,桂林,广州,广元,赣州,格尔木,呼和浩特,哈密,黑河,海拉尔,哈尔滨,海口,黄山,杭州,邯郸,合肥,黄龙,汉中,和田,晋江,锦州,景德镇,嘉峪关,井冈山,济宁,九江,佳木斯,济南,喀什,昆明,康定,克拉玛依,库尔勒,喀纳斯,库车,兰州,洛阳,丽江,林芝,柳州,泸州,连云港,黎平,连城,拉萨,临沧,临沂,牡丹江,芒市,满洲里,绵阳,梅县,漠河,南京,南充,南宁,南阳,南通,那拉提,南昌,宁波,攀枝花,衢州,秦皇岛,庆阳,黔南,且末,齐齐哈尔,青岛,汕头,深圳,石家庄,三亚,沈阳,上海,思茅,铜仁,塔城,腾冲,台州,天水,天津,通辽,太原,威海,武汉,梧州,文山,无锡,潍坊,武夷山,乌兰浩特,温州,乌鲁木齐,万州,乌海,兴义,西昌,厦门,香格里拉,西安,襄樊,西宁,锡林浩特,西双版纳,徐州,义乌,永州,榆林,延安,运城,烟台,银川,宜昌,宜宾,盐城,延吉,玉树,伊宁,珠海,昭通,张家界,舟山,郑州,中卫,湛江,芷江";
    if (CityStr.indexOf(city) > -1)
        return true;
    else return false;

}
//比较日期大小,ZXB
function CheckLaterDate(DateStr1, DateStr2) {
    var D1 = new Date(DateStr1.replace(/\-/g, "\/"));
    var D2 = new Date(DateStr2.replace(/\-/g, "\/"));
    if (D1 >= D2) return true;
    else return false;

}

///邮箱验证
///丁文钊修改
///2011/04/13
function CheckMail(obj) {
    if (!obj) { return false; }
    var email = obj.value;
    var id = obj.id;
    var regEmail = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
    if (email == "") {
        focusError("邮箱不能为空", id);
        return false;
    }
    if (!regEmail.test(email) && email) {
        focusError("邮箱格式不正确", id);
        return false;
    }
    return true;
}

///检查用户名不能为空
///丁文钊
///2011/04/13
function CheckName(obj) {
    if (!obj) { return false; }
    var value = obj.value;
    var id = obj.id;
    //var reg = /^(\w+)|([\u0391-\uFFE5]+)$/;
    if (value.length < 1) {
        focusError("用户名不能为空", id);
        return false;
    }
    if (value.indexOf("用户名不能为空") > -1) {
        return false;
    }
    return true;
}

///验证手机号码
///丁文钊
///2011/04/13
function CheckMoblie(obj) {
    if (!obj) { return false; }
    var value = obj.value;
    var id = obj.id;
    var reg = /^0?1[3|5|6|8]\d{9}$/;
    if (value.length < 1) {
        focusError("请输入手机号码！", id);
        return false;
    }
    if (reg.test(value)) {
        return true;
    } else {
        focusError("手机格式不正确！", id);
        return false;
    }
}

///验证邮政编码
///丁文钊
///2011/04/14
function CheckZipCode(obj) {
    if (!obj) { return false; }
    var value = obj.value;
    var id = obj.id;
    var reg = /^[1-9][0-9]{5}$/;
    if (reg.test(value)) {
        return true;
    } else {
        focusError("邮政编码不正确", id);
        return false;
    }
    return true;
}

///验证电话号码
///丁文钊
///2011/04/13
function CheckTelephone(obj) {
    if (!obj) { return false; }
    var value = obj.value;
    var id = obj.id;
    if (value.length < 1 || value.indexOf("电话号码不正确") > -1) { return false; }
    var reg0 = /\d{7}|\d{8}/
    var reg1 = /\d{4}-\d{7}|\d{3}-\d{8}/
    var reg2 = /\d{4}-\d{7}-\{3}|\d{3}-\d{8}-\d{3}/

    if (value.length > 12) {
        if (reg2.test(value)) {
            return true;
        } else {
            focusError("电话号码不正确", id);
            return false;
        }
    }
    else {
        if (value.length > 8) {
            if (reg1.test(value)) {
                return true;
            } else {
                focusError("电话号码不正确", id);
                return false;
            }
        }
        else {
            if (reg0.test(value)) {
                return true;
            } else {
                focusError("电话号码不正确", id);
                return false;
            }
        }
    }
    return true;
}
