﻿// JScript 文件
//id：被验证控件id
//spid：显示验证结果span的id
//msg：验证错误后显示的提示信息
//focus：验证错误后是否设置焦点


//清空显示验证结果的span
function ClearMSG(spid)
{
    if(spid != "")
    {
        $F(spid).innerHTML = "";
        $F(spid).style.display = "none";
    }
}

//显示验证错误信息
function ShowMSGOrFocus(id, spid, msg, focus)
{
    if(spid != "")
    {
        $F(spid).innerHTML = msg;
        $F(spid).style.color = "red";
        $F(spid).style.display = "";
    }
    else{    alert(msg); }
    if(focus == true)
        //$F(id).select();
        $F(id).focus();
}

//空值验证
function RequiredValidator(id, spid, msg, focus)
{
    if($F(id).value != "")
    {
        if(spid != "")
        {
           ClearMSG(spid);
        }
        return true;
    }
    else
    {
        ShowMSGOrFocus(id, spid, msg, focus)
        return false;
    }
}

//EMAIL验证
function EmailValidator(id, spid, msg, focus) 
{
    if ($F(id).value.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
    {
        if(spid != "")
        {
           ClearMSG(spid);
        }
        return true;
    }
    else
    {
        ShowMSGOrFocus(id, spid, msg, focus)
        return false;
    }
}

//是否存在验证
function IsAvailable(id, spid, ajaxFun)
{
    if($F(id).value != "")
    {
        var arg = [];
        arg.push($F(id).value);
        var response = ajaxFun.apply(this,arg);
        if(response.value == null || response.value == 1)
        {
            $F(spid).innerHTML = "名称已存在！";
            $F(spid).style.color = "red"
            $F(spid).style.display = "";
            return false;
        }
        else
        {
            $F(spid).innerHTML = "恭喜,请继续！";
            $F(spid).style.color = "green"
            $F(spid).style.display = "";
            return true;
        }
    }
    else
    {
        return false;
    }
}

/***************************两次密码一致验证*****************************************/

function IsEquals(id1, id2, spid, msg, focus)
{
    if($F(id1).value == $F(id2).value)
    {
        if(spid != "")
        {
           ClearMSG(spid);
        }
        return true;
    }
    else
    {
        ShowMSGOrFocus(id1, spid, msg, focus)
        return false;
    }
}

/***************************密码强度验证*****************************************/
//返回数字说明
//0. 空密码
//1. 密码长度小于或等于四位.或者密码只有一种组合
//2. 密码长度大于四位, 且有两种组合.
//3. 密码长度大于四位, 且有三种组合.
//4. 密码长度大于四位, 且有四种组合.

function PassEvaluate(id, spid, msg, focus)
{
    var iResult = $F(id).value.replace(/^(?:([a-z])|([A-Z])|([0-9])|(.)){6,}|(.)+$/g, "$1$2$3$4$5").length;
    
    if(iResult >= 2)
    {
        if(spid != "")
        {
           ClearMSG(spid);
        }
        return true;
    }
    else
    {
        ShowMSGOrFocus(id, spid, msg, focus)
        return false;
    }
}

/***************************身份证验证*****************************************/

//身份证验证
function IsIdentityCard(id, spid, msg, focus) 
{
    num = $F(id).value;
    var valid = false;
    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();
        ShowMSGOrFocus(id,spid, msg, 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();
            ShowMSGOrFocus(id,spid, msg, 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);
            ShowMSGOrFocus(id,spid, msg, focus);
            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);
            ShowMSGOrFocus(id,spid, msg, focus);
            return false;
        }
    } 
    else{        //length is 15
        //check date
        var date6 = idNumber.substring(6,12);
        if (checkDate(date6) == false) {
            //alert("身份证日期信息有误！.");
            ShowMSGOrFocus(id,spid, msg, focus);
            return false;
        }
    }
    //alert ("Correct.");
    if(spid != "")
    {
        ClearMSG(spid);
    }
    return true;
}

function checkDate(date)
{
    return true;
}

/***************************电话号码验证*****************************************/

String.prototype.Trim = function() {  
  var m = this.match(/^\s*(\S+(\s+\S+)*)\s*$/);  
  return (m == null) ? "" : m[1];  
}

String.prototype.isMobile = function() {  
  return (/^(?:13\d|15[89])-?\d{5}(\d{3}|\*{3})$/.test(this.Trim()));  
} 

String.prototype.isTel = function()
{
    //"兼容格式: 国家代码(2到3位)-区号(2到3位)-电话号码(7到8位)-分机号(3位)"
    //return (/^(([0\+]\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/.test(this.Trim()));
    return (/^(([0\+]\d{2,3})?(0\d{2,3}))(\d{7,8})((\d{3,}))?$/.test(this.Trim()));
}

function TelValidate(id, spid, msg, focus) 
{  
        //if ($F(id).value.isMobile()||$F(id).value.isTel())  
        if ($F(id).value.isTel())  
        {  
            $F(id).value = $F(id).value.Trim();  
            if(spid != "")
            {
               ClearMSG(spid);
            }
            return true;  
        } 
        else 
        {  
            ShowMSGOrFocus(id, spid, msg, focus)
            return false;        
        }          
}  




/***************************start*****************************************/

//匹配邮政编码(6位)
function ispostalcode(str)
{
    var result=str.match(/^\d{6}$/);
    if(result==null) return false;
    return true;
}
//匹配腾讯QQ号
function isqq(str)
{
    var result=str.match(/^[1-9][0-9]{4,}$/);
    if(result==null) return false;
    return true;
}
//Email校验
function isemail(str)
{
    return(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(str));
}
//电话
function istel(str)
{
    var reg = /^([0]\d{2,3}(\-)?)?\d{7,8}((\-)?\d{1,4})?$/
    return (reg.test(str)) ? true : false;
}
//小灵通
function isphs(str)
{
    var reg = /^([0]\d{2,3}(\-)?)?\d{8}$/
    return (reg.test(str)) ? true : false;
}
//手机
function ismobile(str)
{
    var reg = /^(13[0-9]|15[0-9]|18[89])\d{8}$/
    return reg.test(str);
}
//手机电话
function istelephone(str)
{
    var reg = /(^([0]\d{2,3}(\-)?)?\d{7,8}(\-\d{1,4})?$)|(^(13[0-9]|15[0-9]|18[89])\d{8}$)/
    return reg.test(str);
}
//网址验证
function isurl(str)
{
    var reg = /^(http(s)?\:\/\/)?([\w-]+\.)+[\w-]+(\/[\w- .\/\?\%\&\=]*)?$/
    return reg.test(str);
}
/***************************end*****************************************/
